Integrate with Altus data
Use this article to choose how to read, write, and react to Altus data. It is for developers who integrate with the customer's Microsoft Dataverse environment.
You can use Power Automate, Dataverse plug-ins, Dataverse webhooks, or the Dataverse Web API.
Choose an integration path
Start with the simplest path that meets the requirement:
- Use Power Automate for simple event-driven work in the environment, such as creating records, sending notifications, or calling other APIs.
- Use Dataverse webhooks when you need Dataverse to send server events to an external HTTPS endpoint.
- Use the Dataverse Web API and Altus custom APIs for complex or high-volume integrations, or when an integration service or enterprise service bus must handle orchestration, transformation, and retries.
- Use Dataverse plug-ins when you need to extend server-side behaviour that already runs in the Dataverse event pipeline.
| Path | Typical use | Where to start |
|---|---|---|
| Power Automate | Event-driven flows that use the Microsoft Dataverse connector, such as approvals and notifications | Overview of how to integrate flows with Dataverse |
| Dataverse webhooks | POST requests that deliver Dataverse execution context to an external service | Use webhooks to create external handlers for server events |
| Dataverse Web API and custom APIs | Access Altus data from Dataverse APIs | API Connectivity |
| Dataverse plug-ins | A custom event handler that runs in response to a specific event raised during processing of a Microsoft Dataverse data operation. | Dataverse Plugins |
Confirm table names, custom API names, and permissions in the target environment before you build. Do not assume that every Altus table or custom API is present in every environment. See Discover the Altus data model.
Power Automate
Power Automate cloud flows can start when Altus data changes and can create or update Dataverse rows while a flow runs. Altus uses Power Automate for approvals and for creating items from Power Apps forms, custom buttons, or other flows.
The Microsoft Dataverse connector provides triggers such as When a row is added, modified or deleted and actions such as Add a new row, Update a row, List rows, and Perform an unbound action. Use Perform an unbound action to call an Altus custom API from a flow.
Shipped Altus flows
Altus provides Power Automate flows as templates for customer automation. Copy a shipped flow with Save as before you customise it. If Altus later publishes an update to that flow, the customised copy is deactivated so you can inspect the changes.
See Power Automate Automation for the shipped flows, including proposal approval, resource-request notifications, and timesheet notifications.
Example integration pattern
When an organisation captures ideas outside Altus, a flow can start on create, update, or delete events in a Microsoft 365 source such as a SharePoint list, apply organisation-specific mapping, and write to the Altus Ideas table through a Dataverse connection. See Integrating External Idea Registers with Altus.
Important
Writing to an Altus table can invoke Dataverse plug-ins and business rules. Validate the operation and required fields in a non-production environment before you deploy the flow.
For connector actions, triggers, and throttling, see Microsoft Dataverse connector. For flow association requirements, see Power Automate Flows need Associated Apps applied.
Dataverse webhooks
Dataverse webhooks send server events to an external web application as HTTP POST requests with a JSON payload. Register the webhook and one or more steps with the Plug-in Registration Tool.
Microsoft documents these platform constraints:
- Registered webhooks support port 80 for HTTP and port 443 for HTTPS.
- The service must respond with a
2xxstatus code within 60 seconds. - If the HTTP payload exceeds 256 KB, Dataverse omits parts of the execution context and includes the
x-ms-dynamics-msg-size-exceededheader. - Webhooks scale only as far as the hosted endpoint can handle the messages. Azure Service Bus is the Microsoft option for high-scale queued processing.
- A synchronous webhook failure is returned to the user. An asynchronous failure is recorded as a system job.
See Use webhooks to create external handlers for server events and Register a WebHook.
Dataverse Web API and custom APIs
For unattended or high-volume integrations, connect to the Dataverse Web API with a dedicated application user. Do not use a named user's credentials.
Use the Web API to read and write Altus tables when the operation is a table create, update, or delete.
Follow API Connectivity for authentication, metadata discovery, read and write examples, and connection validation.
Dataverse plug-ins
A Dataverse plug-in is compiled .NET code that runs in the Dataverse event pipeline when a registered step matches a data operation. Plug-ins can cancel an operation, change the data in the current operation, call other Dataverse operations, or pass information to another plug-in in the same pipeline.
Altus ships plug-in assemblies that implement product behaviour. The Plugin Functions documentation describes some of the Altus plug-ins.
Note
Calling Altus plug-ins directly is discouraged because the implementation of those plugins may change in the future.
Prefer a declarative option such as Power Automate, a custom API, or a documented plug-in step before you introduce new server-side code. See Use plug-ins to extend business processes.