Overview

Development

Creating the XML Request

Supported Document Types and Encoding

Common tasks

Integration Testing

Cloud Search XML Upload Guide

 

Technical Overview

Cloud Search XML upload processing allows clients to use web services and file based processing to load copies of their own job seeker profiles and resumes onto private resume boards on the Monster platform.

The job seeker and resume information has to be supplied using XML following Monster schemas.

Two methods available for posting XML are web services and file based processing. Web services processing is performed via Monster BGW (Business Gateway) using SOAP messages over HTTPS. File based processing is performed when an XML file is dropped off on the Monster FTP site, the BGW processes the file and returns a response file for pick up. 

Development

Client is responsible for creating the JobSeeker XML and posting to Monster via one of the two methods, web services or file based processing.
    1. Create the XML request
    2. Post the request using one of 2 methods:
      • web services
      • file based
    3. Receive (Business Gateway) BGW response
    4. Respond accordingly
  • All system calls to Monster are developed by the client.
  • Client is responsible for testing their own implementation.
  • Monster will be available to answer questions client has about implementation.
  • JobSeeker is the term used throughout this guide which maps to Employees, Candidates and Seekers
  • JobSeeker posting is done against Monster's BGW.
  • A user account is needed for authentication purposes. A Monster representative will provide the client with a test user account and a production user account.
  • Resume uploads for each client are segmented by Channel (data container in which job seekers are stored) and Resume Board (data container in which resumes are stored). The Ids for those are provided to client by a Monster representative.

Key Points

  • Email address has to be unique for each jobseeker within one private resume board. Job seekers are uniquely identified by the jobseeker's email address.
  • Only one resume can currently be active for a given jobseeker on a private resume board.
  • Requests done via FTP-XML Batch processing is limited to a maximum of 200 JobSeekers per file, with a maximum individual resume file size of 5 MB.
  • Requests sent in real time using web services can only include one JobSeeker per request with a maximum individual resume file size of 5 MB.
  • NOTE: Any data that is uploaded will be available to the client's users doing the resume searches. Therefore ONLY data that the client wishes to be exposed to those users should be provided.
 

Creating the XML Request

The job seeker and resume information has to be supplied using XML following Monster schemas, particularly https://schemas.monster.com/Current/XSD/JobSeeker.xsd. This table is a list of common fields with additional information about each field and the first set is required for every jobseeker uploaded.

