xrmverse
Documentation menu

xrmverse compared with Dataverse

← xrmverse documentation

The comparison refers to the product once the roadmap is complete (phases 1–4).

Same as Dataverse

Web API and SDK, metadata, FetchXML/OData, plugins and pipeline, security (roles, BUs, teams, sharing, field and hierarchy security, access teams), managed and unmanaged solutions, auditing, file, image, calculated, rollup and formula columns, currencies, activities and notes, classic workflows, duplicate detection, change tracking, Custom APIs, webhooks, a read-only SQL (TDS) endpoint (with the differences below), existing Model-driven apps.

Works differently

Aspect Dataverse xrmverse
Where it runs Microsoft cloud, multi-tenant Your servers or your cloud, one process per environment
Database Managed Azure SQL, no direct access SQL Server (and PostgreSQL in phase 2), direct access
Identity Entra ID only Entra ID or the server's own identity provider (see Local identity provider)
Power Platform CLI (pac) Signs in with Entra Works with Entra mode; not supported with the local IdP (it hard-codes Microsoft's authorities): use xrmd solution import/export
Scalability and high availability Managed by Microsoft Depend on your infrastructure
Files Managed Azure Blob File system or S3-compatible storage
Bulk messages CreateMultiple / UpdateMultiple are events on standard tables, Upsert / UpsertMultiple are not; all-or-nothing on standard tables, partial success on elastic ones; the pipelines of single and bulk messages merge Same model on standard tables (more tables than Dataverse offers them on); inner execution depth, step order and rank ties are our reading of the docs; steps on *Multiple of an elastic table are refused; Upsert and PATCH as upsert on standard tables; asynchronous payloads and image reads grow with the bulk (see Bulk operations)
Elastic tables Cosmos DB Emulated on SQL: ids stay unique across partitions, writes commit per stage (nested ones join the outer transaction), bulk messages run one pipeline per record with partial success, basic JSON queries with ExecuteCosmosSqlQuery, no solution export yet (see Elastic tables)
UI Microsoft's Unified Interface xrmverse renderer: faithful for the supported Client API, not pixel-identical
Change tracking audit is tracked audit, intersect tables and some system tables cannot be tracked; paging cookie and skip token are xrmverse's own (see Change tracking)
Classic workflows Authored in the designer; XAML run by Windows Workflow Foundation; workflow log; Form-scope business rules; XAML actions on the Web API; custom activities on .NET Framework in a sandbox Imported by solution, or written as YAML with xrmd workflow apply (see Workflow authoring as code); XAML read by xrmverse's own interpreter, which runs the designer's steps and fails explicitly on anything else; no workflowlog, only the job row; Entity-scope business rules only; XAML actions through the SDK and SOAP only; no Pause/Resume; custom activities run on .NET through CoreWF with the workflow SDK you install, in the server process (see Classic workflows)
Duplicate detection Rules are solution components; default rules for some tables; operator "Exact Match (Pick List Label)"; email and recurring bulk jobs; Compound* messages; matchcode length limit Rules are not carried by solutions; no default rules; operator 5 is refused; no email, no recurrence, bulk jobs stop at 5000 duplicaterecord rows; no Compound* messages; match codes are SHA-256 hashes; the import and offline switches are stored and do nothing (see Duplicate detection)
Glossary and synonyms Knowledge source, synonym and glossary tables, used by agents built in Copilot Studio, which need Dataverse search to be on (see Learn); in solutions The same five tables with the Dataverse names and lookups, read by MCP only. Columns left out: appid, appmoduleid, appmoduleuniquename, apptype, connectionreference, knowledgeconfig, knowledgesourceconsumerid, knowledgesourceprofileid, m365appmoduleid, m365appmoduleidsecondary, entity, unstructuredfilesearchentityid, attribute, isattributeenabledforvectorsearch; object type codes are xrmverse's own; not solution components, an import logs a warning (see Glossary and synonyms)
Currencies Names and symbols of System currencies are filled in; precision up to 10 in the column; per-user number formats Name and symbol are required; precision 0 to 4; en-US formatting only; the ISO list and a few error codes are xrmverse's own reading (see Currencies)
Activities and notes Sends email through a mailbox; queues, recurring appointments and email attachments; chunked note attachments SendEmail only changes the email's state until plan 4.1, and only the caller can be the sender; activitypointer is a stored copy; queues, recurrence, templates and email attachments are refused; note bodies in one piece, up to 128 MB (see Activities and notes)
SQL endpoint: sign-in Microsoft Entra only Local identity provider only, with a SQL login (user name and password): the opposite. Entra organizations have no SQL endpoint for now; a token login is refused with error 18456. Users with TOTP are refused, a disabled user or a user without roles cannot connect, and lockout is shared with web sign-in (see SQL endpoint). SSMS "Microsoft Entra MFA" and the Power BI Dataverse connector, which sign in with Entra, are expected not to work: a token login that reaches the endpoint is refused with 18456 (not yet verified with these clients, see the checklist); use the Power BI SQL Server connector
SQL endpoint: SQL A read-only T-SQL subset (see Microsoft's documentation for its limits) The subset the query engine can express: SELECT with TOP, DISTINCT, INNER/LEFT JOIN on a lookup, WHERE, ORDER BY, GROUP BY with the aggregates, sp_executesql. No subqueries, UNION, HAVING, OFFSET, scalar functions in the select list, CAST, CASE, APPLY; anything else is refused with error 40000. SET options are ignored (SET FMTONLY ON is refused) and sys.* views are not available
SQL endpoint: columns Lookup, choice and similar columns with their name and label companions; file, image, multiselect choice, party list and virtual columns are refused Same shape: the id or integer, plus <column>name for the name or label. File, image, multiple-choice, party list and virtual columns give Invalid column name. * leaves out secured columns the user cannot read
SQL endpoint: size and port 5 minute limit; port 1433 or 5558 Results are buffered: at most 50000 rows by default (Tds:MaxRows), never partial, 5 minute limit. One port per organization, which you choose (--tds-port). TLS is required (Encrypt=True); Encrypt=Strict (TDS 8) is not supported
SQL endpoint: plug-ins Reads do not trigger plug-ins Same: no plug-in runs on SQL reads
SQL deadlock and timeout A deadlock victim or a SQL timeout comes back as the SQL error codes 0x80044150 and 0x80044151 (web service error codes) Same codes, HTTP 500, on the Web API, the SOAP endpoint and inside a plug-in's organization service call (the plug-in gets a FaultException<OrganizationServiceFault>, and the transaction is doomed as for any failed nested call). The server never retries by itself: the request was rolled back and pre-validation plug-ins have already run outside the transaction, so a retry would run them twice. The caller retries
Custom API authoring Created in the maker portal, the Plug-in Registration Tool, or by solution; a customizable managed API can be changed; deep insert of the fields Created over the SDK, SOAP, the Web API or xrmd customapi create, one Create per API, parameter and property; no deep insert; no iscustomizable column; a managed API is never changed in place; Delete is refused while a step is registered; the prefix may be that of any existing publisher; the rules follow Learn and are not verified against Dataverse (see Custom APIs)
Webhooks Webhooks and Azure Service Bus and Event Hub endpoints, in solutions; the auth value is encrypted; x-ms-dynamics-organization is the domain name Webhooks only (contract 8), registered per organization, never in a solution; the auth value is stored unencrypted in the organization database and never returned; the header carries the organization name; a failed delivery is 500 0x80040224, and async jobs retry with the queue's backoff (see Webhooks)
Updates, support, compliance Microsoft Whoever runs the installation

Not in xrmverse

Power Automate and the Dataverse connector, canvas apps and custom pages, Business Process Flows, editable grids, the offline mobile app, Copilot and AI Builder in Power Apps, virtual tables, Dataverse search (relevance search, vector search), Power Pages, multiple organizations in one process, position hierarchy.