Ellipse Gradient for Header

Microsoft Power Apps Integration Guide

Microsoft Power Apps integrates with enterprise systems primarily through Microsoft Dataverse, its OData v4 Web API, OAuth 2.0, registered webhooks, and related Microsoft platform services.

Microsoft Power Apps integration options at a glance

Microsoft Power Apps integrations commonly use the Microsoft Dataverse Web API, an OData v4 REST API for querying and modifying tables, relationships, metadata, actions, and functions. Microsoft Entra ID OAuth 2.0 provides delegated or application-based authentication, including service-principal patterns for scheduled workflows. Dataverse also supports registered webhook notifications for selected table events, batch and bulk operations, and APIs for file columns, images, and annotation attachments. The read-only TDS endpoint can support selected SQL-style analytics scenarios but is not a transactional write interface. Martini can consume these endpoints, receive supported notifications, map Dataverse data, expose controlled APIs, and orchestrate synchronization workflows.

Integration pointSupported by Microsoft Power Apps?Common use casesHow Martini supports it
Dataverse Web APIYesThe OData v4 REST API supports querying and modifying tables, relationships, metadata, actions, and functions in a Dataverse environment.Martini can consume the REST endpoints in workflows, follow continuation links, transform JSON responses, and expose APIs for downstream consumers.
Webhooks and outbound callbacksLimitedDataverse can send HTTP POST notifications for registered events on selected tables and operations. It is not a universal event stream for all Power Apps activity.Martini can expose an HTTP API or use a workflow start trigger to validate notifications, retrieve complete rows, and process events asynchronously where appropriate.
Bulk, async, and batch APIsYesOData batch, ExecuteMultiple, selected CreateMultiple, UpdateMultiple, UpsertMultiple, and asynchronous operations can reduce request overhead where supported.Martini can construct batch-oriented workflows, process individual response errors, and choose single-row or bulk operations according to table and operation constraints.
File and attachment APIsYesDataverse supports file columns, image columns, and annotation-based notes or attachments, with different API patterns for each storage model.Martini can retrieve or upload supported binary content, map metadata, and transfer files to external storage or document-management systems.
AuthenticationYesMicrosoft Entra ID OAuth 2.0 supports delegated and application permissions, including service principals associated with Dataverse application users and security roles.Martini can store credentials and environment-specific configuration securely, obtain bearer tokens, and use authenticated REST workflows.
TDS endpoint and SQL-style accessLimitedThe Dataverse TDS endpoint provides read-only SQL-style access for supported querying and analytics scenarios. It is not a general-purpose transactional interface.Martini can use database-oriented integration patterns where appropriate for supported read scenarios, while keeping transactional reads and writes on the Dataverse Web API.
Power Platform administration APIsYesMicrosoft provides APIs for administrative and governance operations involving environments, solutions, flows, and related platform resources.Martini can consume confirmed administration endpoints with separately managed permissions and can isolate governance workflows from business-data synchronization.
SOAP and Organization ServiceLegacyThe older Organization Service uses SDK and .NET service interfaces. New integrations should generally use the Dataverse Web API instead.Martini can consume SOAP services when an explicitly required legacy endpoint is available, but the documented Dataverse REST API is the preferred implementation path.

How Microsoft Power Apps exposes data and business events

Microsoft Power Apps REST APIs

The Dataverse Web API is an OData v4 REST API for reading and writing tables, navigating relationships, accessing metadata, and invoking supported actions and functions. It is the principal general-purpose integration method for Dataverse-backed Power Apps solutions.

Martini implementation pattern

Martini implementation pattern: a workflow authenticates with Microsoft Entra ID, calls the environment-specific Dataverse Web API, follows pagination links, maps JSON responses into a canonical model, applies business rules, and writes to the target system or exposes a controlled Martini API.

Implementation sequence

Authenticate with Microsoft Entra ID OAuth 2.0
Call the environment-specific Dataverse Web API
Shape queries with selected columns and relationships
Follow the @odata.nextLink continuation URL
Map Dataverse logical names and relationships
Apply validation and business rules before writing the result

Microsoft Power Apps webhooks

Dataverse supports registered webhook service endpoints that send HTTP POST notifications for selected table events and operations. Notifications are limited to configured registrations and should not be treated as a complete change feed.

Martini implementation pattern

Martini implementation pattern: expose an authenticated Martini API or workflow start trigger, validate the notification, retrieve the complete Dataverse row when the payload is only a reference, and process the event with idempotency and failure handling.

Implementation sequence

Receive the registered Dataverse webhook notification
Authenticate and validate the incoming payload
Identify the affected table and row
Retrieve the current Dataverse row when required
Apply routing and business rules
Acknowledge the request and record processing status

Microsoft Power Apps batch APIs

Dataverse provides OData batch requests, ExecuteMultiple, selected bulk messages, and asynchronous operations to reduce request overhead. Availability and response behavior vary by table and operation.

Martini implementation pattern

Martini implementation pattern: collect compatible operations, choose a supported batch or bulk method, submit the request, inspect item-level results, and route partial failures for controlled retry without duplicating successful writes.

Implementation sequence

Select a supported batch or bulk operation
Group compatible Dataverse changes
Submit the request through the Web API
Inspect each operation result
Retry only transient or failed items
Record successful and failed identifiers

Microsoft Power Apps file APIs

Dataverse supports file columns, image columns, and annotation-based notes or attachments. A Power Apps solution may also use SharePoint document locations, so the storage model must be confirmed before implementation.

Martini implementation pattern

Martini implementation pattern: retrieve the source row and file metadata, select the correct Dataverse file or attachment endpoint, transfer binary content to the destination, and preserve relationships and duplicate-detection keys.

Implementation sequence

Identify the Dataverse file storage pattern
Retrieve row and file metadata
Download or upload the supported binary content
Map filename, MIME type, and relationship identifiers
Apply duplicate and version checks
Record the transfer result and source reference

Microsoft Power Apps TDS access

The Dataverse TDS endpoint provides read-only SQL-style access for supported analytics and query scenarios. It is not a general transactional integration interface and should not be used as the primary write path.

Martini implementation pattern

Martini implementation pattern: use TDS only for an approved read-oriented scenario, limit the query to required data, and keep business-data writes and transactional synchronization on the Dataverse Web API.

Implementation sequence

Confirm that the scenario is read-only and TDS-supported
Configure the environment-specific database access
Query only the required reporting data
Transform the result into the target model
Write through an approved downstream interface
Keep transactional Dataverse writes on the Web API

Common Microsoft Power Apps integration patterns

Pattern 1: Synchronize Dataverse customers to a CRM

When to use this pattern

Use this pattern when Accounts, Contacts, Leads, or Opportunities in a Power Apps solution must remain aligned with Dynamics 365 Sales, Salesforce, or another customer platform. It is suitable for scheduled synchronization or selected webhook-driven changes.

Integration direction
Microsoft Power Apps
Martini
Salesforce
Example Mapping
Microsoft Power Apps FieldCanonical FieldTarget Field
accountidcustomer.sourceIdAccount.ExternalId
namecustomer.nameAccount.Name
primarycontactidcustomer.primaryContactIdAccount.PrimaryContactExternalId
opportunityestimatedvaluedeal.amountOpportunity.Amount
Martini implementation pattern

A Martini workflow authenticates to Dataverse, retrieves shaped and paginated data, maps logical names and lookup references into a canonical customer model, applies deduplication and ownership rules, and performs an idempotent target upsert. It stores source identifiers and timestamps so transient failures can be retried without creating duplicates.

Martini capabilities used
  • scheduled workflows
  • API consumption
  • pagination handling
  • data mapping
  • business rules
  • idempotent writes
  • error handling

Pattern 2: Process Dataverse webhook events

When to use this pattern

Use this pattern when selected Account, Case, Lead, or custom-table changes need near-real-time downstream processing. The design must account for limited event coverage and notifications that may contain only a row reference.

Integration direction
Microsoft Power Apps
Martini
ServiceNow
Example Mapping
Microsoft Power Apps FieldCanonical FieldTarget Field
incidentidserviceCase.sourceIdincident.correlation_id
titleserviceCase.subjectincident.short_description
customeridserviceCase.customerIdincident.caller_id
prioritycodeserviceCase.priorityincident.urgency
Martini implementation pattern

A Martini API receives the registered Dataverse webhook notification, validates the sender and payload, retrieves the current row when necessary, and maps it to the downstream service model. Business rules determine whether to create, update, or ignore the target record; duplicate event keys and transient downstream errors are recorded for safe retry.

Martini capabilities used
  • API exposure
  • webhook consumption
  • workflow orchestration
  • data enrichment
  • validation
  • business rules
  • retry handling

Pattern 3: Load external transactions into Dataverse

When to use this pattern

Use this pattern when an ERP, commerce platform, billing application, or partner API must populate Accounts, Contacts, Opportunities, or custom Dataverse tables used by a Power Apps application.

Integration direction
SAP S/4HANA
Martini
Microsoft Power Apps
Example Mapping
Microsoft Power Apps FieldCanonical FieldTarget Field
BusinessPartnercustomer.externalIdaccountnumber
CustomerNamecustomer.namename
OrderNumberorder.externalIdnew_ordernumber
NetValueorder.totalAmountnew_totalamount
Martini implementation pattern

Martini receives or retrieves the source payload, validates required Dataverse columns, choice values, lookup references, and ownership constraints, then transforms the source model into Dataverse logical fields. The workflow uses alternate keys or source references for upsert behavior and routes rejected records to an operational error path.

Martini capabilities used
  • API consumption
  • workflow orchestration
  • data validation
  • mapping and transformation
  • choice and lookup handling
  • upsert logic
  • error handling

Pattern 4: Synchronize Dataverse files and attachments

When to use this pattern

Use this pattern when a Power Apps application stores documents in Dataverse file columns, image columns, annotations, or related SharePoint locations and those documents must be copied to another repository.

Integration direction
Microsoft Power Apps
Martini
SharePoint
Example Mapping
Microsoft Power Apps FieldCanonical FieldTarget Field
accountiddocument.parentIdListItem.ParentAccountId
filenamedocument.fileNameFile.Name
mimetypedocument.contentTypeFile.ContentType
modifiedondocument.modifiedAtFile.ModifiedAt
Martini implementation pattern

A Martini workflow identifies the actual storage pattern, retrieves the binary content and associated row metadata, and writes the document to the target system. It preserves parent relationships and source identifiers, compares version or update timestamps, and retries transfer failures without duplicating completed files.

Martini capabilities used
  • workflow orchestration
  • file transfer
  • metadata mapping
  • duplicate detection
  • business rules
  • retry handling
  • monitoring

Applications commonly integrated with Microsoft Power Apps

Power Apps solutions commonly exchange data with Microsoft and enterprise applications through Dataverse, application APIs, and HTTP endpoints. Martini can orchestrate these relationships without requiring a dedicated Power Apps connector, while the exact objects and direction depend on the implementation.

