This could be an ongoing topic ever, You have to check health of your CRM on regular basis and/or every time new development is done certain checks should be made. In current Agile world when Business takes very short time to change process software must adapt and frequent changes are desired. There is possible negligence of long term impact causing performance issues.
This could be nightmare for any product owner, technical architect to find the real cause of performance issue. Here list of some standard issues that we investigated and improved upon
- Improve workflows that may cause delays
- Longer workflows with too many steps, can be replaced by plugins with few lines.
- Clean up waiting workflows
- Automatic deletion of completed items
- Java Scripts with synchronous calls
- Loops within Scripts that make sync calls(this is worst programming)
- Multiple plugins on same event with Synchronous steps(Try to combine them and call from one plugin)
- This becomes problem, when developers do not want to touch existing code 🙂
- Late binding server side plugins are faster that early binding.
- Third party API services, latency and response from other system is key here.
- Calls made from plugins/custom workflows to external system, this can cause delays in internal processes
- Calls made by external system to CRM, make sure to create staging entity to collect any data and process them in batches in background.
- Enable Compression in IIS(On premise)
- The reason for our issue was OLEDBTImeout !!! Yes because the OLEDBTimeout was 30 sec the deletion jobs were timing out.(OnPremise)
There can be other reasons and possible solutions, feel free to write to me to discuss more ideas you may have.