When creating a new project, we usually create a new package and a new model. This keeps things simple, and there is usually no benefit in separating them. You may wish to create a test project in a different model in the same solution, but you may not wish to deploy the test projects to live.
There are two types of projects:
- An extension project
- An over-layer project
Over-layering means modifying the source code of SCM and requires a code upgrade for each application hotfix. Extension projects work on delta changes to the standard object or use delegates to affect code execution. Extension projects are less likely to require a code upgrade when application hotfixes are applied. Avoiding over-layering cannot be overstated because, at the time of writing, all Microsoft supplier packages are locked. The ability to write good code through extension has been improved with each release, and now that over-layering is only available to ISV solutions, the development paradigm has had to shift significantly from the AX2012 development days.
In this recipe, we will use extension projects exclusively in order to avoid conflicts with future upgrades. They make it possible for us to service the environment without having to deploy a new build of the custom solution. This is very exciting for ISV solutions, but also very important for partners/Value-Added Resellers (VAR) and end-user customers.
See There's more... section for information on the relationship between packages, models, and projects.