I have installed CU6 on an AX 2012 R2 environment that has customizations in the USR layer. I would like to compare the USR layer to the SYP layer to move changes up and preserve the modifications while also applying the CU6 fixes.
I tried using the Compare Layers tool (Tools -> Code upgrade -> Compare layers), but this does not let me select the appropriate layers. It appears to only work for an "old" layer, which does not exist.
I could go through the AOT and compare individual modified elements, but I should think there is an easier way.
Is there a way to create an upgrade project to merge my SYP and USR layer code?
You should really consider using the normal upgrade workflow, i.e. to put original layers to Old folder and let AX to generate upgrade projects. That will detect conflicts for you and it can even resolve some simple conflicts automatically.I have no idea why Compare layers doesn't work in your case. It should work; it's definitely not limited to old layers.
Martin "Goshoom" Dráb | Freelancer | Goshoom.NET Dev Blog
I was not upgrading from a previous version of AX (say 4.0 or 2009), but only applying the CU6 update. I did not know upgrade steps were necessary.
What I did was download and install the update from the Knowledge Base. Could you link me to some documentation that details the upgrade steps I should have taken?
Ultimately what you want is to detect and fix upgrade conflicts - and that's what code upgrade is about. You can use it any time when a lower layer changes (e.g. when you're delivering code to an environment with modifications done users in a higher layer).If you look at Install updates to database, AOS, and clients [AX 2012], for example, you'll see Code upgrade task in the Complete the software update checklist.
For details about code upgrades, check out the white papers and - if you have access to them - the related training materials.
I have also noticed that the Compare layers tool limits the bottom layer to Old layers only.
Aha, I see. The implementation of SysCompareCreateProject has changed in R2. I wasn't aware of that. I'm also not sure why it was done.