Application Scenario Direction Martini Pattern
Dynamics 365 Sales Synchronize Accounts, Contacts, Leads, Opportunities, and activities between custom Power Apps applications and sales processes. Microsoft Power Apps → Martini → Dynamics 365 Sales Consume the Dataverse Web API and the relevant Dynamics 365 API, normalize identifiers and relationship references, apply ownership and validation rules, and use idempotent upserts with retry handling.
Dynamics 365 Customer Service Exchange Cases, Contacts, Accounts, and activities with Power Apps solutions supporting customer service workflows. Microsoft Power Apps → Martini → Dynamics 365 Customer Service Trigger a workflow from a schedule or supported Dataverse webhook, retrieve complete rows when notifications are partial, map service data, and route failures for retry or operational review.
Microsoft Teams Make Dataverse-backed application data, approvals, notifications, and collaboration processes available alongside Teams work. Microsoft Power Apps → Martini → Microsoft Teams Expose a controlled Martini API or consume supported Teams and Microsoft endpoints, transform Dataverse payloads into collaboration actions, and enforce authentication and business rules before delivery.
SharePoint Synchronize documents and collaboration content associated with Power Apps records, including solutions that use SharePoint document locations. Microsoft Power Apps → Martini → SharePoint Determine whether content is stored in a Dataverse file column, annotation attachment, or SharePoint location, then transfer binary content and preserve row identifiers, filenames, MIME types, and timestamps.
Power BI Make Dataverse operational data available for reporting and combine Power Apps information with enterprise analytics. Microsoft Power Apps → Martini → Power BI Use scheduled or event-driven workflows to extract shaped Dataverse data, apply reporting-specific transformations, and deliver it through the approved Power BI or intermediary API path.
Salesforce Synchronize customer, sales, or service information between Salesforce and Microsoft-based applications built on Power Apps. Salesforce → Martini → Microsoft Power Apps Consume both systems' APIs, establish a canonical customer and sales model, map external identifiers to Dataverse alternate keys or reference columns, and coordinate bidirectional conflict and retry handling.
SAP S/4HANA Exchange enterprise data such as customers, products, orders, and invoices with Power Apps front ends and Dataverse workflows. SAP S/4HANA → Martini → Microsoft Power Apps Orchestrate SAP and Dataverse API calls, validate required columns and lookup references, transform enterprise payloads into the target table model, and use durable identifiers for replay-safe writes.
ServiceNow Synchronize service requests, incidents, users, or approvals with Power Apps applications and Dataverse processes. ServiceNow → Martini → Microsoft Power Apps Consume the ServiceNow and Dataverse APIs, route changes through validation and mapping workflows, preserve source identifiers, and handle duplicate detection and transient failures explicitly.

How to build a Microsoft Power Apps integration in Martini

Objective

Establish environment-specific Dataverse access using Microsoft Entra ID OAuth 2.0 and a least-privilege application user or delegated authorization model.

Instructions in Martini

  • Register or identify the Microsoft Entra application.
  • Configure the Dataverse application user and required security roles.
  • Store client credentials, tokens, and environment URLs as secure configuration.
  • Separate development, test, and production credentials.

Objective

Select a schedule, API request, or supported Dataverse webhook based on the required latency and the event coverage available for the target table and operation.

Instructions in Martini

  • Use a scheduler for periodic synchronization.
  • Expose a Martini API or workflow start trigger for supported webhook notifications.
  • Document whether the source is a complete event feed or only a selected notification mechanism.
  • Define an idempotency key for every trigger path.

Objective

Read Dataverse tables, relationships, metadata, or files through the appropriate endpoint and retrieve complete datasets without assuming a single response contains all results.

Instructions in Martini

  • Use $select and selective $expand clauses.
  • Follow @odata.nextLink until pagination is complete.
  • Retrieve metadata for custom table and column logical names when required.
  • Use the correct file, image, annotation, or SharePoint path for documents.

Objective

Coordinate source calls, enrichment, validation, target calls, and response handling in a maintainable Martini workflow.

Instructions in Martini

  • Separate retrieval, transformation, business rules, and target writes into clear workflow stages.
  • Use reusable services or APIs for common authentication and mapping logic.
  • Choose single-row or batch operations according to actual table support.
  • Keep administration API operations separate from business-data synchronization.

Objective

Convert Dataverse JSON, lookup references, choices, activities, and binary metadata into the target system's canonical model.

Instructions in Martini

  • Map logical names rather than relying on display labels.
  • Normalize identifiers, dates, amounts, and relationship references.
  • Translate choice values and owner or business-unit identifiers explicitly.
  • Preserve Dataverse GUIDs or alternate keys for traceability.

