Invoice Approval Process using Microsoft Teams and AI Model – Part 2

By | January 5, 2021

This blog is a continuation to part 1 of the 2-part blog series which will help you understand how to operate the AI model in automated flow and use the data parsed through AI builder.

Part 1 – Route an email to external services and create an invoice approval request in Microsoft Teams

Part 2 – Operate the AI model in automated flow along with enabling the actions (approve and reject) for invoice request and create the invoice in CRM once the request is approved in Microsoft Teams

First and foremost, we need to create an AI Model and extract the field values from the Invoices using Form Processing. Detailed steps on how to use Form Processing can be seen here.

In our case, from the Invoices using Form Processing we are extracting the below fields.

select fields

After swaddling some of the data of invoice into AI model, now it is time to use it in our automation for extracting those values from invoice. Let’s continue further from where we left off in the flow that we designed earlier in the blog.

Let’s start by adding another action and call the AI builder.

add an action

Add a “Predict” action


Select the model that we created earlier

QB Invoices
Note: We have created an AI model named QB Invoices

Specify the type of data that we will be sending to “Predict”. AI builder supports both pdf and image. In this illustration, we are going to send invoice as a pdf so let’s fill the field as shown below

document type

For “Document”, we will select Dynamic content as shown below.


As soon as we add this field, the flow designer recognizes on its own that there can possibly be multiple attachments available in the email. So it automatically packs up in the loop that will iterate over each attachment in the email.


Let’s quickly move the “Teams” action to be within this loop.

move teams action

post a message

Next, we want to route this for approval using the fields that AI builder extracts from each invoice, so we will add an action that will route the message to an approver in Teams. For this, let us add an action.

add an action

We will again choose a “Teams” connector and “Post a choice of an option” to the user. We will also provide them with two custom fields; “Approve” and “Reject”


This will allow the approver to make the right decision on each invoice.

We will specify a relevant headline and an approver as a recipient.

add new item

We will update the message field as shown below since we want to be able to see who the invoice is from and also the total invoice amount (we are extracting this amount value from AI builder and building a relevant approval request sentence for an approver with the information they need using dynamic content)


Note – we can specify the fields into this “Message” field depending on which of the information you want a flow to bring from the AI builder, so pop the dynamic contents into the message field accordingly.

Since we have two possible outcomes “Approve” and “Reject”, we will configure a “Switch” to handle these two options.




We will select a dynamic content for “On” field as shown below

select an option


Using the concepts that we covered earlier above, let’s create two different cases for “Approve” and “Reject”

Case 1 – Approve

This will automatically reply back to the sender with an invoice approval and create the invoice into CRM with some of the field values extracted from the invoice through the AI builder.

Case 2 – Reject

This will automatically reply back to the sender with an invoice rejection.

Case 1 – Flow configuration (If the invoice is approved)

Let’s add an action

add an action


message id

Enter a relevant line that you would want to send as an invoice approval reply to the sender


Since we want to create a new invoice in CRM, we will add CDS action “Create a new record” as shown below.

The currency and price list we set here will be applied to the new invoice being created in CRM. The newly created invoice will have a currency and the price list set.

Note: These values have been hardcoded here in this circumstance. However, you can still populate it dynamically, if required.


Since we want the name of an invoice to be the value of the field “Description” extracted from invoice using AI builder, we will choose the selection shown below. User can perform any dynamic content selection based on the requirement

description value

We also want to fetch the address from the extracted field from invoice through AI builder, so let’s choose the selection shown below. Here “BILL TO” is the field that is pulled out using the AI model earlier. We will have the same address applied to the invoice that is new going to be created in CRM(based on the requirement, the user is always allowed to do the relevant mappings here between the entity fields and the values that are extracted through AI)

bill to

Note: We have created a custom “BILL TO” field on the Invoice. Later on, using custom logic, the necessary parts of addresses can be extracted.

Case 2 – Flow configuration (If the invoice is rejected)

Let’s add another case for the option “Reject” and configure it as shown below

reject case 2

If we summarize, the flow looks like the screenshot below:


Now let’s see both these cases in action!

Before we proceed, let’s test the entire flow just to check if everything works fine.


test flow

Once you see the below screen post choosing to test the flow, let’s send the email to the approver.

invoice processing

 Case 1 (Invoice approved)

The sender sends an email with an invoice attachment to the approver/stakeholder


invoice approved

As soon as the above email is received in the inbox, approver sees it in Teams.

Email received in Outlook of the approver/stakeholder

email received

This will be shown to approver in Teams with the values that we extracted through AI



Click on “Approve” and put the relevant comment as required.


aproval request

Once the invoice is approved, the reply will be sent back to the sender

reply send to receiver


We can see the new invoice is created in CRM with currency and price lists that were set in the automated invoice processing flow. Also, the name is fetched as an extracted value of the field “Description” through the AI model.

Quick verification

Verify if the Description value is the actual invoice that was sent for approval.

quick verification

Extracted as a name of the invoice in CRM


If we check further down, the address is set correctly. This address is also brought from the same invoice which the approver/stakeholder approved in teams.

Quick verification

Verify address on the actual invoice which was sent for an approval

quick verification

This is the address on the newly created invoice in the CRM. This shows that the field value extraction was successful through AI builder

invoice address

Case 2 (Invoice rejected)

Sender sends an email with an invoice attached to the approver/stakeholder

Email received in the approver’s/stakeholder’s Outlook

email received

Approver sees it in Teams.

approver sees it in teams

Approver rejects the invoice

invoice rejected

As soon as the invoice is rejected, the rejection notification is sent back to the sender via email.

invoice rejection message


The whole invoice approval process could run in just about a minute. So with the help of these automated operations, we greatly reduce approval time and the possibility of human errors. This can be done even more efficiently and as quick as possible with these external integration services and AI capabilities. Legacy apps can successfully be integrated alongside, infusing the AI intelligence in just a fraction of the time using Power Automate.

One thought on “Invoice Approval Process using Microsoft Teams and AI Model – Part 2

Comments are closed.