We recently worked to integrate Workday with S/4 HANA for integrating the HR Master data.
We had to do serialization heavily and the end to end design involved SAP Process Orchestration as the middle-ware and also SAP AIF(Application Interface Framework). The design is quite interesting and thought of documenting this is a blog.
In this blog, I will not detail out the exact technical configs / developments -- rather, I will focus on bringing out what was achieved leveraging the products and tools. The purpose is to showcase how we can powerfully design complex integration requirements like these leveraging SAP PO in conjunction with SAP AIF.
To learn about SAP AIF, please refer to the SAP AIF Cookbook and SAP Learning materials.
Also, the SAP Press book on Serialization in AIF by
Michal Krawczyk, Krzysztof Łuka and Michal Michalski was of immense help in designing and developing the interface. You can buy the book from the URL:
https://www.sap-press.com/serializing-interfaces-in-sap-aif_3943/
Background and the Requirement:
In our project, Workday was used as the SAP HR Master system. There was a need to integrate the HR Master data from Workday to the HR Minimaster in SAP ERP, which is SAP S/4 HANA 1709.
Workday sends data using SOAP Protocol to SAP PO and SAP PO calls Asynchronous ABAP Proxy in S/4 HANA which in turn leverages SAP AIF.
The Master data involved are mentioned below--- there are two sets of Master data:
Set1:
- Organization Data
- Position Data
- Worker Data
Set2:
- Qualification Catalogue
- Worker Qualification
The reason the above data is classified as two sets is, that in each set the data had relationships and needed to be serialized . Almost similar design pattern in applied for Set1 and Set 2 data, and I will illustrate the design in place for Set 1 only which deals with more complexity.
So, in Set 1, Workday is the source of truth for all the three Master data --- which are Organization Units, Positions and Worker. These data has relationship between them -- to illustrate in short, a Worker belongs to a Position, which in turn belongs to an Organization Unit. The master data is maintained in Workday and whatever is created /modified in Workday needed to be interfaced to S/4 HANA.
Now, due to the above mentioned relationships, if the organization data did not flow from Workday, any attempts to create position within that organization will result into a failure. The same applies for Worker as well if the position is not created. So, from this, we understand that the three data objects needs to be in sequence, as illustrated in the diagram below:
[EOIO: Exactly Once in Order, meaning these are in sequence.]
Each of the boxes above represents one workday message. However, each of the message can contain multiple data. Meaning the organization Units message will contain multiple Org Units being replicated from Workday to S/4 HANA. The same holds true for Position and Worker data.
What the above diagram means is, Position will not overtake Organization message in case Organization Message takes longer time to process or fails for any reason. Similarly Worker will not overtake position and Organization in the case of a failure in Position or Organization.
If Organization or Position fails, the entire message will fail and will block the queue.
The above was achieved by using EOIO in PO. - Stage A of the Design
However, for the case of Worker data, what we wanted is:
- Worker remains serialized for the flow, but
- Once the worker stars processing in the destination System, which is S/4 HANA, failure of one worker should not block the queue and let the other workers being processed.
This was achieved by the following:
- Step1 is established for EOIO for Organization, Position and Worker.
- In Step 2 - the Worker data is split to individual Messages while calling AIF from the ABAP proxy. The Position and Organization are not split, and the entire data for Org and Position are processed as a single Logical Message. This is illustrated by the following diagram
This is how the Design looks like now --- Stage B of the design.
At this stage, what happens is, The three messages Org, Position and Worker comes to S/4 HANA as EOIO, and gets processed in Sequence -- Position and Worker Waits till org is processed, and then Worker will wait till position is processed. However, once the processing turn of Worker comes, Worker message is split into individual AIF Messages -- Worker 1, Worker 2 and so on.
The Workers which are split to individual AIF messages are not in EOIO anymore and will get processed in parallel. However, this caused a concern in the design. There may be multiple individual messages for the same worker as well and those needs to be sequenced/ serialized. The rational behind that is - if a contingent worker needs to be converted to a permanent employee, then the worker needs to be terminated first and then hired after the termination. Here the hiring needs to happen only after the termination takes place, not before. So, at this stage, we need to build another level of serialization, and this time we leveraged the SAP AIF Serialization to serialize messages at the worker level. [Please refer to the SAP Press book on Serialization in AIF by
Michal Krawczyk, Krzysztof Łuka and Michal Michalski ---
https://www.sap-press.com/serializing-interfaces-in-sap-aif_3943/ for more on serialization in SAP AIF]
This is illustrated in the diagram below:
This is Stage C, which is the final Design and Development.
In this stage, although the workers are split, and looses the EOIO, but the AIF Serialization comes into play at the worker level.
This is how we achieved the overall Master Data Integration design from Workday to S/4 HANA HR Minimaster.
Additional sorting was applied at the PO layer to ensure that Terminated and non terminated workers are processed in Sequence in S/4 HANA
Hope you find this blog interesting and you can build interfaces by leveraging capabilities of SAP AIF in conjunction with SAP PO. Please help me improve my blogs by leaving your valuable feedback and let me know if you have any questions on this topic. For any questions not directly related to this article, please post those in the forum.