Witnessed a scenario where an isv solution had modified an existing sys enum to add more values for its use and new elements value was only increased by +1. This is a bad design practice and can cause issues further down the road when its time for an upgrade and Microsoft adds new elments to that enum so you do not want to be in that situation. Therefore the best practice is to add your element with a value that starts with +100.
So for example i have this ABC enum and its C element’s Enum value is 3:
If my customization requires me to add values to this I should start at 103:
This will prevent any future upgrade conflicts that can be a nightmare for someone doing an upgrade.
I’m often asked a question by customers on what we mean when saying we need a destructive refresh of the database or a scripted one for that matter. So here is a quick explanation.
A destructive refresh is basically make your environment be a copy of Another DB(Master, Prod, etc). In it I would take a backup of for example the Master DB and overwrite the DynamicsAX Trans DB. Then I’d go in and change the pointers inside AX to point to your server instead of the Master server.
A scripted refresh keeps your pointers and some configurations, things like batch jobs and security, document handling and just copies most of the data from Master, going table by table. Some tables are excluded in the scripted refresh, depending on what we are restoring.
Time taken: A destructive refresh will take about an hour to do, while a scripted refresh is 3-4 hours.
Recently I came across an error while doing a complete build on D365
Severity Code Description Project File Line Suppression StateSeverity Code Description Project File Line Suppression StateError System.InvalidOperationException: Unable to recycle AppPool ‘AOSService’ running Site ‘AOSService’. Check your IIS/Azure Environment for correct deployment. —> System.Runtime.InteropServices.COMException: The object identifier does not represent a valid object. (Exception from HRESULT: 0x800710D8) at Microsoft.Web.Administration.Interop.IAppHostMethodInstance.Execute() at Microsoft.Web.Administration.ConfigurationElement.ExecuteMethod(String methodName) at Microsoft.Web.Administration.ApplicationPool.Recycle() at Microsoft.Dynamics.Framework.Tools.AosAppPoolRecycler.RecycleAppPool() — End of inner exception stack trace — at Microsoft.Dynamics.Framework.Tools.AosAppPoolRecycler.RecycleAppPool() at Microsoft.Dynamics.Framework.Tools.BuildTasks.SyncEngineWrapper.Sync(CancellationToken cancellationToken) 0
To verify that an application pool has recycled correctly, follow these steps:
Open Internet Information Services (IIS) Manager as an administrator.
In Connections pane, expand your computer name.
Open Application Pools
Find the AOSService pool and if it is stopped, start it.