What is the new Azure Digital Twins? How is it different from the original version (2018)?

The first public preview of Azure Digital Twins was released in October of 2018. While the core concepts from that original version have carried through to the current service, many of the interfaces and implementation details have changed to make the service more flexible and accessible. These changes were motivated by customer feedback.


In light of the new service's expanded capabilities, the original Azure Digital Twins service has been retired. As of January 2021, its APIs and associated data are no longer available.

If you used the first version of Azure Digital Twins during the first public preview, use the information and best practices in this article to learn how to work with the current service, and take advantage of its features.

Differences by topic

The chart below provides a side-by-side view of concepts that have changed between the original version of the service and the current service.

Topic In original version In current version
More flexible
The original release was designed around smart spaces, so it came with a built-in vocabulary for buildings. The current Azure Digital Twins is domain-agnostic. You can define your own custom vocabulary and custom models for your solution, to represent more kinds of environments in more flexible ways.

Learn more in Custom models.
More flexible
The original release supported a tree data structure, tailored to smart spaces. Digital twins were connected with hierarchical relationships. With the current release, your digital twins can be connected into arbitrary graph topologies, organized however you want. This freedom gives you more flexibility to express the complex relationships of the real world.

Learn more in Digital twins and the twin graph.
Richer, more flexible
In the original release, logic for processing events and telemetry was defined in JavaScript user-defined functions (UDFs). Debugging with UDFs was limited. The current release has an open compute model: you provide custom logic by attaching external compute resources like Azure Functions. This functionality lets you use a programming language of your choice, access custom code libraries without restriction, and take advantage of development and debugging resources that the external service may have.

To see an end-to-end scenario driven by data flow through Azure functions, see Connect an end-to-end solution.
Device management with IoT Hub
More accessible
The original release managed devices with an instance of IoT Hub that was internal to the Azure Digital Twins service. This integrated hub wasn't fully accessible to developers. In the current release, you "bring your own" IoT hub, by attaching an independently created IoT Hub instance (along with any devices it already manages). This architecture gives you full access to IoT Hub's capabilities and puts you in control of device management.

Learn more in Ingest telemetry from IoT Hub.
More standard
The original release had pre-defined roles that you could use to manage access to your instance. The current release integrates with the same Azure role-based access control (Azure RBAC) back-end service that other Azure services use. This type of integration may make it simpler to authenticate between other Azure services in your solution, like IoT Hub, Azure Functions, Event Grid, and more.
With RBAC, you can still use pre-defined roles, or you can build and configure custom roles.

Learn more in Security for Azure Digital Twins solutions.
The original release had scale limitations for devices, messages, graphs, and scale units. Only one instance of Azure Digital Twins was supported per subscription. The current release relies on a new architecture with improved scalability, and has greater compute power. It also supports 10 instances per region, per subscription.

See Azure Digital Twins service limits for details of the limits in the current release.

Service limits

For a list of Azure Digital Twins limits, see Azure Digital Twins service limits.

Next steps