Skip to main content

Updates in ServiceControl 4.13

ServiceControl is the nerve center of your distributed system, storing the data and providing the APIs that allow ServicePulse and ServiceInsight to function.

In ServiceControl 4.13, we’ve made updates that make saga auditing more useful, provide better support for Azure Service Bus, simplify license management, and make it easier to keep ServiceControl up to date.

Saga audit processing

In the new version, we’ve scaled out saga audit processing so that you can use saga audits even in production.

Saga Audit is an NServiceBus plugin that greatly enhances the business process development and troubleshooting. When enabled in an endpoint with a saga, it allows ServiceInsight to visualize the Saga data changes as the process progresses, resulting in diagrams like this:

Saga audit diagram in ServiceInsight

These diagrams make developing and debugging sagas much more powerful because you can execute the code and then see exactly what happened at each step, including the incoming messages, the resulting outgoing messages, and how the stored saga data changed as a result.

Until now the Saga Audit data could only be processed by the primary ServiceControl instance, the same one that handles the recoverability. As it adds significant load, we discouraged the usage of the Saga Audit plugin in production.

Now, the Audit instances of ServiceControl can process the Saga Audit data too, and these can be scaled out. The Saga Audit plugin has to be configured to send the data to the same queue as used for auditing. If needed, the audit processing can be scaled out by adding more Audit instances which means from now on the Saga Audit plugin can also be used in production.

When enabling saga audits in an existing system make sure to provision enough resources as the Saga Audit plugin sends one additional message for each message processed by a saga.

Azure Service Bus topic name

We’ve made it possible for some customers using Azure Service Bus to subscribe to useful integration events published by ServiceControl.

Under the hood, ServiceControl uses the publish/subscribe pattern just like NServiceBus endpoints. When using Azure Service Bus as the transport, a topic (named bundle-1 by default) is used for these pub/sub operations.

NServiceBus with the Azure Service Bus transport provides an API to rename this topic for customers that have strict naming conventions in their environments. For instance, a customer might need the topic to be called CompanyName.Department.ProjectName.PubSub, or something to that effect.

This topic is shared among all endpoints, including ServiceControl, which can publish integration events when messages fail processing, when custom checks are triggered, or when endpoint heartbeats are missed. To support these features, ServiceControl must be using the correct topic name as well.

With the latest version of ServiceControl, you can specify a topic name by adding TopicName=<topic-bundle-name> in the connection string.

Connection String in ServiceControl Management Utility

You didn’t really think we’d show you our entire Azure Service Bus connection string, did you? 😉

With this change, it’s now possible for the customers with strict naming convention requirements to subscribe to the notification events ServiceControl publishes. From these subscribers, they can send emails to monitoring groups, ping a Slack channel, or do anything else in code that is necessary to notify someone in the organization that the system may be unhealthy and in need of administrative action.

Simpler license management

When we first released ServiceControl, customers had a lot of options for where to store their license files including multiple locations on disk and in various parts of the Windows registry. Since we created the ServiceControl Management utility, customers have been able to use it to manage their ServiceControl license, and it stored the license in the most common locations that ServiceControl instances would look for it.

This could lead to situations where ServiceControl Management and ServiceControl instances were looking at different licensing information, especially if they run under different credentials. ServiceControl instances would report via their API to ServicePulse that their licenses had expired, but ServiceControl Management would report that the license was current and valid (and vice versa).

We simplified this by reducing the number of locations that ServiceControl looks for licensing information to just one. Now, when you use ServiceControl Management to manage your ServiceControl license, it will be installed into a subfolder of the CommonApplicationData folder. Every ServiceControl instance will only check this location for its license. ServiceControl Management and ServiceControl instances are always looking at the same license data.

ServiceControl Management has been storing license files here since November 2017, so your license file is already installed there. Everything should Just Work™.

Keeping up to date

ServiceControl is constantly updated with new features and improvements and we want to make sure that you know when they’re ready for you. While we already post announcements about every release in our discussion group, we wanted to make it even easier for you to see when ServiceControl gets updated.

At startup, ServiceControl Management will check to see if there’s a newer version available and if there is it will prompt you to download it.

Update Check Link in ServiceControl Management Utility

Of course, you won’t see it until we release the next cool thing. Stay tuned for it.


We’re constantly improving NServiceBus to bring you more features and greater stability. Unlike NServiceBus, we only support the latest minor release of any supported major version, so we encourage you to upgrade to ServiceControl 4.13 at your next available upgrade window.

You can always get the latest version of ServiceControl from our downloads page.

Share on Twitter

About the authors

Mike Minutillo

Mike Minutillo is an API artist at Particular Software who is always on the lookout for a cleaner way of expressing coding concepts.

Szymon Pobiega

Szymon works is an engineer at Particular Software who specializes in Domain-Driven Design and asynchronous messaging.

Don't miss a thing. Sign up today and we'll send you an email when new posts come out.
Thank you for subscribing. We'll be in touch soon.
We collect and use this information in accordance with our privacy policy.
Need help getting started?