Note that the feature and functionalities described in this article are available on Release Candidate solutions from the 29th of May, 2026.
The contents of this article are subject to change.
Article published on the 29th of May, 2026.
1. Introduction
The Mail Assistant in WorkPoint 365 is a cloud based automation feature designed to streamline the handling, classification, and processing of e-mail communication within a WorkPoint solution. It enables organizations to move from manual, user-driven e-mail management to fully automated, process-driven handling of incoming and outgoing e-mails.
In traditional scenarios, e-mail management in WorkPoint relies on user interaction—typically through tools such as WorkPoint Express 365 in Outlook—where users are responsible for journaling e-mails, initiating processes, and ensuring that relevant communication is stored correctly. While effective, this approach depends on consistent user behavior and can result in incomplete or inconsistent data capture.
The Mail Assistant addresses this challenge by removing the dependency on end-user actions. Instead, it automatically processes e-mails in the background, ensuring that relevant business communication is captured, structured, and acted upon according to predefined rules and processes.
1.2. Purpose and use cases
The primary purpose of the Mail Assistant is to ensure that e-mails - often a critical part of business processes - are reliably incorporated into the organization’s structured data model in WorkPoint.
Typical use cases include:
- Automated e-mail journaling: Incoming and outgoing e-mails can be automatically stored in the correct case, project, or entity without user involvement.
- Process initiation based on e-mail events: E-mails can trigger WorkPoint Automate processes, such as creating new entities, updating metadata, or initiating workflows.
- Consistent metadata and classification: E-mails are processed according to predefined logic, ensuring consistent tagging, classification, and governance.
- Centralized record keeping: Business-critical communication is no longer stored solely in personal inboxes but becomes part of the shared and governed WorkPoint data structure.
This enables organizations to improve compliance, reduce reliance on user discipline, and ensure that important communication is always available within the relevant business context.
1.3. How the Mail Assistant works
From a technical perspective, the Mail Assistant operates as a cloud based background service that continuously monitors configured mailboxes and processes incoming messages.
At a high level, the workflow can be described as follows:
- Mailbox Monitoring: The Mail Assistant is configured to monitor one or more mailboxes. These may represent shared inboxes, functional mailboxes, or other sources of incoming and outgoing communication.
- Scheduled Processing: The system runs as a scheduled job, periodically scanning for new e-mails. Unlike client-based solutions, this execution is independent of user activity and runs entirely in the background.
- E-mail Evaluation and Routing: Each e-mail is evaluated according to defined configuration and logic. This may include rules for identifying relevant entities, extracting information, or determining which process to execute.
-
Execution of WorkPoint Automate Processes: Instead of simply storing e-mails, the Mail Assistant applies a configured WorkPoint Automate process to each e-mail. This enables advanced automation scenarios such as:
- Creating or updating entities (e.g. cases, projects)
- Assigning metadata
- journalizing information to the correct location
- Background Processing and Logging: All processing is handled by WorkPoint backend services and is logged for traceability and troubleshooting purposes. The execution history provides insight into processed e-mails, execution outcomes, and system activity.
Importantly, the Mail Assistant operates without direct user interaction during processing, differentiating it from client-side tools and ensuring a fully automated and scalable approach to e-mail handling.
The following diagram outlines the Mail Assistant process pipeline:
2. Requirements
2.1. Connections
A connections in the Process Builder is required for the Mail Assistant to function correctly; Connection for WorkPoint Automate steps. This can be set up in the Process Builder by clicking "Connections" in the top panel:
2.2. Access to mailboxes
The Mail Assistant requires Exchange-specific application permissions, which can be limited to specific mailboxes using rule based access control. This ensures that WorkPoint only has these application permissions specifically to the mailboxes that Mail Assistant needs to monitor.
2.2.1. Application Consent
An administrator must grant Mail.ReadWrite and MailboxSettings.ReadWrite application permissions to the WorkPoint.WebAPI enterprise application in Entra ID.
Requirements:
- A Global Administrator (or equivalent) must give consent to the permissions
You can give the WorkPoint.WebAPI enterprise app Mail.ReadWrite and MailboxSettings.ReadWrite Application permissions by running this PowerShell script:
Connect-MgGraph -Scopes "Application.ReadWrite.All","AppRoleAssignment.ReadWrite.All"
$clientId = "e5b0fac6-320d-4ff4-9c53-44dee4348128"
# Get your app (Enterprise App / Service Principal)
$sp = Get-MgServicePrincipal -Filter "appId eq '$clientId'"
# Get Microsoft Graph Service Principal
$graphSp = Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'"
$mailReadWriteRole = $graphSp.AppRoles | Where-Object {
$_.Value -eq "Mail.ReadWrite" -and $_.AllowedMemberTypes -contains "Application"
}
$mailboxSettingsRole = $graphSp.AppRoles | Where-Object {
$_.Value -eq "MailboxSettings.ReadWrite" -and $_.AllowedMemberTypes -contains "Application"
}
# Mail.ReadWrite
New-MgServicePrincipalAppRoleAssignment `
-ServicePrincipalId $sp.Id `
-PrincipalId $sp.Id `
-ResourceId $graphSp.Id `
-AppRoleId $mailReadWriteRole.Id
# MailboxSettings.ReadWrite
New-MgServicePrincipalAppRoleAssignment `
-ServicePrincipalId $sp.Id `
-PrincipalId $sp.Id `
-ResourceId $graphSp.Id `
-AppRoleId $mailboxSettingsRole.Id
Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $sp.Id | Select-Object ResourceDisplayName, AppRoleId
After running the PowerShell script, the WorkPoint.WebAPI enterprise application should receive the Mail.ReadWrite and MailboxSettings.ReadWrite application permissions:
3. Configuration
To access and configure the Mail Assistant settings, you must be inside the New Experience version of the WorkPoint 365 Administration:
- In the left side menu, click "Mail Assistant".
On the Mail Assistant main page, there are two sub-categories; General settings and Profiles.
3.1. General settings
The General settings page contains the following options:
- The "Enable journaling" option can be used to enable or disable the Mail Assistant functionality in its entirety on the solution.
- The "Interval" field can be used to specify a time interval in minutes. At each interval, the mailboxes that are targeted by the Mail Assistant will be evaluated, and new mails will be processed according to the configured Mail Assistant profiles. The minimum interval is 30 minutes.
3.2. Profiles
The Profiles page contains several important settings for the Mail Assistant.
These settings determine which mailboxes should be monitored and filters can be implemented to determine which e-mails should be processed in some way. E-mail processing is done using processes configured in WorkPoint Automate.
Note that you can have as many Mail Assistant profiles as you want.
To create a new Mail Assistant profile, follow these steps:
- In the Mail Assistant main page, click "Profiles".
- On the "Profiles" page, click the "New" button to create a new profile.
This opens the "Properties" panel for the new profile.
3.2.1. General
The first tab in the Properties panel is the "General" tab. On this tab, you can configure in which mailboxes this profile should monitor incoming and outgoing e-mail. Dependent on the configuration here, e-mails will be sent from the assigned mailboxes to be filtered before being processed (for example journalized, creating a case, etc.).
On the General tab of the profile properties panel, we have the following settings:
- In the "Title" field, you can specify a title for the profile. Titles are used to differentiate profiles from one another in the UI only.
- Use the "Enable" toggle to enable or disable this specific profile.
- In the "Mailboxes" field, you can specify which mailboxes should be monitored and checked for new e-mails at each time-interval specified in the Mail Assistant General settings. For example, if the General settings time interval is set to 30 minutes, the Mail Assistant job will query the configured mailboxes for new messages every 30 minutes. You can select users and/or groups and/or shared mailboxes in this field, and you can select multiple mailboxes. If a group is selected, all member's mailboxes will be monitored using this Mail Assistant profile.
- In the "Mailbox subscriptions" field, you can also specify mailboxes in the same way as in the regular "Mailboxes" field. The difference is that newly received e-mails arriving in the mailboxes in the "Mailbox subscriptions" field will be picked up as soon as WorkPoint's webhooks are notified about them, instead of waiting for the time-interval that the regular "Mailboxes" field runs on. This enables e-mails arriving in mailboxes specified in this field to be prioritized and processed as soon as possible.
- Use the "Test mode" toggle to enable or disable test mode for this profile. Test mode makes it so that e-mail processing performed by this profile will be based on a dummy e-mail instead of the actual e-mail(s) picked up. This enables testing whether the system actually picks up e-mail in a correct manner, but without accidentally journalizing sensitive or actual production data.
3.2.2. Filtering
Once e-mails from mailboxes configured in the General tab of this profile have been picked up, they can be filtered using either Exclude- or Include filtering rules. Exclude rules can be used to set a condition, and exclude e-mails which fulfill that condition from being processed by the Mail Assistant. Include rules act as a positive filter, allowing only e-mails matching the defined conditions to be processed.
A common example of an Exclude filtering rule could be to exclude e-mails coming from certain domains, for example "flow.microsoft.com", or e-mails where the name of the sender includes "no-reply" or similar.
A common example of an Include filtering rule could be to include e-mails coming from an organization's own domain, for example "CalperIT.com". If one or more Include rules are configured, only emails matching at least one Include rule will be considered for processing.
Note that if an incoming or outgoing e-mail is evaluated to true for both an Include- and Exclude filtering rule, the Include filtering rule is prioritized. That means that if an e-mail;
- Matches an Include filter -> the e-mail is processed
- Matches an Exclude filter -> the e-mail is filtered out
- Matches both -> the e-mail is processed
On the "Filtering" tab, we have the following options:
- The "New configuration" multi-button can be used to create new Exclude and Include filtering rules. You can also add an Exclude sample filtering rule, which can help gain an understanding of how you could configure an Exclude rule.
3.2.2.1. Exclude
When we add a new Exclude rule, we can expand and configure it:
- To expand a rule, we simply click the header.
This expands the rule so we can now configure it:
- In the Title field, we can specify a title for this filter and give it an informative name, telling other admins what this rule does.
- Use the "Enabled" toggle to enable or disable this specific filter rule. Only enabled filter rules will be enforced.
- For the condition itself, which the incoming or outgoing e-mails from the selected mailboxes will be evaluated against, we can select the Basic or Advanced view mode. The Basic mode allows you do configure the condition using the fields shown in this image. The Advanced mode allows you do use an adaptive expression to define the condition.
- Depending on the selected view, you can either fill the fields for the condition, or type/paste an adaptive expression.
The following image shows an example of a basic filter which excludes e-mails if they come from a series of Microsoft-related domains:
The following image instead shows an example of the same condition but created using an adaptive expression:
IMPORTANT: The context objects when creating Mail Assistant filtering rules contains an object titled "Element". In the context of the Mail Assistant, "Element" refers to each e-mail that is picked up by the profile. A filter like the one in the image above effectively checks each e-mail's (element's) From.Domain value, and if that is contained in the list of domains in the "Value" field, the e-mail is excluded and will not be processed as part of this profile.
The context also contains an object titled "CurrentUser". This object's contents depend on the selection of mailboxes in the General tab of the current profile. If a person's mailbox is selected to be monitored, the CurrentUser object will contain the owner of that mailbox. If a shared mailbox or a group is selected, the CurrentUser object is undefined and does not contain any values.
- In the Basic view, we can add more conditions by clicking the "Add More" button. Multiple conditions can be joined using either "And" or "Or" operators.
- We can delete any filtering rules by clicking the recycle bin for that rule.
3.2.2.2. Include
When we add a new Include rule, we can expand and configure it:
- To expand a rule, we simply click the rule.
This expands the rule so we can now configure it:
- In the Title field, we can specify a title for this filter and give it an informative name, telling other admins what this rule does.
- Use the "Enabled" toggle to enable or disable this specific filter rule. Only enabled filter rules will be enforced.
- For the condition itself, which the incoming or outgoing e-mails from the selected mailboxes will be evaluated against, we can select the Basic or Advanced view mode. The Basic mode allows you do configure the condition using the fields shown in this image. The Advanced mode allows you do use an adaptive expression to define the condition.
- Depending on the selected view, you can either fill the fields for the condition, or type/paste an adaptive expression.
The following image shows an example of a basic filter which includes e-mails if the Subject of contains "Invoice":
The following image instead shows an example of the same condition but created using an adaptive expression:
IMPORTANT: The context objects when creating Mail Assistant filtering rules contains an object titled "Element". In the context of the Mail Assistant, "Element" refers to each e-mail that is picked up by the profile. A filter like the one in the image above effectively checks each e-mail's (element's) From.Domain value, and if that is contained in the list of domains in the "Value" field, the e-mail is excluded and will not be processed as part of this profile.
The context also contains an object titled "CurrentUser". This object's contents depend on the selection of mailboxes in the General tab of the current profile. If a person's mailbox is selected to be monitored, the CurrentUser object will contain the owner of that mailbox. If a shared mailbox or a group is selected, the CurrentUser object is undefined and does not contain any values.
- 'In the Basic view, we can add more conditions by clicking the "Add More" button. Multiple conditions can be joined using either "And" or "Or" operators.
- We can delete any filtering rules by clicking the recycle bin for that rule.
E-mails which are picked up and passed through your filters will be processed as configured in the "Processing" tab.
3.2.3. Processing
In the Processing tab, you can configure how e-mails which have been picked up and passed through the filter should be processed.
There are three types of processing available for each Mail Assistant profile:
- Generic: This option is used for generic processing of e-mails and will always be run, regardless of other eventual processing configurations within the same profile. An example where this could be useful is if you want to run a simple journalizing process into a known location. Another example could be if you are monitoring a mailbox for invoice e-mails, and upon receiving one, you want to create a new WorkPoint entity for it, and journalize the e-mail and attachments on the new Invoice entity. You can think of this option as "Always do this processing when an e-mail caught by this profile gets through filtering".
- Entity: This option is used for attempting to find one or more entities in a business module, and then process the e-mail in question in that context. For example, if we have a Suppliers business module in which we register all our suppliers - and as part of their metadata, record their e-mail domains - we can, using the Entity processing type, try to find a match between the incoming or outgoing e-mail's sender domain, and a Supplier with that same domain. If a match is found, we can journalize the e-mail on that Supplier site.
- Entity not found: This option can be used to define how the e-mail should be processed if we attempted to find an entity match, but none was found. For example, if we receive an invoice from a supplier which does not yet exist in our Suppliers module, we can run a process to first create a new supplier, then create a new invoice entity with that supplier as parent, and then store the e-mail on the invoice entity site. If you have not configured an "Entity" processing configuration, "Entity not found" processing will not be performed.
It is very important to note that in WorkPoint 365 Mail Assistant, an e‑mail is considered “processed” at the point where Mail Assistant has picked up the message and successfully executed the configured WorkPoint Automate process for it — regardless of the business outcome of that process.
If a profile evaluates an e-mail which has already been processed earlier, it will not process the e-mail again. For example, if you have the same inboxes set in the "Mailboxes" and "Mailbox subscriptions" fields for a profile, and an e-mail is picked up by the webhooks and processed as soon as they arrive, that e-mail will not be processed again when the mailbox is again evaluated within the regular time interval set in the general settings for Mail Assistant.
To create new processing rules, follow these steps:
- In the Processing tab, click the button to create a new processing rule of the type you need.
Here we have created a new Generic processing rule:
- Click the header of the rule to expand or collapse it.
- In the "Title" field, you can give the rule a title in order to differentiate it from other rules in the UI.
- Use the "Enabled" toggle to enable or disable this specific processing rule. Note that this setting OFF by default.
- In the "Conditions" section, you can apply a last filter before sending the e-mail for processing by the process selected in pt. 31. You can configure conditions using the basic or advanced modes, and only if the conditions are evaluated to true, the e-mail is sent for processing.
- In the "Process" field, you can select a WorkPoint Automate process which will take the e-mail and process it according to its configuration.
We will now go through one example for each type of processing.
3.2.3.1. Generic
In this example, we simply send a notification to our organization's CFO Edward Dean if an incoming e-mail contains the word "Invoice" in the subject.
We begin by creating an Include filter rule which only lets e-mails through if they contain "Invoice" in the subject:
In the Processing tab, we can then create a Generic rule which runs a "Notify about Invoice" process:
With this setup, whenever an e-mail with "Invoice" in the subject lands in the mailboxes monitored by this profile, a notification will be sent to the person specified on the Recipient field of the Create a notification step in the "Notify about Invoice" process, in this case the static "ed@wp365test.onmicrosoft.com":
The Message could then say something like this:
This should result in Edward Dean (ed@wp365test.onmicrosoft.com) receiving a notification in WorkPoint when a new invoice e-mail is received in the monitored mailboxes.
3.2.3.2. Entity & Entity not found
In this example, we will use the Entity and Entity Not Found processing rules to attempt to find a match between an existing supplier in WorkPoint and the incoming e-mail. If we find a match, we will create a new Invoice entity under the supplier, and journalize the e-mail and attachments there. If we do not find a match, we will instead send a new e-mail to the person who received the invoice e-mail, and let them know that the supplier did not exist in their WorkPoint solution.
For this purpose, we have created WorkPoint A/S as a supplier in our Suppliers module:
Note that we have also registered an e-mail address and a domain for the WorkPoint A/S company.
This is important, because we will try to find a match between the incoming invoice e-mail's sender's domain, and the domains of our registered suppliers.
Again, we begin by creating an Include filter so we only process e-mails with "Invoice" in the subject line:
Then we move on to create an Entity processing rule:
- In the "Title" field, we can specify a title for this Entity processing rule so we can differentiate this rule from others in the UI.
- Use the "Enabled" toggle to enable or disable this specific Entity processing rule.
- In the "Business Module" field, we can specify in which business module we are attempting to find an entity to use as context for our e-mail processing.
- In the "Conditions" section, we can specify which entity or entities we want to find. We can use either Basic conditions and combine multiple ones with AND or OR, or create a condition using adaptive expressions in the Advanced mode.
- In the "Process" field, we can specify which process should run, given a match found using the selected business module and condition above.
- In the "Maximum number of matches" field, we can specify how many entities we want to find and run the selected process for. In some scenarios, given a selected business module and condition, Mail Assistant may find multiple entity matches. This number limits how many matches should be considered.
- Use the "Continue on match" toggle to set whether Mail Assistant should continue processing other matches when one match is found.
For our example, we configure our Entity processing rule as follows:
Here we have first enabled the rule and selected the "Suppliers" business module. We have then created a basic condition where we see if we have any entities with a wpe-mailDomain value equal to the domain of the Invoice e-mails sender. If we find a match in the Suppliers module, we then run the "New Invoice From Mail Assistant" process. This process will create a new Invoice entity (Invoices is a child module of the Suppliers module) with the found Supplier entity as parent, then it will journalize the Invoice e-mail and attachments to the newly created Invoice entity site.
That process is configured as follows:
We use the Create entity step to create a new entity in the Invoices module, and for Title, we have used this adaptive expression:
Element.Subject
The process - given that it is run by the Mail Assistant - knows that the "Element" object refers to an e-mail, and Element contains all the information about the e-mail it is run from.
And for the Supplier field, we have used this adaptive expression:
{"LookupId": Entity.ID, "LookupValue": Entity.Title}
When this process is run by the Mail Assistant using the Entity processing rule as we do here, the "Entity" context object contains property values of the entity that was found using the processing rule's business module and condition selections. That means if an entity is found by the processing rule, and this process then runs, the Entity object contains the matched entity's property values. In effect, this means that using the above expression on the "Supplier" field (wpParent) sets the matched Supplier as the parent for the new Invoice entity we are creating.
Next, we have the "Upload Outlook e-mails and attachments" step:
- Here, it is important to set "Step Input" to "Output from Mail Assistant". This ensures that the e-mail that was picked up the Mail Assistant is the mail being processed by this step in the process.
In the other settings for this step, we simply select to include e-mail messages and attachments, and direct them to be saved in the newly created Invoice entity site's Documents and E-mails libraries.
Back in the configuration for the Entity processing rule, we set a maximum number of matches to 1, and disable the "Continue on match" option.
Next, we the configure an "Entity not found" processing rule:
- In the "Title" field, we can specify a title for this Entity not found processing rule so we can differentiate this rule from others in the UI.
- Use the "Enabled" toggle to enable or disable this specific Entity not found processing rule.
- In the "Conditions" section, we can specify which entity or entities we want to find. We can use either Basic conditions and combine multiple ones with AND or OR, or create a condition using adaptive expressions in the Advanced mode.
- In the "Process" field, we can specify which process should run, given a match found using the selected business module and condition above.
For our example, we configure our Entity not found processing rule as follows:
Here we have enabled the rule but we are not using a condition for this rule. Instead we run a simple process "Mail Assistant Supplier Not found", which simply sends an e-mail to the Invoice recipient, letting them know that the supplier was not found.
With these two rules (Entity and Entity not found rules), when an e-mail is received in the mailbox we monitor with this profile, Mail Assistant first checks if the Subject contains the text "Invoice":
Since the e-mail contains the text "Invoice" in the subject, this e-mail gets through our Include filter rule of our Mail Assistant profile.
Next, Mail Assistant checks whether there is a match between the e-mail's sender domain, and the domain of any of our Suppliers in WorkPoint:
Since there is a match, Mail Assistant runs the "New Invoice From Mail Assistant" process with the Invoice mail and the found Supplier in the context.
The process creates a new Invoice entity with the e-mail subject as title and the found supplier as parent:
On that new Invoice entity site, our e-mail and its attachment is journalized:
3.2.4. Error handling
In the "Error handling" tab of a Mail Assistant profile, you can create Process failure processing rules. These rules determine what should happen if one of these happens for an incoming e-mail:
- An error occurs in a condition on a filtering rule (both basic and advanced). For example, if condition evaluation is invalid.
- An error occurs in a condition on a processing rule (both basic and advanced). For example, if condition evaluation is invalid.
- An error occurs inside a process run by the Mail Assistant
Process failure processing rules can then be configured to run various processes dependent on conditions, just like other processing rule types.
For example, if we have a simple profile which simply journalizes e-mails into a single static location, and this process fails for some reason, we could set up a Process failure processing rule which sends an e-mail to a support department, letting them know there is a problem with the system:
3.2.5. Status
In the Status tab of Mail Assistant profiles, we start re-processing of e-mails in monitored mailboxes, and view statuses of evaluation and processing instances.
3.2.5.1. History
In the History section of the Status tab, we can view the history of the evaluations and processing performed by the specific Mail Assistant profile and their statuses. This allows us to see when the profile has gathered e-mails from monitored mailboxes, whether it found any new e-mails and what it has done with them. We can also see if any processing have completed or failed.
Here's an example of an instance where the profile picked up on a new e-mail, which passed our filter, and was processed using an Entity processing rule:
And here's another example where our profile managed to pick up on a new e-mail but where the filter failed - in this case because we used the expression "1/0" in as an Include filter rule condition.
3.2.5.2. Re-processing
In the Re-processing section of the Status page, we can start a re-processing of e-mails in the monitored mailboxes. This is useful for example if you notice that e-mails have been journalized in wrong locations, for example due to incorrect configuration of the journalization process used. You can then enable Re-processing and run it for a specified time period.
- Use the "Re-processing" toggle to enable or disable the options for re-processing of e-mails.
- Use the "Ignore processed check" toggle if you want to also re-evaluate and re-process e-mails which have already been processed by Mail Assistant before. If you enable this, you may get duplicate e-mails journalized in multiple locations, because e-mails which have previously been evaluated and journalized may get re-evaluated and then journalized in a new location, depending on eventual updates made to the journalization process.
Note: In WorkPoint 365 Mail Assistant, an e‑mail is considered “processed” at the point where Mail Assistant has picked up the message and executed the configured WorkPoint Automate process for it — regardless of the business outcome of that process.
- In the date-picker, you can select a start date and time from which the re-processing should run, up until the current date and time.
- Click the "Start processing" button to run the re-processing with the selected options.
- To view the status of the re-processing, you can click the "Check Status" button.
4. E-mail Element properties
In this article, "Element" refers to a context object containing e-mail properties and values.
Here is a list of all the e-mail properties contained within the "Element" context object:
- BodyPreview
- CC
- Address
- Collection
- Address
- Domain
- Name
- NameAndAddress
- Domain
- Name
- NameAndAddress
- ConversationIndex
- ConversationType
- Direction
- Label
- TermID
- From
- Address
- Domain
- Name
- NameAndAddress
- HasAttachments
- IsDeliveryRecipient
- IsReadRecipient
- MessageClass
- Priority
- Received
- Sensitivity
- Sent
- Size
- Subject
- To
- Address
- Collection
- Address
- Domain
- Name
- NameAndAddress
- Domain
- Name
- NameAndAddress
Comments
0 comments
Please sign in to leave a comment.