Hi,
1) At what point, if at all, is that really needed betwen PROD and DEV/LAB?
Ans: I think re-initialize from PROD to DEV/LAB is a best-practice thing. If we are only talking about element-ID here, then I don't think it's *really needed*.
2) the reinitialization should be importing the model files from PROD to PRE-PROD over the existing model files in PRE-PROD.
Ans: You can do the same as you would from PRE-PROD to PROD. I.E. Export/Import modelStore between these 2 environments.
3) Could the same be done by simply rolling all three database down from PROD to PRE-PROD?
Ans: Yes that should work. You will have to take care of some settings like EP site URL, SSRS server settings, etc. In fact, I think you can try roll just the AXModel database from Prod to Pre-Prod.
(I am not 100% sure in case if element ID are stored in EP / SSRS objects on SharePoint/SQL as well...but worst case is you have to redeploy everything.)
4) I also see in the white paper that MS says that when moving models from DEV to TEST (or LAB in my case), you SHOULD delete the model files in LAB first.
Ans: Yes, it would cause possible ID issues. I think the whitepaper stated somewhere that the reason behind this is to make sure the customization is "clean" in the TEST (i.e. LAB) environment for testing.
Any possible ID conflict is taken care of when you import the model files to PRE-PROD.
For example (don't worry about the exact # assigned, I just want to show how importing with model files handles the ID):
[PREPROD] TableA(ID:15), TableB(ID:16)
[TEST/LAB] TableA(ID:15), TableB(ID:16)
[DEV] TableA(ID:20), TableB(ID:21), TableC(ID:22)
a) <DEV -> TEST/LAB (Delete then import)>
[TEST/LAB]: TableA(ID:16), TableB(ID:17), TableC(ID:15)
Assume TableC was processed first during import, it is assigned ID #15. TableA and TableB now has ID #16 and #17 respectively -> Changed.
b) <TEST/LAB -> PREPROD (import over existing)>
[PREPROD]: TableA(ID:15), TableB(ID:16), TableC(ID:17)
Note that TableA and TableB retains their existing ID because they already exists. TableC is then assigned #17 (Max + 1)
Hope it make sense.