Objective

Validate required columns and enforce business decisions before creating, updating, ignoring, or routing records.

Instructions in Martini

  • Validate required fields, lookup references, ownership, and choice values.
  • Apply duplicate detection and source-of-truth rules.
  • Reject or quarantine invalid payloads with actionable error details.
  • Use conditional routing for Accounts, Cases, Opportunities, files, or custom tables.

Common Microsoft Power Apps data objects used in integrations

ObjectTypical UseCommon target systemsMartini handling
AccountsOrganizations or companies used in customer, sales, and service processes.Dynamics 365 Sales, Dynamics 365 Customer Service, Salesforce, SAP S/4HANA, reporting platformsMartini retrieves Accounts through the Dataverse Web API, uses logical names and stable identifiers, maps relationships and required columns, and performs idempotent upserts.
ContactsIndividual people associated with Accounts or other business relationships.Dynamics 365 Sales, Dynamics 365 Customer Service, Salesforce, service platformsMartini maps contact identifiers, account lookups, communication fields, ownership, and consent or validation rules before writing to a target system.
LeadsProspective customers or unqualified business opportunities.Dynamics 365 Sales, Salesforce, marketing platforms, data warehousesMartini applies qualification and deduplication rules, translates choice values, and routes qualified or updated Leads to downstream sales processes.
OpportunitiesPotential sales transactions and associated revenue processes.Dynamics 365 Sales, Salesforce, ERP and finance platforms, analytics platformsMartini maps stages, amounts, close dates, account references, and owners while applying business rules before synchronization or downstream enrichment.
CasesCustomer service issues, support requests, and related service activity.Dynamics 365 Customer Service, ServiceNow, support platforms, reporting systemsMartini validates priority, status, customer lookups, and ownership, then routes Cases through event-driven or scheduled workflows with retry handling.
ActivitiesTasks, appointments, phone calls, and other interactions associated with business processes.Dynamics 365 Sales, Dynamics 365 Customer Service, Microsoft Teams, analytics platformsMartini handles activity type-specific fields and relationships, normalizes dates and participants, and preserves Dataverse row identifiers for replay-safe synchronization.

Authentication and security considerations

Microsoft Entra ID and Dataverse access

Dataverse Web API access uses Microsoft Entra ID OAuth 2.0. Scheduled server-to-server workflows commonly use a confidential client or service principal with client credentials, while interactive applications may use delegated or authorization-code flows.

Application users and roles

An application registration alone does not grant business-data access. The service principal should be configured as a Dataverse application user and assigned only the required security roles, table privileges, and column permissions.

Environment isolation

Store environment-specific URLs, client configuration, and secrets outside workflow logic. Separate development, test, and production identities and permissions, and use secure Martini configuration for credentials and tokens.

  • Use least-privilege Dataverse roles.
  • Protect OAuth client secrets and bearer tokens.
  • Validate inbound webhook requests where the event contract supports sender authentication.
  • Keep administration API permissions separate from business-data permissions.

Operational considerations for Microsoft Power Apps integrations

Pagination and query shaping

Dataverse responses can include an @odata.nextLink continuation URL. Workflows should follow it until all pages are retrieved and should use targeted $select and selective $expand clauses to control response size.

Throttling and retries

Microsoft services can throttle requests or return transient failures. Use controlled backoff, avoid retrying permanent validation errors, and make writes idempotent so replay does not create duplicate Accounts, Cases, files, or custom-table rows.

Schema and metadata changes

Custom table logical names, columns, choice values, relationships, and required fields are environment-specific. Discover and maintain metadata-based mappings, and coordinate Martini deployments with Power Apps solution changes.

Files and event delivery

File columns, image columns, annotation attachments, and SharePoint document locations use different integration paths. Webhook notifications may contain limited information and may require a follow-up GET request. Test batch operations against the actual table because support and error semantics can vary.

  • Track source identifiers and synchronization timestamps.
  • Test pagination, bulk limits, lookup references, and choice values in each environment.
  • Log correlation identifiers and item-level batch failures.
  • Monitor webhook acknowledgements and downstream processing separately.

