Hello,
Here is an answer that may help to address the issue.
For full synchronization, you can use the “Dependency Filter” field for table synchs to wait for each other. However dependency filter is used only with full synchronization because conceptually dependency on reoccurring jobs wouldn’t work:
Level 1 – Job A – Entity X
Level 2 – Job B – Entity Y
Level 3 – Job C – Entity Z
Assume this scenario and they syncs wait for each other. On CRM you created 3 records for each X, Y, Z. Job A has run, it created a record. Job B is running, it is creating another record. Everything looking good so far, but now assume that you created 3 more records when Job B has just finished and Job C is starting, Job C will create one record successfully but it would fail for the newly created record. Since reoccurring jobs are not the same tree structure as the metadata (Entity X, Y, Z) but it is rather a circle graph, it conceptually fails.
Maybe a workaround solution could be to schedule a one time sync Job B after job A is completed, for that you could subscribe this event in codeunit 449 "Job Queue Start Codeunit":
[IntegrationEvent(false, false)]
local procedure OnAfterRun(var JobQueueEntry: Record "Job Queue Entry")
And code something like:
if JobQueueEntry = JobA then schedule JobB
if JobQueueEntry = JobB then schedule JobC
This will minimize the problem, but not fix it completely.
Hope you are getting other useful hints as well. Best probably is to raise this as a feature request so we can develop a permanent solution.
Thanks