OAuth 2.0 MS Graph Email Connection
Automation has been using basic authentication for Microsoft Exchange Web Service (EWS) until now. Automation users can now access Microsoft Emails using OAuth 2.0 using Microsoft Graph API by creating a new connection or updating an existing connection. And they can use Send and Subscribe Test APIs with Microsoft Graph for testing email flows.
Prerequisite
A prerequisite to authenticating a user using Microsoft Graph API is registering an App for Provar Automation on the ActiveDirectory App Registration to generate the connection properties and grant the necessary access to retrieve the requisite data.
A: Create an OAuth 2.0 MS Graph Connection in Automation
A connection must be created to authenticate the user to integrate with Microsoft Graph.
In the Test Settings, navigate to the Connections tab and click the plus (+) sign icon. The Add New Connection screen is displayed. Give a Connection Name.
In this example, we have given the Connection Name as MS_Graph. And the Connection Type as Microsoft and Microsoft Graph.
The Type field is an authorization assertion type, and it displays two options in the drop-down:
- OAuth 2.0
- Email-As via Client Credentials

Select the OAuth 2.0 option.
The following fields will be pre-populated: OAuth Grant Flow, Authority, Client Assertion Type.
Note: Please refer to your App Configuration on the Microsoft ActiveDirectory App Registry for the correct information.
Enter the values for the required fields; the Tenant ID, Client ID, and Client Secret information will be available for the Provar App configured on the Microsoft ActiveDirectory App Registry as part of the prerequisite.

Note: The Authorise button is enabled only after you have filled these mandatory fields.
We have created a connection, filled in all the mandatory fields, and clicked Authorise.
The MS Graph Authorisation flow will be performed and it will fetch the Access Token from Microsoft.Click the Test Connection button to validate the connection.
There is some validity for these tokens in the Microsoft account. If the Access Token is invalidated, validity has been breached, or the Access Token has expired. The Access Token will stop working, and an error will be displayed to the user.

Note: Since we had Revoked this token, for example, the error message is Revoked; if it would have expired, then the error message would have displayed for Expired.
If some fields are filled incorrectly or if some fields are invalidated, then the corresponding error messages will be displayed. For example, let’s say there is some change in the Client ID field; then the Access Token is invalidated. And you will have to authorize the connection again.
B: Create an Email-As via Client Credentials MS Graph Connection in Automation
An Email-As via Client Credentials connection must be created to perform email testing using the OAuth 2.0 Microsoft Email type.
In the Test Settings, navigate to the Connections tab and click the plus (+) sign icon. The Add New Connection screen is displayed. Give a Connection Name.
In this example, we have given the Connection Name as MS_Graph_Email and the Connection Type as Microsoft and Microsoft Graph.
The Type field is an authorization assertion type, and it displays two options in the drop-down:
- OAuth 2.0
- Email-As via Client Credentials

Select the Email-As via Client Credentials option.
Enter the values for the required fields: Client Credentials Connection and Email.
For the Client Credentials Connection, select the connection created above. Email should be the actual email of the user under test.

After filling out the required fields, make sure to click Test Connection to ensure that valid information has entered.

After testing the Connection, save the Connection and it will appear in the Connections section of Test Settings.

Email Testing Examples:
In your typical test flow where you need to test emails, you either need to send an email from your test case, receive an email triggered by some action in your testing, or both. The following email testing examples describe how to test these actions in Automation.
Sending an Email
In an email testing example, to send an email in a test case, navigate to the Data section of the Test Palette and drag and drop the Send Message test step into your test case.Alternatively, you can drag the email browser into your test case and choose to Send mail from this account.