Why use Martini instead of scripts or point-to-point integrations?

Centralized orchestration

Scripts often combine authentication, pagination, mapping, retries, and business rules in code that is difficult to govern across environments. Martini provides a workflow-oriented runtime for coordinating Dataverse calls, target APIs, files, and operational handling.

Reusable integration assets

Martini can expose controlled APIs, consume REST endpoints, reuse authentication and transformation logic, and maintain mappings as deployable integration assets. This supports consistent behavior across Power Apps environments and downstream systems.

Operational reliability

Instead of relying on point-to-point write logic, workflows can apply validation, idempotency, retry policies, error routing, logging, and monitoring around Dataverse operations. This is particularly useful for paginated synchronization, selected webhook events, and file transfers.

  • Keep vendor-specific API calls separate from canonical mappings.
  • Apply business rules consistently across inbound and outbound flows.
  • Support scheduled, API-led, and event-driven patterns in one platform.
  • Extend workflows with custom logic when the Dataverse implementation requires it.

Frequently asked questions

How can Microsoft Power Apps be integrated with enterprise systems?

Power Apps integrations commonly use Microsoft Dataverse's OData v4 Web API with Microsoft Entra ID OAuth 2.0. Dataverse also provides registered webhook notifications for selected events, batch and bulk operations, file and attachment APIs, and a read-only TDS endpoint for supported analytics scenarios. The appropriate method depends on the Power Apps solution's Dataverse tables and storage design.

Can Martini integrate with Microsoft Power Apps?

Yes. Martini can integrate with Microsoft Power Apps through the Microsoft Dataverse Web API, OAuth 2.0, supported Dataverse webhook notifications, batch operations, and file or attachment endpoints. Martini can consume and expose APIs, orchestrate workflows, transform Dataverse data, and synchronize it with other systems.

Do I need a connector to integrate Microsoft Power Apps with Martini?

No dedicated Microsoft Power Apps connector is required. Martini can use Microsoft's confirmed native integration mechanisms, primarily the Dataverse Web API and Microsoft Entra ID OAuth 2.0, with supported webhooks, file endpoints, or other HTTP APIs where applicable.

Is there any extra Lonti cost to integrate Microsoft Power Apps with Martini?

Lonti does not charge an additional per-connector or per-vendor fee to integrate Microsoft Power Apps. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from Microsoft, infrastructure providers, or other third-party systems depending on licensing, usage, and deployment model.

Which Microsoft Power Apps integration method should be used for new business-data integrations?

The Dataverse Web API is the primary documented method for transactional business-data integrations. It supports OData queries, relationships, metadata, actions, functions, and row changes. Batch or bulk operations can reduce overhead where supported, while the TDS endpoint should remain limited to approved read-only scenarios.

Are events or webhooks available for Microsoft Power Apps?

Dataverse supports registered webhook service endpoints for selected table events and operations. Coverage, payload detail, registration requirements, and delivery behavior depend on the specific event mechanism. Martini can receive these notifications through an exposed API or workflow trigger, but they should not be treated as a universal Power Apps change stream.

How does Martini synchronize and transform Dataverse data?

Martini can schedule Dataverse Web API queries, follow @odata.nextLink pagination, retrieve metadata, and map logical table and column names into a canonical model. Workflows can transform JSON, resolve lookups and choices, apply validation and business rules, and write to target systems using stable identifiers and idempotent upsert strategies.

How are authentication, errors, retries, and duplicates handled?

A common server-to-server design uses Microsoft Entra ID client credentials, a Dataverse application user, and narrowly scoped security roles. Martini can store credentials securely, validate payloads, apply controlled retries with backoff for transient failures, log processing outcomes, and use Dataverse GUIDs, alternate keys, or external identifiers to make replay safe. Martini can also expose an API façade that centralizes validation and controlled access to Dataverse operations.