Hello,
I was wondering, what is the suggested way of deploying new customizations from development environments to the production?
Suppose that we have 3 environments: development, test and production. How would you create the solutions that has your custom entities?
I was thinking about exporting and importing them as unmanaged between test and development, then create a new solution as managed when you are ready for production, and import the managed version in prod.
But Microsoft documentation says that: "Only export a solution as a managed solution when you intend to distribute it." However, if we import it as unmanaged at production, it would overwrite and it wouldn't be possible to rollback unless we backed up the previous state as another solution, correct?
So my general question is, how do you go about this customization deployment? what is the suggested habits?
Thanks.
*This post is locked for comments
I will strongly recommend to work on only development environment and avoid customization in UAT directly (for unmanaged solution) as much as possible . Don't do any extra customization in UAT which is not done in DEV . So always DEV first and then UAT otherwise you will loose your customization.
Hi okank,
One more note to add to Goutam's point which really depends on your needs.
If possible, my recommendation is if possible to have 4 environments.
We have dev and test as unmanaged solutions, which are used for development and Unit Testing
We then have a staging and production which are used for uat and live deployment (as managed solutions).
QA can either work on test or staging (based on whether or not you have both qa and uat).
There can be issues that arise with managed solutions which might cause delays, which is why having the test environment as unmanaged can be beneficial.
Hope this helps.
Hi ,
I absolutely agree with David but for my practical experience I really faced big problem using managed solution in UAT environment.
I know there is lot of advantage to use the managed solution but when working with more than 10 developer and different timezone its very difficult to manage the managed solution.
I personally faced lot of issue with the managed solution , In our UAT sometimes we faced blocking issue and customer need to fix this urgently , they want to quick fix the issue . Now let say we can fix the issue by using simple update of a java script file or we can hide an field from the form. Now let say team are working on different timezone so to deploy complete managed solution we need each developer approval for any deployment to move the managed solution as the team may be some ongoing development.
So think on the situation you can easily deploy single file and fix the issue but you can not do it due to managed solution and your customer will not be happy to see this kind of blocking issue in UAT.
if sometimes you are force to change on top of managed solution in UAT , so there is no meaning of use the managed solution in UAT environment.
Let say to maintain security role , sometimes you want to change the privileges in UAT directly and those role are associated with form , what you will do by making managed solution in UAT .
I really not recommend deploy an managed solution in UAT if you have multiple team member and different timezone and project size is big its hard to maintain.
I would suggest to deploy Managed solution when your complete version is ready with set of functionality , you should deploy managed solution in pre-production or production environment .
I am with David on this.
There are benefits on both, but when deploying to test and production I usually go with managed solutions.
You need to have processes in place to decide how to handle certain scenarios, and when to use solutions and patches.
Hope this helps.
The main choice is whether to go for managed or unmanaged. Managed has several benefits, whether or not you're an ISV:
However, to use managed solution effectively needs a certain amount of discipline around the deployment process.
If going for managed, use the following approach, which ensures that test behaves the same as production:
For reference, in the past (before CRM 2015/2016), there were some bugs in the managed solution dependencies that could prevent you uninstalling a managed solution. However, these have now been resolved, and you should have no issues with a well planned, and well implemented, use of managed solutions
If your not an ISV and your solution is not an add-on that you sell, then always choose for a unmanaged solution. When you have issues it's the most flexible solution.
Customer with small budget - Export, Import solution
Big project, big budget --> Continuous integration, Continuous Delivery
Stay up to date on forum activity by subscribing. You can also customize your in-app and email Notification settings across all subscriptions.
André Arnaud de Cal... 291,240 Super User 2024 Season 2
Martin Dráb 230,149 Most Valuable Professional
nmaenpaa 101,156