Apogee synchronization manager should revert program changes before unlocking it.
If not, the following exception is thrown:
org.ametys.plugins.repository.AmetysRepositoryException: Unable to unlock content at org.ametys.plugins.repository.jcr.DefaultAmetysObject.unlock(DefaultAmetysObject.java:543) at org.ametys.odf.apogee.program.ApogeeProgramsSynchronizationManager.synchronizePrograms(ApogeeProgramsSynchronizationManager.java:172) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.ametys.runtime.plugin.component.PluginsComponentManager$ComponentInvocationHandler.invoke(PluginsComponentManager.java:159) at $Proxy30.synchronizePrograms(Unknown Source) at org.ametys.odf.apogee.synchronization.ApogeeGlobalSynchronizationManager.synchronize(ApogeeGlobalSynchronizationManager.java:81) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.ametys.runtime.plugin.component.PluginsComponentManager$ComponentInvocationHandler.invoke(PluginsComponentManager.java:159) at $Proxy31.synchronize(Unknown Source) at org.ametys.odf.synchronization.GlobalSynchronizationEngine._synchronize(GlobalSynchronizationEngine.java:126) at org.ametys.odf.synchronization.GlobalSynchronizationEngine.run(GlobalSynchronizationEngine.java:110) at java.lang.Thread.run(Thread.java:662) Caused by: javax.jcr.InvalidItemStateException: Unable to perform operation. Session has pending changes. at org.apache.jackrabbit.core.ItemValidator.checkCondition(ItemValidator.java:269) at org.apache.jackrabbit.core.ItemValidator.checkModify(ItemValidator.java:248) at org.apache.jackrabbit.core.lock.SessionLockManager.unlock(SessionLockManager.java:194) at org.ametys.plugins.repository.jcr.DefaultAmetysObject.unlock(DefaultAmetysObject.java:532) ... 17 more