1. What Are Elastic Tables?

Elastic tables are a special type of Dataverse table optimized for massive data ingestion and high-volume, time-series, or log-style workloads.

They use Azure Cosmos DB under the hood, allowing horizontal scalability beyond the limits of traditional Dataverse storage.

πŸ”Ή Think of them as Dataverse tables designed for IoT, telemetry, or event data β€” built on Cosmos DB, with native Dataverse integration.


2. Key Characteristics

FeatureDescription
PurposeStore high-volume, append-only data (e.g., logs, telemetry, events)
Storage BackendAzure Cosmos DB (NoSQL, partitioned)
ScalabilityScales horizontally β€” billions of rows possible
Data AccessVia Dataverse API (Web API, SDK), TDS endpoint, or Power BI
CostBilled separately as elastic data storage (outside standard Dataverse capacity)
LatencyNear real-time read/write (~milliseconds)
RetentionConfigurable retention policies to auto-delete old records
LimitationsAppend-only, no relationships, no joins, limited indexing

3. Architecture Overview

+—————————+

| Dataverse (SQL Storage)   |

|   – Standard Tables       |

|   – Relational Data       |

+—————————+

           β”‚

           β–Ό

+—————————+

| Elastic Tables            |

|   – Cosmos DB Backend     |

|   – Append-only records   |

|   – Partitioned storage   |

+—————————+

           β”‚

           β–Ό

+—————————+

| Power BI / Azure Synapse  |

|   – Analytics Integration |

+—————————+

Internally:

  • Each elastic table record is stored in a Cosmos DB document.
  • Data is automatically partitioned for performance and scalability.
  • Retention policies help manage lifecycle (e.g., delete after 90 days).

4. Creating Elastic Tables

Elastic tables can be created from the Power Apps Maker Portal or using the Dataverse API.

Steps in Power Apps Maker Portal:

  1. Go to Tables β†’ New Table.
  2. Under Advanced options β†’ Table type, select Elastic.
  3. Define:
  1. Primary Name
  2. Retention Period (e.g., 30, 90, 180 days)
  3. Partition Key (auto-managed)
  1. Save and publish.

Naming Convention Example:

telemetry_eventlog

audit_useractivity

sensor_readings


Using Web API

POST https://yourorg.api.crm.dynamics.com/api/data/v9.2/tables

Content-Type: application/json

{

  “LogicalName”: “new_eventlog”,

  “TableType”: “Elastic”,

  “PrimaryNameAttribute”: “new_name”,

  “RetentionPeriodInDays”: 90

}


5. Data Ingestion

Elastic tables are designed for high-throughput inserts (thousands per second).

Ways to insert data:

  • Dataverse Web API (standard)
  • Power Automate (Create record action)
  • Custom Azure Function using Dataverse SDK
  • Dataverse Plug-in or Logic App

Bulk insert is recommended for performance-critical ingestion (e.g., via HTTP batch requests).


Example Record Insert (Web API)

POST https://org.crm.dynamics.com/api/data/v9.2/new_eventlogs

Content-Type: application/json

{

  “new_name”: “LoginAttempt”,

  “new_timestamp”: “2025-10-08T08:30:00Z”,

Β  “new_userid”: “pradip@onmicrosoft.com”,

  “new_result”: “Success”,

  “new_location”: “India”

}


6. Querying Elastic Tables

Elastic tables support standard Dataverse query methods, but with some restrictions.

πŸ”Ή Supported

  • RetrieveSingle
  • RetrieveMultiple (filter, select, orderby)
  • Power BI TDS Endpoint
  • Dataverse Search

πŸ”Έ Not Supported

  • Relationships (no lookup fields)
  • Joins across tables
  • Advanced FetchXML joins
  • Server-side business logic (Workflows, Plugins)

Example Query (OData)

GET https://org.crm.dynamics.com/api/data/v9.2/new_eventlogs?$filter=new_result eq ‘Success’

Example Power BI Connection

Use the Dataverse connector β†’ select the elastic table β†’ DirectQuery mode for near real-time visualization.


7. Retention Policies

To avoid unbounded growth, each elastic table can define an automatic data retention policy.

Retention OptionBehavior
30 daysData auto-deleted after 30 days
90 daysDefault option for telemetry
CustomDefine 7–730 days
No RetentionMust manually purge old data

βš™οΈ Old records are soft-deleted by Cosmos DB TTL policy.


8. Use Cases

Use CaseDescription
IoT Data StorageCollect sensor readings or machine telemetry in near real-time.
System / Audit LogsStore high-volume operational or diagnostic logs.
Application TelemetryCapture custom app metrics or API transactions.
Event ProcessingRecord all CRM webhook or integration events for downstream analytics.
Marketing AnalyticsStore event-level campaign or clickstream data.

9. Integration Patterns

Integration TypeDescription
Power BIReal-time dashboards for telemetry or KPI monitoring
Azure Synapse LinkStream elastic data into Synapse for advanced analytics
Power AutomateTrigger downstream actions on event ingestion
Azure FunctionsBulk insert or purge old records programmatically
Application InsightsWrite logs from CRM plugins into elastic tables for centralized monitoring

10. Security & Access Control

  • Elastic tables use Dataverse security model (table- and field-level access control).
  • Users must have at least Read/Create privileges for the elastic table.
  • Security roles can control visibility and operations like standard tables.

11. Limitations

AreaLimitation
CRUD OperationsAppend-only; updates/deletes limited
RelationshipsNo lookup, no cascade
Business RulesNot supported
Plugins / WorkflowsNot triggered on create/update
SearchBasic only (no relevance search)
IndexingOnly partition and timestamp fields indexed

Elastic tables are not for transactional CRM data β€” use them only for large, non-relational, or time-series datasets.


12. Comparison: Standard vs Elastic Tables

FeatureStandard TableElastic Table
BackendSQL-based Dataverse storageAzure Cosmos DB
Data TypeRelationalNon-relational (document)
VolumeUp to millionsUp to billions
CRUDFullAppend-only
RelationshipsSupportedNot supported
Business LogicPlugins, WorkflowsNone
AnalyticsPower BI, FetchXMLPower BI, TDS
CostCounts toward DB storageSeparate elastic data capacity
Best ForMaster/Transactional dataEvent/Log/Telemetry data

13. Real-World Example

Scenario: IoT sensor data collection for 500 devices sending updates every minute.

  • Create elastic table iot_sensordata
  • Define fields: DeviceId, Temperature, Humidity, Timestamp
  • Retention = 90 days
  • Data ingested via Azure Function β†’ Dataverse Web API
  • Power BI dashboard shows live trend analysis

This allows millions of records daily without impacting CRM transactional performance.


14. Monitoring & Maintenance

  • Use Power Platform Admin Center β†’ Capacity β†’ Elastic Data to monitor usage.
  • Audit ingestion latency and Cosmos RU (request units).
  • Periodically export to Data Lake for archival (if needed).

15. Best Practices Summary

βœ… Use Elastic Tables for high-volume, low-relationship data.
βœ… Always define retention policies to control cost and growth.
βœ… Use Power BI DirectQuery for real-time dashboards.
βœ… Don’t use Elastic Tables for core CRM transactions (Accounts, Contacts, etc.).
βœ… Combine with Azure Functions or IoT Hub for automated ingestion pipelines.
βœ… Monitor capacity consumption and query performance regularly.

Leave a comment

Copyright Β© 2025 Dynamics Services Group