SAP SuccessFactors to JSM Assets

SAP SuccessFactors to JSM Assets

Configure SAP SuccessFactors field mapping in OnLink

Use these steps to set up and test an Assets import configuration for SAP SuccessFactors.

1. Start the Assets import configuration

Review the setup instructions here.

2. Open OnLink mapping

From Manage your apps, open OnLink and configure the field-level mapping for your Assets object type.

3. Configure the import map

  1. Enter a descriptive map name.

  2. Set Source system to SAP SuccessFactors.

  3. Confirm the pre-filled Asset Schema.

  4. Select the target Object Type.

  5. Select the schedule frequency.

  6. Add the attribute mapping.

Sample Schema

image-20240325-035045.png

 

 

 

Here’s the associated mapping

key:userId=UserID
map:userNav_firstName=FirstName
map:userNav_lastName=LastName
map:userNav_email=JiraUser
map:startDate=HireDate
map:positionNav_jobTitle=JobTitle
map:departmentNav_name=Department

5. Field mapping syntax

Use this reference for common field mapping:

Mapping line

Purpose

Mapping line

Purpose

key:userId=UserID

Uses SuccessFactors userId as the unique key so OnLink can update the same Assets record.

map:userNav_firstName=FirstName

Maps the user first name to the Assets FirstName attribute.

map:userNav_email=JiraUser

Maps the worker email to a Jira User attribute. OnLink looks up the Atlassian user by email address.

map:positionNav_jobTitle=JobTitle

Maps jobTitle from positionNav to the Assets JobTitle attribute.

config:data_limit=100

Optional test setting that limits the number of users pulled from SuccessFactors.

6. Test the import

  1. Click Get Data.

  2. Wait for this Job Logs message: No more pending records. Data will be imported on next Import run.

  3. Click Import.

Production runs are automated based on the schedule you choose.

7. Available fields for mapping

EmpJob fields can be referenced directly. Example: map:startDate=SchemaAttributeName

Fields in related objects must use a prefix. Example: map:userNav_firstName=SchemaAttributeName

EmpJob

userId, startDate, occupationalLevels, workscheduleCode, timeEventTypeGroupId, effectiveLatestChange, endDate, contractType, createdDateTime, jobCode, validFrom, fgtsDate, payScaleLevel, division, timeTypeProfileCode, eeoClass, probationaryPeriodMeasure, fromCurrency, eeo5JobCategory, flsaStatus, costCenter, residentVote, timeRecordingProfileCode, laborProtection, sickPaySupplementMeasure, exclExecutiveSector, isFulltimeEmployee, emplStatus, ineligibleStatutoryMinWage, guaranteedPayment, occupationGtm, occupationPer, payScaleType, countryOfCompany, eeo6JobCategory, createdOn, municipalInseeCode, creditForPreviousService, localJobTitle, healthRisk, dismissalsNoticePeriodForEmployer, timeRecordingAdmissibilityCode, fte, payGrade, travelDistance, event, timeRecordingVariant, calculationBase, assedicCertObjectNum, degreeOfProductivity, assessmentStatus, managerId, spclRuleNonManualWorker, customString13, lastModifiedOn, dynamicBreakConfigCode, workerCategory, defaultOvertimeCompensationVariant, contractDate, businessUnit, lastModifiedDateTime, notes, harmfulAgentExposure, jobTitle, probationaryPeriod, sickPaySupplement, electoralCollegeForWorksCouncil, codeOfJobForEldp, familyRelationshipWithEmployer, exchangeRate, workPermitExpiry, currentWageLevel, holidayCalendarCode, empRelationship, standardHours, contractNumber, electoralCollegeForWorkersRepresentatives, jobGroup, eeo4JobCategory, eventReason, isCompetitionClauseActive, assedicCertInitialStateNum, fgtsPercent, toCurrency, position, payScaleArea, probationPeriodEndDate, timezone, workingDaysPerWeek, regularTemp, workLocation, contractReferenceForAed, isSideLineJobAllowed, company, department, eeo1JobCategory, periodIndicator, employeeClass, employmentType, lastModifiedBy, customString3, customString2, customString8, customString7, payScaleGroup, employeeWorkgroupMembership, positionEntryDate, sickPaySupplementPeriod, createdBy, contractId, location, paymentInLieuOfNotice

UserNav