Field Name Field Requirement Data Type Constraints Function
E-mail Required String <= 100 characters; must be in valid format, x@y.com; needs to be unique for each jobseeker on a given resume board Has to be unique for each jobseeker.
Jobseekers are uniquely identified by their email address.
Used with Send Letter functionality.
Displayed on profile.
GivenName Required String <= 255 characters Used by "Candidate Name" search field
FamilyName Required String <= 50 characters Used by "Candidate Name" search field
CountryCode Required String 2 character code from country abbreviations listed here: http://integrations.monster.com/Toolkit/LocationEnumeration Displayed on results & profile Used by "Location" search field
Channel attribute monsterId Required Integer 4 digit value provided by Monster Defines XML feed destination
BoardName attribute monsterId Required Integer 4 digit value provided by Monster Defines seeker board destination
The following fields involve resume information.
Resume Optional, but highly recommended Parent element Each jobseeker can have only 1 resume per private resume board This is the jobseeker's resume that will be available when Cloud Search Resume users access the private board.
Resume attribute resumeAction If Resume provided, then required String Use option addOrUpdate Needed for resume to be added to private board
The following fields involve location information. They are optional, but are needed in order to search or report by location.
City Optional, but City/State or PostalCode needed for search or report by location String <= 50 characters Displayed on search results & profile Used by "Location" search field
State Optional (same note as City) String 2 character code from state abbreviations listed here: http://integrations.monster.com/Toolkit/LocationEnumeration Displayed on results & profile Used by "Location" search field
PostalCode Optional (same note as City) String <= 20 characters Displayed on results & profile Used by "Location" search field
The following fields provide a connection back into the ATS.
SeekerRefCode Optional String <= 50, should be unique Provides connection back to ATS. Used as a Unique ID for the the client to identify the jobseeker (also known as ATS Employee or Candidate ID)
RequisitionReferenceCode Optional String <= 256 characters Provides connection back to ATS. Searchable reference ID/s from client associated with Job Requisition/s
Monster allows for extensive data fields to be provided for jobseekers. The full data capabilities are defined in the jobseeker schema (https://schemas.monster.com/current/xsd/JobSeeker.xsd)

The following fields provide a partial list of additional jobseeker fields that may be included. These fields are useful for searching and/or reporting. Some Cloud Search Resume functionality may NOT be available if these fields are NOT included.
Phone Optional String <= 50 characters. Attribute "phoneType" options include home, work, mobile, fax. If more than one phone number is provided then attribute "priority" needs to be supplied with one being set to primary and another as secondary. Displayed on profile
ResumeTitle Optional String <= 500 characters Displayed on profile
ResumeOrigin Optional Integer Choices are located here: http://integrations.monster.com/Toolkit/Enumeration/ResumeOrigin
Select Country and Channel desired from right side of page.
Searchable in Cloud Search Resume UI
Origin Description Origin Description String <=256 characters  
ResumeModDate Optional Date/Time Must be in format: YYYY-MM-DDTHH:NN:SSZ Populated to the date/time of the upload if no data is provided
HighestEducationDegree Optional Integer http://integrations.monster.com/Toolkit/Enumeration/EducationLevel Displayed on profile.
Citizenship attribute monsterId Optional Integer http://integrations.monster.com/Toolkit/Enumeration/Citizenship Searchable in Cloud Search Resume UI
ClearanceLevel attribute monsterId Optional Integer http://integrations.monster.com/Toolkit/Enumeration/ClearanceLevel Some values are searchable in Cloud Search Resume UI. Selecting Inactive in the search UI returns all inactive clearance choices.
CurrentUSMilitaryInvolvement attribute monsterId Optional Integer http://integrations.monster.com/Toolkit/Enumeration/MilitaryInvolvement Used to determine Veteran Status.
 

Sample XML Request

Below is a sample of a Cloud Search Resume resume upload request. Several samples can be found in the samples section of the Monster WebService toolkit at http://integrations.monster.com/ToolKit. Look under Searching - Cloud Search™ section.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header>
    <mh:MonsterHeader xmlns:mh="https://schemas.monster.com/MonsterHeader">
      <mh:MessageData>
        <mh:MessageId>Jobseeker Private db sample</mh:MessageId>
        <mh:Timestamp>2013-04-10T14:41:44Z</mh:Timestamp>
      </mh:MessageData>
      <mh:ProcessingReceiptRequest>
        <mh:Address transportType="http">http</mh:Address>
      </mh:ProcessingReceiptRequest>
    </mh:MonsterHeader>
    <wsse:Security xmlns:wsse="https://schemas.xmlsoap.org/ws/2002/04/secext">
      <wsse:UsernameToken>
        <wsse:Username>username</wsse:Username>
        <wsse:Password>password</wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
   <JobSeekers xsi:schemaLocation="https://schemas.monster.com/Monster https://schemas.monster.com/current/xsd/JobSeeker.xsd" xmlns="https://schemas.monster.com/Monster" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
<JobSeeker status="Active" seekerAction="addOrUpdate" seekerRefCode="jobseeker1"> <Channel monsterId="9999" /> <PersonalData> <Contact> <StructuredName> <GivenName>GivenName1</GivenName> <FamilyName>FamilyName1</FamilyName> </StructuredName> <Address> <City>City</City> <State>ST</State> <CountryCode>US</CountryCode> <PostalCode>00000</PostalCode> </Address> <E-mail>jobseeker1@seeker.com</E-mail> </Contact> </PersonalData> <Resumes> <Resume resumeAction="addOrUpdate"> <BoardName monsterId="8888" /> <TextResume><![CDATA[This is the text resume for job seeker 1. This is just a sample resume.]]></TextResume> </Resume> </Resumes> </JobSeeker> <JobSeeker status="Active" seekerAction="addOrUpdate" seekerRefCode="jobseeker2">
<Channel monsterId="9999" />
<PersonalData>
<Contact>
<StructuredName>
<GivenName>GivenName2</GivenName>
<FamilyName>FamilyName2</FamilyName>
</StructuredName>
<Address>
<City>City</City>
<State>ST</State>
<CountryCode>US</CountryCode>
<PostalCode>00000</PostalCode>
</Address>
<E-mail>jobseeker2@seeker.com</E-mail>
</Contact>
</PersonalData>
<Resumes>
<Resume resumeAction="addOrUpdate">
<BoardName monsterId="8888" />
<TextResume><![CDATA[This is the text resume for job seeker 2.
This is just a sample resume.]]></TextResume>
</Resume>
</Resumes>
</JobSeeker> </JobSeekers> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
 

SOAP Envelope

The envelope is a container for a SOAP message. Monster SOAP Schema is located at https://schemas.monster.com/Current/XSD/MonsterSOAP.xsd

<SOAP-ENV:Envelope xmlns:SOAP-ENV=
"https://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header>
        <!-- see Header section below -->
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <!-- see Body - JobSeeker section below -->
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
 

Header

The header contains information about the request, request protocol, and a security protocol with the posting user's credentials. These credentials are obtained from a Monster Representative. Note that this is different from the JobSeeker account information.

Monster Header Schema is located at https://schemas.monster.com/Current/XSD/MonsterHeader.xsd

Authentication for Cloud Search Resume XML uploading is done by username and password. Here is an example:

    <mh:MonsterHeader xmlns:mh="https://schemas.monster.com/MonsterHeader">
      <mh:MessageData>
        <mh:MessageId>Jobseeker Private db sample</mh:MessageId>
        <mh:Timestamp>2013-04-10T14:41:44Z</mh:Timestamp>
      </mh:MessageData>
      <mh:ProcessingReceiptRequest>
        <mh:Address transportType="http">http</mh:Address>
      </mh:ProcessingReceiptRequest>
    </mh:MonsterHeader>
    <wsse:Security xmlns:wsse="https://schemas.xmlsoap.org/ws/2002/04/secext">
      <wsse:UsernameToken>
        <wsse:Username>username</wsse:Username>
        <wsse:Password>password</wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
 

Body - JobSeeker

The Body contains all the data related to the JobSeeker being posted and needs to comply with Monster JobSeeker schema. Monster JobSeeker Schema is located at https://schemas.monster.com/Current/XSD/JobSeeker.xsd

It consists of 3 main sections, 1) processing information, 2) JobSeeker information and 3) resume information. These are described below.
  1. Processing Information
    This section contains information about the way the JobSeeker message will be processed, under which account, the channel to be used and the seekerRefCode, if client chooses to provide this piece of data.

    The attributes seekerScope and status are required in order for the seeker to be searchable.

    The seekerRefCode is a unique piece of data that the client provides for the seeker and can use for identifying and tying the seeker back to the client system.
    <JobSeeker status="active" seekerAction="addOrUpdate" seekerRefCode="Id_in_ATS">
        <Channel monsterId="9999"/>
        
  2. JobSeeker Information
    This contains the main information that will be defined in the JobSeeker's account. Example: name, address, availability, education, etc.

    For location information, refer to http://integrations.monster.com/Toolkit/LocationEnumeration.

    Data for some fields has to be selected from a set list of values, referred to as enumeration values, found at https://schemas.monster.com/Current/XSD/Enumerations.xsd. If in the schema the element type contains "EnumStr" in it, such as this element definition, then that element needs an enumerated value populated. Here is an example from the schema:

    <xsd:element name="CareerLevel" type="CareerLevelEnumStr">
    


    Here is an example of jobseeker data:

    <PersonalData>
        <Contact>
            <StructuredName>
               <GivenName>GivenName</GivenName>
    	    <FamilyName>FamilyName</FamilyName>
    	</StructuredName>
            <Address>
    	    <StreetAddress>StreetAddress</StreetAddress>
    	    <City>City</City>
    	    <State>ST</State>
    	    <CountryCode>US</CountryCode>
    	    <PostalCode>00000</PostalCode>
            </Address>
                <Phones>
    	    <Phone phoneType="home" priority="primary">(999) 999-9999</Phone>
               <Phone phoneType="mobile" priority="secondary">(999) 999-9988</Phone>
    	</Phones>
    	<E-mail>jobseeker1@seeker.com</E-mail>
        </Contact>
    </PersonalData>
    <Profile>
        <CareerLevel monsterId="13"></CareerLevel>
        <TotalYearsWorkExperience monsterId="7"></TotalYearsWorkExperience>
    </Profile>
    
  3. JobSeeker Resumes
    This section supplies the JobSeeker's resume. There are a couple of examples below.

    Text Resume example:
    <Resumes>
        <Resume resumeAction="addOrUpdate" >            
            <BoardName monsterId="9999"/>
            <ResumeTitle>Resume of jobseeker 12345</ResumeTitle>
            <ResumeModDate>2010-12-30T17:13:38Z</ResumeModDate>
                  <TextResume>
                      <![CDATA[ This is the text resume for job seeker 1. This is just a sample resume.]]> 
            </TextResume>
            <ResumeOrigin>
    <Origin monsterId="4"/>
                            <OriginDescription>corporatewebsite.com</OriginDescription>
     </ResumeOrigin>  
        </Resume>
    </Resumes>
    
     
     
    Docx resume example:
    
     
     
    <Resumes>
      <Resume resumeAction="addOrUpdate" >
        <BoardName monsterId="8888"/>
        <ResumeTitle>Resume 2 of jobseeker 12346</ResumeTitle>
        <ResumeModDate>2010-12-22T15:19:58Z</ResumeModDate>
        <ResumeDocument documentAction="add">
            <File>
             base64binary encoded resume document goes here
            </File>
            <FileName>jobseeker1.docx</FileName>
        </ResumeDocument>
      </Resume>
    <Resumes>
    
    
 

