In this post, I would like to draw your attention to RetailCdxSeedData class.
The RetailCdxSeedData class is called when you trigger the following option in Dynamics 365 for Operations
Retail and commerce->Headquarters setup -> Retail scheduler ->Initialise retail scheduler
If you have added some custom tables that need to be synced between your HQ and Channel Database using CDX (Commerce Data eXchange), then you should customize the RetailCdxSeedData class to include the custom tables. If you do not not customize the RetailCdxSeedData class, you will need to do the CDX table mapping manually in all the environments and in every DB refresh and increasing the chances of missing out some fields if you have a lot of tables.
Please refer the following link from Microsoft on how you can customise this class with an extension.
If you decide to refactor or rename a Commerce Runtime (CRT) entity (lets say OldEntityName to NewEntityName) inheriting from CommerceEntity, one issue that I have faced is in Retail Server extension assembly the build fails with errors due to the RetailProxy classes relying on the definition of your old entity name.
Example of the error messages that you would see in this scenario are as follows-
Could not load type OldEntityName from assembly… and the command ‘bin\CommerceProxyGenerator.exe’ ..
The solution to this issue is a little tricky one. You need to compile the CRT data dlls keeping the OldEntityName in the References folder.
You need to then comment any reference to NewEntityName in the Retail Server Extension assembly. Then do a clean and a build of the solution.
If this succeeds with no errors, you can now go ahead to uncomment all references to NewEntityName in the Retail Server Extension assembly.
<Update>This article is based on 7.1 Retail SDK </Update>