Hi
Sorry my response was largely targeted at solution dependency issues you described.
If you have 30+ managed solutions on your Dev, quite a lot of components will be in managed state so it makes sense why you decided to do the customization and deploy as unmanaged solution. As long as Dev/Prod/UAT all have the same managed solution layers, this approach would work fine. If a particular managed component is set as non-customizable, you may have to change that component to unmanaged by making change to component state directly in the DB in unsupported way. However, changing every single component to unmanaged or customizable is not going to be easy, not supported and prone to errors and you will end up spending a lot of time in manual SQL updates, backups and restores and stuff like that.
- can you give some technical advise on our approach?
Looking at your points, my suggestion would be to go for lift & shift whether you are moving to online or upgrading on-prem . The alternative is you spend a lot of time re-creation your components on a vanilla box, bringing in few/some components at a time, and creating some manually, then migrating all the data, this is going to be whole new project and you might end up spending months tbh.
- Maybe we are missing something. Is there a supported/unsupported way to bypass the issue we are facing?
You can change a component state from Managed to Unmanaged by doing unsupported direct SQL updates as I mentioned above. If we are talking about few/some components, updating those might be easy, if there are a lot of components, its wont be easy to change all.
- Can we get rid of the managed solutions on our Dev system but keep all the customization in the unmanaged layer?
If you just want to delete the managed solutions just the keep the solution list clean, you could try changing the solution type from Managed to Unmanaged in unsupported SQL update and delete the solution but your managed component layers will still be in your system so I do not see much benefit in deleting just the solutions.
- How would this issue be handled by the Fast Track / Lift & shift option from MS ?
FastTrack lift and shift is nothing but importing an org DB, same as how you created your Dev from Prod.
- Would the solutions be migrated like-like from OnPremise to Online? Ideally we want to get rid of all inhouse managed solution and only work with the unmanaged solution + the external managed solutions we would still need once Online.
Due to the number of managed solutions in your system, Org import will be the best solution in my view.
- I found this article describing an unsupported method using sql statement to change the IsManaged flag and Solution for each solution component. Not sure if this could work for us – at least for the
As I mentioned above, it is possible to change in unsupported way. I tried doing this in one of the migrations. Changing a field, or dashboard or form was easy but then changing relationships and roles were complicated as they are spread in many metadata tables, it was too many to keep track of and change so I gave up. So in short, it will work for POC small set of components. Having said that, you could come up with the SQL script or C# console app to change but its very time consuming and prone to errors.