Populate the parameters as follows:
- Source Connection: The Email Connection from which you wish to send the email
- To, CC and BCC: The direct recipients, CC’s, and BCC’s you wish to include in your email
- Contents: The email body
- Subject: The email subject line
- Signature: The email signature
You can add an attachment by clicking the Parameter icon above (see circled) and populating the attachment path.
Then, save the test case.
Receiving an Email / Subscribing to an Email Connection
To receive an email in a test case, navigate to the Messaging section of the Test Palette and drag and drop the Subscribe test step into your test case.
Alternatively, drag the email browser into your test case and select Subscribe to this mail folder.

Populate the parameters as follows:
- Source Connection: The Email Connection you wish to receive email from / subscribe to.
- Folder, From, Subject: Any filters applied to the emails being read. Leave these blank if you wish to read all emails.
- Subscription Name: The variable that will contain the results of the email(s) read.
- Subscription Scope: This defines to which extent the variable scope (Subscription Name) is valid. By default, it is a “Test Case,” which implies that you can only use the details in that test case. As a user, you can define the value to (Test Run, Test Folder, Group Step, Test Step) per your requirement.
Then, save the test case.
Note: Ensure this Subscribe test step is executed in your test case before the email is triggered in the execution flow.
Receiving an Email After Polling
Use the Wait For test step to receive an email after a defined period. This test step will poll the email account until a given condition is satisfied or the defined wait time has elapsed.
To use the Wait For test step, navigate to the Control section of the Test Palette and drag and drop the Wait For test step into your test case.

