A system for synchronizing a local object model with a remote object model, comprising: at least one processor (602, 760); and memory (604, 762), operatively connected to the at least one processor and storing instructions that, when executed by the at least one processor, cause the at least one processor to: receive a plurality of changes associated with the local object model, wherein each of the changes modifies at least one attribute state of at least one object in the local object model; identify outcome attribute states of objects that are modified by the plurality of changes; identify required attribute states of the objects for the plurality of changes; build a dependency graph for the plurality of changes based on the identified required attribute states; and generate an ordered list of the plurality of changes based on the dependency graph, characterized in that the instructions further cause the at least one processor to: determine whether the dependency graph includes a cycle by traversing the changes in the dependency graph in a depth first manner and determining whether a change is visited more than once during the traversal; and when it is determined that the dependency graph includes a cycle, identify an attribute state of an object causing the cycle and generate additional changes related to the attribute state to remove the cycle. at least one processor (602, 760); and memory (604, 762), operatively connected to the at least one processor and storing instructions that, when executed by the at least one processor, cause the at least one processor to: receive a plurality of changes associated with the local object model, wherein each of the changes modifies at least one attribute state of at least one object in the local object model; identify outcome attribute states of objects that are modified by the plurality of changes; identify required attribute states of the objects for the plurality of changes; build a dependency graph for the plurality of changes based on the identified required attribute states; and generate an ordered list of the plurality of changes based on the dependency graph, characterized in that the instructions further cause the at least one processor to: determine whether the dependency graph includes a cycle by traversing the changes in the dependency graph in a depth first manner and determining whether a change is visited more than once during the traversal; and when it is determined that the dependency graph includes a cycle, identify an attribute state of an object causing the cycle and generate additional changes related to the attribute state to remove the cycle. receive a plurality of changes associated with the local object model, wherein each of the changes modifies at least one attribute state of at least one object in the local object model; identify outcome attribute states of objects that are modified by the plurality of changes; identify required attribute states of the objects for the plurality of changes; build a dependency graph for the plurality of changes based on the identified required attribute states; and generate an ordered list of the plurality of changes based on the dependency graph, characterized in that the instructions further cause the at least one processor to: determine whether the dependency graph includes a cycle by traversing the changes in the dependency graph in a depth first manner and determining whether a change is visited more than once during the traversal; and when it is determined that the dependency graph includes a cycle, identify an attribute state of an object causing the cycle and generate additional changes related to the attribute state to remove the cycle. determine whether the dependency graph includes a cycle by traversing the changes in the dependency graph in a depth first manner and determining whether a change is visited more than once during the traversal; and when it is determined that the dependency graph includes a cycle, identify an attribute state of an object causing the cycle and generate additional changes related to the attribute state to remove the cycle.