-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
'externalSequenceTimestamp' attribute and function #726
Comments
Need a deep dive session. Standard adaption might need to be done: |
This feature relates to: #643 |
Deepdive session to this feature will happen on the 22. of July at 11 AM CEST to 12 AM: |
Notes from the meeting (22.08.2024):
Use case:
Info:
|
What has already been implemented in BPDM #986 is, that the data record is rejected, if the existing timestamp (currentness) is after the incoming timestamp. This is checked for input AND output stage in the gate. Incoming timestamp == null will be handled as a more recent / current data record and thus overrules the comparison. Legal entity and additional address are two different business partner data records. So, the described use case (see above) is not supported by the implementation of the pull request. My assumption is, that the implementation is a solution for a sequence problem, which can occur, if messages are manually retriggered. Usually, such sequence problems are solved using a technical integer value, which is incremented and send with each message. The receiver then checks for each sender, if the received message arrived after a message with a higher integer value. Messages are usually batches of business partner data records. So, the integer value could be on the batch message level, rather than on the business partner data record. Having the same business partner data record (external ID!!!) multiple times in one batch is an error, which should be solved on the side of the sharing member and not by the BPDM implementation. Removing duplicates from a list is an easy thing, supported by most modern programming languages. Mixing a business attribute (currentness) and the technical solution for the sequence problem / duplicate problem is a wrong approach. Also consider, that there might be multiple senders or source systems, which have unsychronized hardware clocks. In this case a timestamp comparison will lead to probably more recent data being overwritten. Nonetheless, a currentness attribute in conjunction with the source system is from a business perspective a good thing to have, so that in a comparison UI it's more clear which of the compared business partner data records has seemingly the more recent information to it. So, my suggestion is to introduce the currentness attribute in the input and output stage of the gate if it's required for a comparison UI, but not use it for solving any sequence / duplicate problems. Input stage currentness can optionally be filled by the sharing members, output stage currentness must be filled by BPDM, coming from the pool and the data curation services. |
@maximilianong @Sebastian-Wurm We already have a technical field managed by the sharing member named "externalId". Maybe we can use than naming convention for "external" for this attribute as well. Something like "externalRevision", "externalSequenceTimestamp" or similar. |
After a brief consultation with Sebastian, the feature is set to 'backlog' status. Associated committer is also fine with it. |
After another refinement session we will change the attribute name to 'externalSequenceTimestamp' |
Description
The gate needs a functionality that handles:
What is the timestamp of the data provided on customer side (system of the customer) - customer needs to provide this data.
Gate should only update the data when it has newer data according to the attribute (lastchangedoncustomerside) - job of the GR process.
Feature: Data Update with Timestamp Validation
Description:
The BPDM gate requires a functionality to handle data updates from the customer side based on timestamps. This feature ensures that the data is only updated if the new data from the customer has a more recent timestamp than the existing data.
Functional Requirements:
Timestamp Reception:
externalSequenceTimestamp
) from the customer side along with the data payload.Timestamp Validation:
Technical Implementation:
externalSequenceTimestamp
attribute, which is a timestamp indicating the last modification time on the customer's system.Example Workflow:
externalSequenceTimestamp
).By implementing this feature, the gate system ensures data integrity and consistency, only allowing updates when newer data is provided by the customer.
Additional information
Contribution will be done by @kunyao-cofinity-x
Committers to support are @nicoprow / @maximilianong
The text was updated successfully, but these errors were encountered: