How to Manage Your Storage Capacity for Dynamics 365 Customer Engagement Apps – Part 2
Reacting to consumption
Even if you follow the proactive steps outlined in the previous blog post, you may still encounter situations where you need to react to your storage consumption and reduce it quickly. There are several things you can do to free up some space.
In general, deleting database data that is no longer relevant is the best place to start. You do this directly in the application, through the API, or with Bulk Delete jobs. Bulk Delete jobs allow for scheduled and recurring deletion jobs to remove data that is no longer necessary based on retention policies. In the case where you need to conduct a massive deletion effort, it is recommended that you delete data in the following order: transactional, operational, master. This is due to the cascading nature of relational data which tends to create the perception that deleting records is slow. However, that is because additional data is being updated or removed due to these existing relationships. Therefore, always remember to review the delete cascade behaviors on the records being purged and consider having the delete cascade down to all child records planned for deletion.
For all three types of storage (database, log and file), there are many things you can do to reduce consumption. They are outlined extensively in documentation here, but we will highlight a few notable methods in this blog post:
- The AsyncOperationBase table is used to store asynchronous system jobs and will grow over time if not managed properly. Completed workflows and plug-ins should be configured to delete the job record after it is complete. You can use the TDS endpoint to understand what jobs may need to be created to remove completed job records, then you can use bulk delete to delete these system jobs records.
- The SubscriptionTrackingDeletedObject (STDO) table contains record-specific deletion for Server-Side Sync and Change Tracking based on subscriptions and is cleaned up by the deletion service. Retention of the data is based on a couple of organizational settings: ExpireChangeTrackingInDays and ExpireSubscriptionsInDays. To limit STDO table size, the guidance is to reduce the value to 7 for both settings. This can be done with OrgDbOrg settings tool or with the OrgDbOrg settings solution. There should be some elasticity in this table and you should see fluctuation in the PPAC report. If you see continuous growth, then you should open up a support case for further investigation.
- Log file storage contains audit logs and plug-in trace logs. Sandbox environments should have no need for audit logs so make sure auditing is disabled and delete all audit logs remaining in those environments. Plug-in trace logs should be removed after a short period of time and only used for troubleshooting. You can create bulk delete jobs to delete these logs after 7 days in production or 30 days in sandbox environments.
Capacity Overage and Enforcement
The new model of storage capacity has three types: file storage, log storage, and database storage. Each type has its own entitlements and consumption, which affects the available capacity. When the consumption of a type exceeds the capacity, it causes capacity overage. This may be resolved by using the capacity of other types, or it may lead to a capacity deficiency.
Capacity deficiency means that there is not enough storage for the customer's needs, and it triggers enforcement actions. These actions prevent some administrative operations, such as creating new environments, importing solutions, or restoring backups. To avoid these problems, customers should monitor their storage consumption regularly and proactively manage their data. This way, they can optimize their storage usage and prevent capacity issues.
Conclusion
Managing your storage capacity in Dynamics 365 is not a one-time task, but an ongoing process that requires planning, monitoring, and action. By following the tips and best practices in this blog post, you can optimize your storage usage, avoid capacity issues, and get the most out of your Dynamics 365 applications.
*This post is locked for comments