Dataverse API Access — Admin Actions
Required
Purpose
We are building an Azure Function that consumes external API data and inserts it into
Dataverse tables. To securely authenticate and interact with the Dataverse Web API, we
require:
- An App Registration in Azure AD with appropriate permissions
- A matching Application User setup in Dataverse
1. Grant Admin Consent for Dataverse App Registration
Please follow these steps to grant admin consent so our Azure Function can access the
Dataverse Web API:
Step-by-Step Instructions
• Go to Azure Portal → [Link]
• Navigate to Azure Active Directory from the left menu
• Click on 'App registrations'
• Search for the app which is “DataverseAPIApp”
• Click on the app name to view its overview
• In the left menu, click 'API permissions'
• Verify that you see:
- Dynamics CRM
- Application - user_impersonation
• Click 'Grant admin consent for Nike' and confirm the popup dialog
This gives the app permission to act on behalf of the organization when accessing
Dataverse.
Why This Is Needed
Without admin consent, even though the permission is listed, Dataverse will reject API calls
from our Azure Function with a 403 Forbidden or insufficient privileges error.
2. Set Up Application User in Power Platform for Dataverse Access
This connects the Azure AD App Registration to Microsoft Dataverse by creating an
Application User.
Purpose
To allow the Azure AD App (DataverseAPIApp) to securely act as a Dataverse user with
access to necessary tables.
Steps to Create Application User
• Open Power Platform Admin Center → [Link]
• Under Environments, click the relevant environment which is “XebiaPoC”
• Navigate to: Settings → Users + permissions → Application users
• Click '+ New app user'
• Click 'Add an app', search and select your app which is “DataverseAPIApp”, then click
'Add'
• Click '+ Add a role', select 'System Administrator' (for full access), then click 'Save'
Why This Is Required
Reason Explanation
Identity Mapping Dataverse must map the Azure AD app to a
Dataverse user
Role-Based Access Defines what the app can do (read, write,
update specific tables)
API Access Without this setup, all API calls will be
rejected