Wayfast Synchronization Fundamentals
There is some logic related to associating objects to the ticket and getting it synced
First, there is an assumption, you don't get access to the DB without a wayfast ticket.
When you activate the ticket you get access and for every DDL statement there is a trigger that keeps track of what happens in the DB and those 2 things
Associates new objects to wayfast's project ModelObject metadata.
Adds tracing logs for audit purposes.
The sync process is triggered from a specific project and only considers objects created in the context of tickets for that project.
If a an object was created in the same DB with a 2nd project, that object should not be considered by the sync ran from 1st project, and vise versa.
An object can be associated to multiple projects. Changes in that object in a ticket from project A may affect project B if the object is shared between these two projects.
Syncs can be triggered from any project associated to the DB with changes pending to be synced. I Project A and Project B share a DB, syncs from Project A may affect Project B and syncs from Project B may affect Project A. This is why when you close a ticket there is a lists of references from other projects to the objects that you altered in the context of the active ticket that may be impacted when you launch a sync.
Partial Changes and the Sync Process
When you need to sync the project you need to ask everyone to pause their tickets or the sync won’t start. When they do that, the partial work they did is still going to be synced correct?
Partial changes should be coded in such a way that if tasks are going to span multiple days and syncs need to proceed, code needs to be either, commented, disabled, pages to execute partial features should be hidden in the menu or objects should have logic to prevent its execution