As an application maintenance integrator, I’m exploring ways to streamline data access across Microsoft 365 services. One feature that would be incredibly useful is the ability to query the Microsoft Graph API directly from EasyMorph.
This would open up powerful possibilities for automating tasks and retrieving data from Outlook, Teams, SharePoint, OneDrive, and Azure AD — all within EasyMorph workflows.
Is native support for Microsoft Graph something that’s being considered for future development?
Alternatively, has anyone successfully implemented a workaround using HTTP requests or external scripting to interact with Microsoft Graph from EasyMorph?
Thanks in advance for your insights and suggestions!
Thank you MAttf,
The OdData Connector allows me to make certain queries correctly.
Even if it doesn't work for all entities.
And for the rest, you must be right and it's up to me to see how to set up the REST api on our tenant in order to be able to query it.
If you've already done this, I'd be grateful for any advice, but I'm not sure where to start.
Just for information: what kind of query you'll run in Microsoft Graph? I'm curious to know if there are some kind of checks I can implement in my company.
We currently use powershell scripts to retrieve logs from the tenant (SignInLogs) in csv format.
and then save them in a database for analysis.
this is not effective as the : https://graph.microsoft.com/v1.0/auditLogs/signIns
should return what I need!
This is just a small example of the possibilities it will give me when I have Easymorph to interface with...
Thanks for the reply, we do the same thing through a Powershell and Easymorph, searching for succeeded logins attemp in geographical zone/IP/Network not trusted.
I generate an Excel file with the records that have to be checked and in a column we inserted an URL to whitelist the specified record (or the specified IP address), using an Easymorph project exposed as an API.
i just found the solution 1.
Creating an application in Azure AD
Go to the Azure portal: https://portal.azure.com
Go to Azure Active Directory > Application Registrations.
Click on New Registration.
Give the application a name (e.g. EasyMorphGraphConnector).
Choose the account type (often "accounts in this organisational directory").
Define a redirection URL if necessary (for interactive feeds).
Click Save.
2. Generate a secret key (secret client)
In the application file, go to Certificates and secrets.
Click on New client secret.
Give a description and a validity period.
Copy the secret value immediately (it will not be visible afterwards).
3. Retrieve the identifiers
Client ID: in the application file.
Tenant ID: in Azure Active Directory > Overview.
4. Configure API authorisations
Go to API Authorisations > Add an authorisation > Microsoft Graph.
Choose Application or Delegated depending on your use.
For example, add :
User.Read.All
Directory.Read.All
AuditLog.Read.All
Click on Grant administrator consent.
EasyMorph workflow steps 1 Calculate the reference date
Use the "Calculate date" action to obtain the date three months before today :
Format: yyyy-MM-ddTHH:mm:ssZ
Example: 2025-05-25T00:00:00Z 2. Obtain the OAuth token (API key)
Use the "Web Request" action with the following parameters:
Method: POST
URL:
Headers :
Content-Type: application/x-www-form-urlencoded
Body (form) :
grant_type=client_credentials
&client_id={your_client_id}
&client_secret={your_client_secret}
&scope=https://graph.microsoft.com/.default
Output: store the access_token field in an EasyMorph variable.
3. Building the OData request
Use another "Web Request" action:
Authorization: Bearer {access_token}
Content-Type: application/json
Output: retrieve the JSON data and transform it into an array using the "Parse JSON" action.
Hello and thank you Dimitry,
However, I have another question for you,
The following microsoft graph request works correctly, https://graph.microsoft.com/v1.0/auditLogs/signIns
However, I can't get a table containing more than 1000 records in easymorph in an elegant and/or efficient way.
In fact, these queries return the first thousand records, with a field @odata.nextLink field containing the url containing the query to obtain the next 1000 records, and so on until @odata.nextLink is empty ... .
I know the iterate functions, but in this particular case, I can't see how to go about it properly. Have you ever come across this type of problem and how did you resolve it, thanking you in advance for your help, as I think the case is going to become more widespread for me.
I haven't found anything on the forum .