AX 2012 TFS integration : Issues and workarounds
I am working on a project which is using AX 2012 R2 as ERP and TFS as the source control. The project is going on for more than a year now. I got to know some problems on integration and their work-arounds. (Welcome suggestions if anybody knows proper fix to issues)
1. Client crash during synch: Most common when I synch whole model (with force) with TFS. As far as I know it is because of some VS projects which I have in system (not 100% sure). Work-around to it is to go to delete the synch history completely and then retry. As an extra precaution, you can completely empty your local TFS repository as well.
2. Synch does not finish correctly but still no errors given: It also happens frequently. After every synch, go back to synch history and sort the records for the largest synch number. Check if all records for that synch number are marked 'Completed'. If yes, then all is good. If not, select any record with 'Complete' not marked and click 'Process' button. This will re-start the synch process.
3. Found some object not latest even when synched: This also happens; may be because of the point #2. Work-around is to do the 'Get latest' on the individual object. But sometime you won't get that option. When? well.. say, you are working in VAR layer and some of the developer has made a change in standard object (SYS or SYP) layer. If the changes to that object has not come through in you local via synch, then the object will still be sitting in SYS or SYP layer. Then context menu of 'Get latest' will not be enabled on the object. What to do then? From AOT make a small change to the object (like adding a new field in a form). This will take the object to your working layer (VAR in this example) and then 'Get latest' button will be enabled. Dirty trick to fool around the system.. huh!
Another scenario which I have witnessed - Object is in VAR layer and have multiple changes to it but latest version is not in you local. Even 'Get latest' is not actually giving you the latest changes. Work-around? Go to object from AOT, right click and open history, select an older version of the object and choose 'Get'. This will give you an older version of the object in your local. Then again go to history form and this time choose the latest version and choose 'Get'. This will get you the latest version of the object. Works for me 99% of the times :)
4. Can't check-out object: Sometimes you can't check-out object because system says 'The object was not synchronized correctly ...'. To resolve this go to synch log and either 'Clean all' or select the record for object (which has not been completed last time) and select 'Process'. If you chose 'Clean all', then go to the object and do 'Get latest'.
There are few more situations which I can't get in my head right now. Will update the post later on.
Any feedback will be appreciated and if anyone have genuine solutions, I am more than happy to include them in the above list.
1. Client crash during synch: Most common when I synch whole model (with force) with TFS. As far as I know it is because of some VS projects which I have in system (not 100% sure). Work-around to it is to go to delete the synch history completely and then retry. As an extra precaution, you can completely empty your local TFS repository as well.
2. Synch does not finish correctly but still no errors given: It also happens frequently. After every synch, go back to synch history and sort the records for the largest synch number. Check if all records for that synch number are marked 'Completed'. If yes, then all is good. If not, select any record with 'Complete' not marked and click 'Process' button. This will re-start the synch process.
3. Found some object not latest even when synched: This also happens; may be because of the point #2. Work-around is to do the 'Get latest' on the individual object. But sometime you won't get that option. When? well.. say, you are working in VAR layer and some of the developer has made a change in standard object (SYS or SYP) layer. If the changes to that object has not come through in you local via synch, then the object will still be sitting in SYS or SYP layer. Then context menu of 'Get latest' will not be enabled on the object. What to do then? From AOT make a small change to the object (like adding a new field in a form). This will take the object to your working layer (VAR in this example) and then 'Get latest' button will be enabled. Dirty trick to fool around the system.. huh!
Another scenario which I have witnessed - Object is in VAR layer and have multiple changes to it but latest version is not in you local. Even 'Get latest' is not actually giving you the latest changes. Work-around? Go to object from AOT, right click and open history, select an older version of the object and choose 'Get'. This will give you an older version of the object in your local. Then again go to history form and this time choose the latest version and choose 'Get'. This will get you the latest version of the object. Works for me 99% of the times :)
4. Can't check-out object: Sometimes you can't check-out object because system says 'The object was not synchronized correctly ...'. To resolve this go to synch log and either 'Clean all' or select the record for object (which has not been completed last time) and select 'Process'. If you chose 'Clean all', then go to the object and do 'Get latest'.
There are few more situations which I can't get in my head right now. Will update the post later on.
Any feedback will be appreciated and if anyone have genuine solutions, I am more than happy to include them in the above list.
RE: #2, I discovered that the sync will fail whenever the sync process attempts to import an object that depends on another object that hasn't been synced yet. For example, a View based on a Query. If the Query doesn't exist yet, the View will fail and the sync will stop. This is particularly troublesome when running the sync process is run in an automated build script, since the client will report success regardless.
ReplyDeleteSynch process does the normal import of XPOs from the repository. So yes, if a dependent object does not exist the import will give error. The bug here is that the system does not provide appropriate message about the object failed to synch.
DeleteDid my work-around helped you to get the objects correctly in second synch?