FTP-XML Batch Processing

Requests done via FTP-XML Batch processing are done by wrapping JobSeeker tags within a JobSeekers parent tag according to the JobSeeker schema (https://schemas.monster.com/Current/XSD/JobSeeker.xsd).

As noted in key points at beginning of this document, these files are limited to a maximum of 200 JobSeekers per file, with a maximum individual resume file size of 5 MB.
 

Supported Document Types and Encoding

The following is a list of the types of resume documents supported:
.txt
.rtf
.doc
.docx
.pdf (scanned images are NOT supported)

XML requests must be encoded in "UTF-8" (Unicode) character set.

When text includes special characters in XML, including HTML markup characters, (ex. <li>One<li>) the text should be surrounded with the CDATA tag. If text uses XML/HTML entities (ex. &gt; &lt; &amp;) then the CDATA tag should not be used.

For Resume files that are type .doc, .docx, .rtf and .pdf, the resume must be converted to base64binary encoding and supplied in the <File> element within the <ResumeDocument> element like the sample shown above. Information about base64 encoding can be found at https://en.wikipedia.org/wiki/Base64. And the FileName element must contain the extension of the resume document, like this: <FileName>Jobseeker123.docx</FileName>.
 

Common tasks

The following is a list of common tasks to be performed on JobSeekers and their resumes.
 

Adding a new JobSeeker and Resume

To add a new JobSeeker and their associated resume, post a request with seekerAction="addOrUpdate" and resumeAction="addOrUpdate". Each JobSeeker can have only 1 resume per private resume board.
 

Modifying a JobSeeker and Resume

To modify an existing jobseeker and resume, use seekerAction="addOrUpdate" and resumeAction="addOrUpdate" and post with the E-mail address of the existing JobSeeker whose resume is to be updated.
 

Deleting a Jobseeker (Only for non-OFCCP company)

Delete an existing jobseeker and associated resume by using one of the following two operations. These cannot be used by a company with OFCCP; see Deactivating a JobSeeker section further below for that case. 

Delete by SeekerRefCode:
  <SOAP-ENV:Body>    
    <JobSeekerDeleteBySeekerRefCode>
	<SeekerRefCode>jobseeker12345</SeekerRefCode>
	<ChannelID>9999</ChannelID>
        <ChannelAlias>PRS99849912</ChannelAlias>
<ResumeBoardID>8888</ResumeBoardID> </JobSeekerDeleteBySeekerRefCode> </SOAP-ENV:Body> Delete by Email address: <SOAP-ENV:Body> <JobSeekerDeleteByEmailAddress xmlns="https://schemas.monster.com/Monster" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schemas.monster.com/Monster https://schemas.monster.com/Current/xsd/Monster.xsd"> <EmailAddress>jobseeker12345@seeker.com</EmailAddress> <ChannelID>9999</ChannelID> <ChannelAlias>PRS99849912</ChannelAlias> <ResumeBoardID>8888</ResumeBoardID> </JobSeekerDeleteByEmailAddress> </SOAP-ENV:Body>
 

Deactivating a Jobseeker (Only for OFCCP)

Deactivate an existing jobseeker and associated resume by using the following operation. The deactivated resume will be removed from the search index. 

<SOAP-ENV:Body>
    <DeactivateResume xmlns="https://schemas.monster.com/Monster" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://schemas.monster.com/Monster https://schemas.monster.com/Current/xsd/Monster.xsd">
        <EmailAddress>jobseeker12345@seeker.com</EmailAddress >
	<ChannelID>9999</ChannelID>
        <ChannelAlias>PRS99849912</ChannelAlias>
<ResumeBoardID>8888</ResumeBoardID> </DeactivateResume> </SOAP-ENV:Body>
 

Testing

Web services testing
Use the following steps to test uploading via web services:
  1. Use the webservices toolkit (http://integrations.monster.com/Toolkit) to start your testing. There are samples on the main page of the toolkit in the Samples section. In this tool, use the Validate button to confirm that you have your jobseeker XML in compliance with the Monster schemas including all data fields that are in scope for the project.
  2. Then from your own web services application to do an HTTP POST of a single jobseeker to BGW URL: https://gateway.monster.com:443/bgwPower 
      (NOTE: Monster's BGW uses port 443; this is not an industry standard port so in some cases it needs to be configured in client's firewall. It is not necessary for client to use port 443 to exit their system.)
  3. Receive and review BGW response
  4. Respond accordingly
    • If successful, then no action needed
    • If errors, then fix and repost

File based processing testing
  1. Use the webservices toolkit (http://integrations.monster.com/Toolkit) to start your testing. There are samples on the main page of the toolkit in the Samples section. In this tool, use the Validate button to confirm that you have your jobseeker XML in compliance with the Monster schemas including all data fields that are in scope for the project.
  2. Make sure to always check the "Use BGWPower" checkbox when testing any requests in this tool.
  3. Using XML that worked within a single record from step 1, create an FTP-XML batch file with 5-10 records and wrap it inside of a JobSeekers tag. Note the "s" in that field name which signifies that it will contain multiple records, i.e. a batch file.
  4. Upload test file to testing FTP folder (structure shown below) and let MPS team know so the test file will be processed and feedback will be provided.
  5. Respond accordingly
    • If successful then no action needed
    • If errors, then fix and re-upload

Monster's FTP
Log into Monster's ftp site using account_name and password provided by Monster representative.

Notify Monster when you drop off a test file so it will be processed:
Test XML files get dropped off here: account_name\test\power\inbound
Test XML response files will be returned here: account_name\test\power\outbound
Production - NOTE: Initial upload needs to be coordinated with Monster:
Production XML files get dropped off here: account_name\power\inbound
Production XML response files wil be returned here: account_name\power\outbound