Performance Tuning Webservices in Dynamics 365 Business Central: Migrate Your Integrations off SOAP and Move to OData or API
Dynamics 365 Business Central users will soon be unable to use SOAP web services when making application functionality available to various extern systems and users.
Previously, Microsoft supported three types of web services: API, Simple Object Access Protocol (SOAP), and OData. Web services are a lightweight, industry-standard way to make application functionality available to various external systems and users.
As of the Business Central 2022 Wave 1 release, Microsoft has sent the official warning that SOAP will be deprecated. The capability of exposing UI pages as SOAP endpoints will be removed in a later release.
SOAP has been superseded by OData V4. It's recommended that integrations are migrated to OData V4 as soon as possible.
We recommend discontinuing the use of the SOAP protocol for two main reasons. The first is that OData and API web services are up to 10 times faster than using SOAP. The second is that if you try to use SOAP, whatever you are using it for will fail.
Using Application Insights?
Application Insights is a diagnostic tool you can use to determine why your Dynamics 365 Business Central system is behaving a certain way.
This can include gathering information on extensions, diagnosing a slow-down in processing, or giving you a view of the traffic and data running through your system.
In this scenario, you can use event ID RT0008 to view incoming web service telemetry data. Using the query, in conjunction with Application Insights, can identify the issue.
Read more about Application Insight RT0008 here.
| where timestamp > ago(60d)
| where customDimensions.aadTenantId == 'YOUR AAD ID HERE' and isnotempty( 'YOUR AAD ID HERE')
| where customDimensions.environmentName == 'YOUR ENVIRONMENT NAME HERE' and isnotempty( 'YOUR ENVIRONMENT NAME HERE')
| where customDimensions.alObjectType <> ''
| where customDimensions.eventId == "RT0008"
//| where toupper(customDimensions.category) contains "API" //Change category to filter on the web service category "API", "ODATA", "SOAP"
| extend _processingTimeMS = toreal(totimespan(customDimensions.serverExecutionTime))/10000
["Timestamp"] = timestamp,
["Category"] = toupper(customDimensions.category),
["Endpoint"] = tostring(customDimensions.endpoint),
["Object Type"] = tostring(customDimensions.alObjectType),
["Object No."] = tostring(customDimensions.alObjectId),
["Object Name"] = tostring(customDimensions.alObjectName),
["Processing Time"] = _processingTimeMS,
["Publisher"] = tostring(customDimensions.extensionPublisher),
["Extension Name"] = tostring(customDimensions.extensionName)
| sort by ["Timestamp"] desc
We have a team of Business Central experts ready to assist you! Please get in touch with us if you have any questions.