Once you have set an activation’s app version using SetAppVersion(), that app version will be updated against that activation on the server for all subsequent server syncs until the client application is closed. However, if the application is closed and then opened again, the value of the activation’s app version is not automatically populated again, and unless the app version is explicitly set again, any subsequent server sync will clear the app version stored against that activation on the server.
Once an activation’s app version has been set, it should be populated automatically the next time the application is run so the existing value can be included in server syncs (as is already the case with an activation’s metadata - subsequent syncs do not clear the existing activation metadata on the server even if it was not explicitly set again).
You might also want to consider changing the procedure name to SetActivationAppVersion to make it clearer what it does, and then perhaps also consider adding a GetActivationAppVersion function to match the existing GetActivationMetadata function.
Just a thought.