Syncing your Onboarding Corporate Structure & Relationships Using the Integration Center – Part Two
Recently, I’ve had several questions about syncing your corporate structure relationships. When I saw the Import Relations xslt file in Super Admin, I had the same question. Like I said in my previous post, I have been the one to maintain the onboarding structure before, so I am always looking for a way to improve a user’s experience and decrease the level of maintenance required to support the module.
The below example will walk you through the steps for syncing your corporate structure relationships.
Determine Corporate Structure Levels
In Onboarding, go to Onboarding > Reference Files > Corporate Structure
OR
In Super Admin, go to See Also > Corporate Structure
Creating the Integration Center Report
1. Go to Admin Tools > Company Settings > Integration Center and select click My Integrations
2. Click the Create button and then select Scheduled Flat File Output Integration
3. Search for “Department” and select Department (FODepartment)
4. Select Department (externalCode) and the parent code. (It could be under Navigations)
5. Uncheck Start Date
6. Click Select
7. Enter Integration Details
- Integration Name: Onboarding Relations Export
- Output File Type: csv
- Header Type: Simple
8. Click Next
9. Click the child code and change the label to ChildID
10. Click the parent code and change the label to ParentID
11. Click ChildID and select Insert Field > Insert Fixed Value Field (You can create a calculated field to calculate count but for demo purposes, we will use a fixed value field)
- Label: ChildOrgLevel
- Default Value: 3 (Your child corporate structure level)
12. Click OK
13. Repeat steps to create ParentOrgLevel
- Label: ParentOrgLevel
- Default Value: Your Parent Level (In this demo, it’s 2)
14. Click OK
Your report should now look like this:
15. Click Next
16. Expand the Advanced Filters section and click Browse
17. Search and select ‘Status (status) in Department (FODepartment)’
18. Click Change Association to “Status”
19. Enter A in the Value field to only include Active Departments
20. Click Next
21. Enter Destination Settings
- Enter SFTP Server Host Address, username, and password
- File Name Prefix: <case sensitive Company ID>_Relations_Sync
- Date Suffix Format: yyyyMMdd
- File Extension: csv
- File Folder: /ONB/Inbound
22. Click Save
Modify the Foundation Import File
1. In Super Admin, Go to Integration > Import/Export Settings
2. Under the Integration section, export the FoundationImport file.
3. Save a backup of the file
4. Add the below code right above the last </FoundationImportConfiguration>
5. Save as a new file
6. Return to Import/Export Settings in Super Admin and import the new foundation import file
Modify the Foundation Import Field Mappings
1. In Super Admin, Go to Integration > Import/Export Settings
2. Under the Integration section, export the FoundationImportFieldMapping file.
3. Save a backup of the file
4. Add the below code right above the last </FoundationImportFieldMapping>
5. Save as a new file
6. Return to Import/Export Settings in Super Admin and import the new foundation import field mapping file
Run the Integration Center Reports
1. In Provisioning, go to Manage Scheduled Jobs
2. Find your Relations Sync Report and select Run Now from the Actions drop down
Check Import Status in Onboarding Audit Report
1. Once your report has been picked up from the ftp site, the file should no longer be listed in the inbound folder.
2. Other than checking your corporate structure, you can determine the status of the import by going to Onboarding > Settings > Audit Report
3. Select the blank option from the Type dropdown, enter INTEGRATION in the Event Code textbox and click filter
4. Find the import file and see if it is complete
Once your report runs successfully and is processed by Onboarding, your corporate structure relations will be available in Onboarding
Once again, I hope this post will make managing your Onboarding Corporate Structure a little easier. Please stay tuned for part three on syncing position and additional attributes.
Hi Kayla
I saw that you mentioned in the part one of the post. That you were going to provide instructions on how to manage position information. Sorry to ask but is that something you will publish soon, I am working on a config at the moment, and right in the middle of the struggle with the positions in ONB.
Thank you very much for your help!
Cyntia
Hi Cyntia,
I don't have a planned date yet, but I will try to publish it as soon as possible.
Kayla
Hi Cyntia,
Part 3 is now posted here... https://blogs.sap.com/2016/12/29/syncing-your-onboarding-corporate-structure-integrating-position-management-with-onboarding-part-three/
Hope it helps!
Kayla
This is awesome. Thanks so much for the helpful blogs and contribution to the community.
Quick question. My client is implementing SF Recruiting and Onboarding but not EC, they're keeping their SAP ERP HCM. Are any of the blogs (other than the first one since it is from EC) helpful to integrate their Org Structure, relationships and Position Management to Onboarding?
Hi Samantha,
Tecnhically, all 3 of the blogs will work for SAP as well. You’ll still do all of the changes in super admin to the import files but instead of the report coming from the integration center, it would come from SAP. You would just need to setup the same report in SAP and send it to the sftp site for onboarding to pick up and import.
Hello Kayla,
Would this automate the corporate structure syncing? for example new location was added in ec, if we run this report would it update the corp structure in onboarding?
Thank you so much for you answer.
Hi,
Yes, it would automate it. It will update existing and add new but not delete old ones so they'll be there for history. Part one of this blog covers syncing the levels and then part 3 covers syncing attributes from the objects. Hopefully it'll help!
Thanks,
Kayla
Thank you Kayla.
This will help a lot
Hi Kalya,
Please Share the position sync blog, and also please confirm position sync is possible from EC to ONB ?
Thanks,
Abdul
Hi Team
When I am adding the below code in the import foundation import file getting the error as
"Failed to validate configuration file."
below code I have added
<FoundationImportConfiguration id="SuccessFactorsRelations">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_Relations*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportRelations.xslt</ImportXslt>
<DataTable>
<Field name="@ChildOrgLevel@" type="String" />
<Field name="@ChildID@" type="String" />
<Field name="@ParentOrgLevel@" type="String" />
<Field name="@ParentID@" type="String" />
</DataTable>
</FoundationImportConfigurations>
-------------Below is my complete foundation import file-------------
<FoundationImportConfigurations>
<FoundationImportConfiguration id="SuccessFactorsDepartment">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_Department*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportDepartment.xslt</ImportXslt>
<DataTable>
<Field name="@ClientID@" type="String" />
<Field name="@Name@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsDivision">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_Division*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportDivision.xslt</ImportXslt>
<DataTable>
<Field name="@ClientID@" type="String" />
<Field name="@Name@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsLocation">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_Location*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportLocation.xslt</ImportXslt>
<DataTable>
<Field name="@ClientID@" type="String" />
<Field name="@Name@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsCompany">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_Company*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportLegalEntity.xslt</ImportXslt>
<DataTable>
<Field name="@ClientID@" type="String" />
<Field name="@Name@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsBusinessUnit">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_BusinessUnit*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportBusinessUnit.xslt</ImportXslt>
<DataTable>
<Field name="@ClientID@" type="String" />
<Field name="@Name@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsBusinessSubUnit">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_BusinessSubUnit*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportBusinessSubUnit.xslt</ImportXslt>
<DataTable>
<Field name="@ClientID@" type="String" />
<Field name="@Name@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsLocation">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_Position*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportLocation.xslt</ImportXslt>
<DataTable>
<Field name="@ClientID@" type="String" />
<Field name="@Name@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsUserImport">
<ImportType>UsersInfoOnly</ImportType>
<FileMask>{AccountName}_User*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportUsers.xslt</ImportXslt>
<DataTable>
<Field name="@UserSysId@" type="String" index="yes" />
<Field name="@FirstName@" type="String" />
<Field name="@LastName@" type="String" />
<Field name="@Email@" type="String" />
<Field name="@Department@" type="String" />
<Field name="@Location@" type="String" />
<Field name="@LocalDivision@" type="String" />
<Field name="@Company@" type="String" />
<Field name="@ManagerUserSysID@" type="String" />
<Field name="@HRManagerUserSysID@" type="String" />
<Field name="@StartDateIfApplicable@" type="String" />
<Field name="@Country@" type="String" />
<Field name="@LockedOut@" type="String" />
<Field name="@PersonGUID@" type="String" />
<Field name="@PersonExternalId@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsUserGroupImport">
<ImportType>Permission</ImportType>
<FileMask>{AccountName}_Permission_Sync*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<UseDiff>No</UseDiff>
<Delimiter>,</Delimiter>
<ImportXslt>ImportUserGroups.xslt</ImportXslt>
<DataTable>
<Field name="@UserID@" type="String" />
<Field name="@RoleName@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsDeltaUserImport">
<ImportType>UsersInfoOnly</ImportType>
<FileMask>{AccountName}_Delta_User*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<UseDiff>No</UseDiff>
<Delimiter>,</Delimiter>
<ImportXslt>ImportDeltaUsers.xslt</ImportXslt>
<BizXDeltaContent>Yes</BizXDeltaContent>
<DataTable>
<Field name="@UserSysId@" type="String" index="yes" />
<Field name="@FirstName@" type="String" />
<Field name="@LastName@" type="String" />
<Field name="@Email@" type="String" />
<Field name="@Department@" type="String" />
<Field name="@Location@" type="String" />
<Field name="@LocalDivision@" type="String" />
<Field name="@ManagerUserSysID@" type="String" />
<Field name="@HRManagerUserSysID@" type="String" />
<Field name="@StartDateIfApplicable@" type="String" />
<Field name="@Country@" type="String" />
<Field name="@LockedOut@" type="String" />
<Field name="@PersonGUID@" type="String" />
<Field name="@PersonExternalId@" type="String" />
</DataTable>
</FoundationImportConfiguration>
<FoundationImportConfiguration id="SuccessFactorsRelations">
<ImportType>CorpStructure</ImportType>
<FileMask>{AccountName}_Relations*.csv</FileMask>
<HasHeader>Yes</HasHeader>
<Delimiter>,</Delimiter>
<ImportXslt>ImportRelations.xslt</ImportXslt>
<DataTable>
<Field name="@ChildOrgLevel@" type="String" />
<Field name="@ChildID@" type="String" />
<Field name="@ParentOrgLevel@" type="String" />
<Field name="@ParentID@" type="String" />
</DataTable>
</FoundationImportConfigurations>
</FoundationImportConfigurations>
Thanks
Faraz
Hi Kayla,
Thank you for the wonderful post . I just have one question in my mind that
Please advice.
Thanks and Regards,
Parul