ALM is a fantastic feature allowing to easily promote a current version of a model to a newer version in a few simple clicks. There are a few requirements: the source model has an advance code structure (BASE + NEW CHANGES) and a destination model version is in a place where the source model was before these changes (BASE).
The idea is to allow synchronization between models that have common ancestors, but each of them changed its’ course.
Example:
Model A (BASE + Change1)
Model B (BASE + Change2)
Synchronization could be initially executed in both ways.
Model A after synchronization will be like (BASE + Change1 + Change2).
This would allow easy code migration between models that are very similar to each other.
The difficult part may be handling exceptions when Change1 and Change2 are affecting the same areas.
Manual decisions on these exceptions would be fantastic, but also rejecting a whole synchronization would be understandable too (if it is a possible quick win).