userId, salaryBudgetFinalSalaryPercentage, dateOfCurrentPosition, matrix1Label, salary, objective, ssn, state, issueComments, timeZone, defaultLocale, nationality, salaryBudgetLumpsumPercentage, sysCostOfSource, ethnicity, displayName, payGrade, nickname, email, salaryBudgetExtra2Percentage, stockBudgetOther1Amount, raiseProrating, sysStartingSalary, finalJobCode, lumpsum2Target, stockBudgetOptionAmount, country, lastModifiedDateTime, stockBudgetStockAmount, sciLastModified, criticalTalentComments, homePhone, veteranSeparated, stockBudgetOther2Amount, firstName, stockBudgetUnitAmount, salutation, impactOfLoss, benchStrength, sysSource, futureLeader, title, meritEffectiveDate, veteranProtected, lumpsumTarget, employeeClass, hireDate, matrix2Label, salaryLocal, citizenship, reasonForLeaving, riskOfLoss, location, reloComments, username, serviceDate, reviewFreq, salaryBudgetTotalRaisePercentage, jobCode, lastModifiedWithTZ, division, custom02, meritTarget, custom01, custom04, custom03, custom06, custom05, custom08, reloWilling, custom07, stockBudgetOther3Amount, custom09, onboardingId, fax, bonusBudgetAmount, salaryBudgetPromotionPercentage, dateOfPosition, finalJobFamily, teamMembersSize, compensationEligible, lastReviewDate, compensationStockEligible, businessPhone, status, lastName, gender, city, competency, businessSegment, compensationSalaryRateUnits, newToPosition, assignmentUUID, dateOfBirth, localCurrencyCode, jobLevel, custom11, defaultFullName, custom10, compensationReadOnly, custom13, custom12, custom15, custom14, veteranDisabled, totalTeamSize, married, cellPhone, veteranMedal, compensationSalaryRateType, zipCode, jobTitle, minority, suffix, matrixManaged, bonusTarget, addressLine1, jobFamily, jobRole, addressLine2, addressLine3, mi, potential, origHireDate, level, salaryBudgetMeritPercentage, salaryProrating, pronouns, lastModified, promotionAmount, impactOfLossComments, empId, compensationSalaryEligible, department, isPrimaryAssignment, reloLocation, companyExitDate, seatingChart, finalJobRole, performance, compensationBonusEligible, keyPosition, salaryBudgetExtraPercentage

PositionNav

code, effectiveStartDate, externalName_da_DK, businessUnit, lastModifiedDateTime, jobTitle, criticality, createdDateTime, jobCode, mdfSystemVersionId, type, incumbent, division, externalName_zh_TW, externalName_ja_JP, externalName_fi_FI, mdfSystemEntityId, payRange, regularTemporary, externalName_pt_PT, costCenter, cust_recruiter, standardHours, legacyPositionId, externalName_zh_CN, externalName_localized, mdfSystemRecordStatus, externalName_nb_NO, vacant, effectiveStatus, externalName_fr_FR, technicalParameters, externalName_en_GB, effectiveEndDate, positionCriticality, externalName_nl_NL, positionTitle, description, externalName_defaultValue, externalName_ar_SA, externalName_es_ES, positionControlled, externalName_pt_BR, payGrade, company, department, employeeClass, mdfSystemObjectType, creationSource, changeReason, targetFTE, lastModifiedDate, externalName_ru_RU, externalName_it_IT, lastModifiedBy, lastModifiedDateWithTZ, jobLevel, transactionSequence, externalName_de_DE, externalName_ko_KR, createdDate, createdBy, mdfSystemOptimisticLockUUID, mdfSystemRecordId, comment, externalName_sv_SE, location, multipleIncumbentsAllowed, externalName_en_US, externalName_en_DEBUG

EmpEmploymentTermination

endDate, personIdExternal, userId, benefitsEndDate, lastModifiedDateTime, notes, eligibleForSalContinuation, lastModifiedBy, bonusPayExpirationDate, okToRehire, createdDateTime, regretTermination, createdOn, lastDateWorked, lastModifiedOn, payrollEndDate, createdBy, salaryEndDate, StockEndDate

8. Validate the OData API response

Use a tool like Insomnia or Postman to run the query and confirm the returned fields.

Sample URL:

{{successfactors url}}/odata/v2/EmpJob?$expand=userNav,positionNav,departmentNav&$select=userId,firstName,lastName,email,phone,hireDate,positionNav/jobTitle,departmentNav/name