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
Enter a descriptive map name.
Set Source system to SAP SuccessFactors.
Confirm the pre-filled Asset Schema.
Select the target Object Type.
Select the schedule frequency.
Add the attribute mapping.
Sample Schema
Here’s the associated mapping
key:userId=UserIDmap:userNav_firstName=FirstNamemap:userNav_lastName=LastNamemap:userNav_email=JiraUsermap:startDate=HireDatemap:positionNav_jobTitle=JobTitlemap:departmentNav_name=Department
5. Field mapping syntax
Use this reference for common field mapping:
Mapping line | Purpose |
|---|---|
| Uses SuccessFactors |
| Maps the user first name to the Assets |
| Maps the worker email to a Jira User attribute. OnLink looks up the Atlassian user by email address. |
| Maps |
| Optional test setting that limits the number of users pulled from SuccessFactors. |
6. Test the import
Click Get Data.
Wait for this Job Logs message: No more pending records. Data will be imported on next Import run.
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