Populate the standard Wait For test step parameters.
When populating Condition, note that you can enter a period after the Result variable to access variables such as messageCount (see screenshot above).
Then, save the test case.
If you would like to use this connection to send the ANT Execution Reports over email, please refer to Support for Existing MS OAuth Email Connection.
For more information, check out this course on University of Provar.
- Provar Automation
- System Requirements
- Browser and Driver Recommendations
- Installing Provar Automation
- Updating Provar Automation
- Licensing Provar
- Granting Org Permissions to Provar Automation
- Optimizing Org and Connection Metadata Processing in Provar
- Using Provar Automation
- Understanding Provar’s Use of AI Service for Test Automation
- Provar Automation
- Creating a New Test Project
- Import Test Project from a File
- Import Test Project from a Remote Repository
- Import Test Project from Local Repository
- Commit a Local Test Project to Source Control
- API Testing
- Behavior-Driven Development
- Consolidating Multiple Test Execution Reports
- Creating Test Cases
- Custom Table Mapping
- Functions
- Debugging Tests
- Defining a Namespace Prefix on a Connection
- Defining Proxy Settings
- Environment Management
- Exporting Test Cases into a PDF
- Exporting Test Projects
- Japanese Language Support
- Override Auto-Retry for Test Step
- Customize Browser Driver Location
- Mapping and Executing the Lightning Article Editor in Provar
- Managing Test Steps
- Namespace Org Testing
- NitroX
- Provar Test Builder
- ProvarDX
- Refresh and Recompile
- Reintroduction of CLI License Check
- Reload Org Cache
- Reporting
- Running Tests
- Searching Provar with Find Usages
- Secrets Management and Encryption
- Setup and Teardown Test Cases
- Tags and Service Level Agreements (SLAs)
- Test Cycles
- Test Data Generation
- Test Plans
- Testing Browser – Chrome Headless
- Testing Browser Options
- Tooltip Testing
- Using the Test Palette
- Using Custom APIs
- Callable Tests
- Data-Driven Testing
- Page Objects
- Block Locator Strategies
- Introduction to XPaths
- Creating an XPath
- JavaScript Locator Support
- Label Locator Strategies
- Maintaining Page Objects
- Mapping Non-Salesforce fields
- Page Object Operations
- ProvarX™
- Refresh and Reselect Field Locators in Test Builder
- Using Java Method Annotations for Custom Objects
- Applications Testing
- Database Testing
- Document Testing
- Email Testing
- Email Testing in Automation
- Email Testing Examples
- Gmail Connection in Automation with App Password
- App Configuration for Microsoft Connection in MS Portal for OAuth 2.0
- OAuth 2.0 Microsoft Exchange Email Connection
- Support for Existing MS OAuth Email Connection
- OAuth 2.0 MS Graph Email Connection
- Create a Connection for Office 365 GCC High
- Mobile Testing
- OrchestraCMS Testing
- Salesforce CPQ Testing
- ServiceMax Testing
- Skuid Testing
- Vlocity API Testing
- Webservices Testing
- Provar Manager
- How to Use Provar Manager
- Provar Manager Setup
- Provar Manager Integrations
- Release Management
- Test Management
- Test Operations
- Provar Manager and Provar Automation
- Setting Up a Connection to Provar Manager
- Object Mapping Between Automation and Manager
- How to Upload Test Plans, Test Plan Folders, Test Plan Instances, and Test Cases
- Provar Manager Filters
- Uploading Callable Test Cases in Provar Manager
- Uploading Test Steps in Provar Manager
- How to Know if a File in Automation is Linked in Test Manager
- Test Execution Reporting
- Metadata Coverage with Manager
- Provar Grid
- DevOps
- Introduction to Provar DevOps
- Introduction to Test Scheduling
- Apache Ant
- Configuration for Sending Emails via the Automation Command Line Interface
- Continuous Integration
- AutoRABIT Salesforce DevOps in Provar Test
- Azure DevOps
- Running a Provar CI Task in Azure DevOps Pipelines
- Configuring the Automation secrets password in Microsoft Azure Pipelines
- Parallel Execution in Microsoft Azure Pipelines using Multiple build.xml Files
- Parallel Execution in Microsoft Azure Pipelines using Targets
- Parallel execution in Microsoft Azure Pipelines using Test Plans
- Bitbucket Pipelines
- CircleCI
- Copado
- Docker
- Flosum
- Gearset
- GitHub Actions
- Integrating GitHub Actions CI to Run Automation CI Task
- Remote Trigger in GitHub Actions
- Parameterization using Environment Variables in GitHub Actions
- Parallel Execution in GitHub Actions using Multiple build.xml Files
- Parallel Execution in GitHub Actions using Targets
- Parallel Execution in GitHub Actions using Test Plan
- Parallel Execution in GitHub Actions using Job Matrix
- GitLab Continuous Integration
- Travis CI
- Jenkins
- Execution Environment Security Configuration
- Provar Jenkins Plugin
- Parallel Execution
- Running Provar on Linux
- Reporting
- Salesforce DX
- Git
- Version Control
- Salesforce Testing
- Recommended Practices
- Salesforce Connection Best Practices
- Improve Your Metadata Performance
- Java 21 Upgrade
- Testing Best Practices
- Automation Planning
- Supported Testing Phases
- Provar Naming Standards
- Test Case Design
- Create records via API
- Avoid using static values
- Abort Unused Test Sessions/Runs
- Avoid Metadata performance issues
- Increase auto-retry waits for steps using a global variable
- Create different page objects for different pages
- The Best Ways to Change Callable Test Case Locations
- Working with the .testProject file and .secrets file
- Best practices for the .provarCaches folder
- Best practices for .pageObject files
- Troubleshooting
- How to Use Keytool Command for Importing Certificates
- Installing Provar After Upgrading to macOS Catalina
- Browsers
- Configurations and Permissions
- Connections
- DevOps
- Error Messages
- Provar Manager 3.0 Install Error Resolution
- Provar Manager Test Case Upload Resolution
- Administrator has Blocked Access to Client
- JavascriptException: Javascript Error
- macOS Big Sur Upgrade
- Resolving Failed to Create ChromeDriver Error
- Resolving Jenkins License Missing Error
- Resolving Metadata Timeout Errors
- Test Execution Fails – Firefox Not Installed
- Selenium 4 Upgrade
- Licensing, Installation and Firewalls
- Memory
- Test Builder and Test Cases
- Release Notes