How to create Sales Order in Business Central using Power Virtual Agent?

Now, when chatbots are becoming a more and more popular way of communicating with customers, all users would like to do more via chatbots. As Microsoft’s response to tools that can make chatbots, there is Power Virtual Agents, and the real power of Power Virtual Agent (PVA) is enormous.

But as business application specialists, we always try to think about how to connect it to some of our Business Applications. This time we plan to connect PVA to Business Central (BC). More precisely, we want to create New Sales Order from PVA and directly in BC.

How we can achieve that, and not to say it is easy, but it is not so complicated. In a concise explanation, we will create PVA with typical questions, and then we will ask some specific questions to our users so that they can give us order-specific data. After collecting data, we will use Power Automate to connect all.

But let’s stop talking hypothetically and start creating our PVA connected to BC.

The critical thing to mention is that I will not explain how to create PVA nor suggest which questions to use to trigger it and which flow you will make. I will focus only on the essential steps you must implement to create a Sales Order in BC using PVA. You can start as you like and do it in the best possible way so that it fulfills all of your requirements.

So, let’s start.

First, you will have to get three essential pieces of information from your PVA users:

  1. Account/Customer No.
  2. Item No.
  3. Quantity of Item which customer wants to buy

You can work with Item Name and Customer Name, but be aware that this can make your process more complicated because we have a few things to take into consideration before using this approach:

  1. Human error
  2. Similar names
  3. Many more questions for users
  4. Many more variables to consider
  5. Etc.

If you want to try this approach, consider this problem, and you can do it. The process is similar, only with some more steps.

But with our approach, let’s create three questions in Power Virtual Agent and define Variables for them:

  1. Choose Add Node
    1. Choose Ask a Question
  2. In Question, define:
    1. What is your company account number with us?
    1. Identify the User’s entire response
    1. Save response as
      1. Click on the Pen icon and name it VarCustomerID
  3. choose Add Node
    1. Choose Ask a Question
  4. In Question, define:
    1. What Product No. are you looking to purchase?
    1. Identify the User’s entire response
    1. Save response as
      1. Click on the Pen icon and name it as VarItemNo
  5. Choose Add Node
    1. Choose Ask a Question
  6. In Question, define:
    1. Can you tell us which Quantity you would like to order?
    1. Identify Number
    1. Save response as
      1. Click on the Pen icon and name it as VarItemNo

And now we have our questions and variables. What we have to do from here is to add a new action in our PVA, but this time is going to be active for triggering Power Automate.

To do this, you will have to:

  1. Navigate to Add node in a Topic editor in Power Virtual Agent
  2. Choose to Call an action
  3. Choose to Create a flow

And from here, you will be redirected to the Power Automate editor, and you should start creating a new Power Automate.

You will see immediately that you already have trigger and Output predefined for PVA. Just keep it, and we will use it in the process.

From here, you will have to create some Variables and, most important Sales Order Header and Line.

As you probably know, in BC, Sales order contains two tables:

  1. Sales Order Header
  2. Sales Order Line

We will have to use both. First, we will create Header, and later we will use the Find Record action to find our Item, and then, in the end, we will fulfill Sales Order Line.

Don’t worry. I will now list all actions one by one and in the order in which you will have to create them so that you’re Power Automate works at the end.

Before you start with Sales Order Header and Lines, as I sed, you will need to do some setup in Trigger and initialize some variables.

For the trigger, what you would need to do is to add you’re Inputs. You will probably understand now whose inputs are values we will get from Questions we have asked users in our PVA.

So let’s create three inputs:

  1. Text: CompanyName
  2. Text: Item
  3. Number: Quantity

And after inputs, I will list all variables you have to Initialize, and all of them will be STRING. Just create them, don’t assign any values. We will do that later in the Power Automate.

  1. Order ID
  2. Currency Code
  3. Item No
  4. Quantity
  5. UOM
  6. Total Price

Now that we have created Variables, we can continue creating records in BC. For better understanding, our Variables are here so that we can collect output at the end and show Sales Order info in PVA so that users can understand what they have created and get some information about orders they had made automatically.

If you want to create Sales Order and not use data back in PVA, you don’t need all these Variables. But when making PVA, it is always lovely to show values at the end to users of PVA.

Now let’s continue with Power Automate, and finally, let’s create a record in BC.

We will now perform three actions; you must do this in this order.

  1. Create Record V3 (Business Central)
    1. Environment Name: SANDBOX (if you are working with a PRODUCTION environment, choose PRODUCTION)
    1. Company Name: CRONUS USA, Inc.
    1. API Category: v2.0
    1. Table name: salesOrders
    1. customerNumber: CompanyName (from trigger)
  2. Find Records V3 (Business Central)
    1. Environment Name: SANDBOX (if you are working with a PRODUCTION environment, choose PRODUCTION)
    1. Company Name: CRONUS USA, Inc.
    1. API Category: v2.0
    1. Table name: items
    1. Filter Query: number eq ‘ItemNo’ (ItemNo Variable form dynamic value)
  3. Create Record V3 (Business Central) (Apply to Each will be created automatically)
    1. Environment Name: SANDBOX (if you are working with a PRODUCTION environment, choose PRODUCTION)
    1. Company Name: CRONUS USA, Inc.
    1. API Category: v2.0
    1. Table name: salesOrderLines
    1. documentId: id (from Create Record (Header) dynamics value)
    1. itemId: id (from Find Records (Item) dynamics value)
    1. quantity: Quantity (from the trigger, dynamics value)

And now, after we have created Sales Order in BC, we need to get data and show them back in PVA so that users can see what they have done.

We will do this by assigning values to our Variables. For this scenario, it is best to use Append to string variable action.

Again let’s see what we have to do here.

  1. Append to a string variable (in Apply to Each)
    1. Name: ItemNo
    1. Value: description (from Create Record line)
  2. Append to a string variable (in Apply to Each)
    1. Name: Quantity
    1. Value: Quantity (from Create Record line)
  3. Append to a string variable (in Apply to Each)
    1. Name: UOM
    1. Value: UniteOfMesureCode (from Create Record Line)
  4. Append to a string variable (in Apply to Each)
    1. Name: Order ID
    1. Value: number (from Create Record Header)
  5. Append to a string variable (in Apply to Each)
    1. Name: Total Price
    1. Value: amountIncludingTax (from Create Record Line)
  6. Append to a string variable (in Apply to Each)
    1. Name: Currency Code
    1. Value: currencyCode (from Create Record Line)

When we have assigned values to Variables, we are only left with a few steps till the end of this scenario.

Now we must create one more Variable and append value to it.

This time we are doing this to format our Output result in the best possible way because formatting output values from Power Automate in the PVA is not the best, so we want now to do it in Power Automate and later show this value in our PVA.

To do this, we will create the following Variable:

  1. Initialize variable (Out of Apply to Each)
    1. Name: Order
    1. Type: String
    1. Value: (none)
  2. Append variable
    1. Name: Order
    1. Value:
      You have created a sales Order with ID: Order ID (Variable dynamics value)

With Item: ItemNo (Variable dynamics value)

Quantity:  Quantity (Variable dynamics value) UOM (Variable dynamics value)

With total price: Total Price (Variable dynamics value) Currency Code (Variable dynamics value)

And now, we are just two more steps to the end in Power Automate.

This time we must use two actions and keep in mind that one of them is already there, so in reality, we must create one more cation (COMPOSE) and, in the end, assign that value to our PVA output.

  1. Compose
    1. Inputs: Order (Variable dynamics value)
  2. Return value(s) to Power Virtual Agents
    1. Inputs
      1. Text: Item
        1. Outputs

And now we are finished with Power Automate. All that is left here is to Save it, jump back to PVA, and map Variables in PVA so that our inputs in Power Automate can work. Your Power Automate would look like the one on the Screenshot if you created it with the exact steps I described.

To do this, you will have to go back to your PVA and inaction, which you have called Power Automate. You have to choose one which we have created just now.

  1. Choose Power Automate, Which you have created
  2. Setup Variables
    1. CompanyName (text) -> VarCustomerId
    1. Item -> VarItemNo
    1. Quantity -> VarQuantity
  3. Add Node
    1. Show a message
      1. Dear customer VarCustomerID (add a variable from the list),

Your order has been created with the following details:

Item (variable from the list)

Now you can Save your PVA and Test it to see if it works. If everything is fine, the result will look something like this.

This is not the end. You can continue playing with this PVA and add one new branch where you will create one more Power Automate for users who are not Customers in BC and first create them so that they can make an order. But this is the end for this scenario, How to create a Sales Order from PVA in BC.

In conclusion, when we can use Power Automate with some other tool natively, SKY IS THE LIMIT in what we can do.

I know that this scenario has a bigger number of steps, but in total, it is not so complicated. Still, it gives an excellent perspective on what you can do and gives you an idea of what some other Power Automates should look like if you are using them from PVA. Enjoy creating this Power automate and Power Virtual Agent.

Advertisement

Trigger Power Automate from the Marketing Journeys

If you are a Dynamics 365 Marketing user, you may have already seen that you can trigger Power Automate in your Marketing Journey (Real-Time Marketing). And why is this a good thing? Power Automate allows users to create, update and delete records and can assign records or complex pass-through processes.

There are several actions you have to do before you can trigger Power Automate through Marketing App.

Let’s see all steps necessary to perform before you start using Power Automate together with Dynamics 365 Marketing app.

First, you must create a Customer Journey in Real-Time Marketing.

I have created a simple Journey that starts with a Segment and has only one stage, after which Power Automate will be triggered. But you can create as many stages before initiating Power Automate.

You need to take care of time when you want to start this Journey. Of course, you are not obligated to use Segment as I did. Still, this was the easiest way to show you how to start using Power Automate in your day-to-day Marketing Journeys.

After choosing the Segment, we will continue with the Journey creation.

What we have to do next is to add a new action to our Journey, which will activate a Custom Trigger.

The system will give you one lookup file where you can choose some of the previously created triggers, and then you can use one trigger for multiple Journeys.

But now we will choose to create a new one. When you choose New Trigger, the popup window will open, and you will start defining your trigger.

Here you define some of the usual things like Name and Description, but the critical part for Power Automate is where you define Attributes.

Suppose you have been creating Manually Triggered Flow or Power Automate from the Canvas app for example, or just triggered based on Power Automate. In that case, this is how we get values and proceed them through Power Automate.

This is where you will define key attributes you need to use from this Journey in your Power Automate.

I have created one attribute named First Name for this purpose, but be free and create as much as you need for your Journey.

After defining attributes, finish through the wizard, and you will be able to come back to Journey Form.

Now when you are on the Journey, you must do some mapping.

This is one of the most critical parts because you map your attributes to the fields on Entity/Table.

This is too last step before we go to Power Automate.

Because we had only First Name and Table is Contact, and I have found just my Field in the list of Fields. Just be aware that you must map all attributes you have defined.

And this is the end of the Marketing part.

Now we are going to create one Power Automate.

First, go to the Power Automate page, Name your Flow as you like, and choose Datavesr – When Action is Performed as Trigger.

So in the following screenshot, you will have to be careful what you are choosing.

Catalog > Cxp

Category > Custom

Table name > (none)

Action Name > Choose your action

And the next thing is to continue with Power Automate creation.

I will add a new step where I will use data from our attribute definition. But you can, from now on, create new records, update records, send an email notification, send approvals, work with all connectors in Power Automate, and make the best possible Journey and the best possible steps which have to be automated after your Journey pass.

When you finish with Power Automate creation, Save it and Close it, and return to your Customer Journey Page in Marketing, where you can Publish your Journey and wait for the magic to happen.

I hope that this feature in Dynamics 365 Marketing will allow you to create more complex and more customer-oriented Marketing Jounies, which will allow you to deliver better content to your clients. After all, Power Automate is a really powerful tool that can bring a lot of new ideas, which now can be achieved together with Dynamics 365 Marketing Real-Time Jounies in day-to-day use for Marketing experts.

Business Central & Power Platform Exams Experiences

Recently I’ve passed these two new exams: Business Central Functional Consultant Associate and Power Platform App Maker Associate and I would like to share some my experience about them. I’ll try to be brief and just to give you some basic directions.

First I need to admit that I’m not big fan of this kind of certification. Based on my previous experience 10+ year ago, it was more about getting certificate and less about proving a real knowledge. I had an opportunity to meet a lot highly certified persons, but they couldn’t implement even the easiest projects. But still, partners wanted to invest in certification as some kind of knowledge proof.

But with new exams in the last few years things are slightly changed and I had opportunity to check them. But with these two new exams I’m talking about, things improved drastically. And I can say I’m really positive surprised.

First what I want to say is that I didn’t prepare myself for these two exams. And when I say ‘I didn’t prepare’, I mean it for real. I wanted to see if it is possible to pass these exams with real experience and practical knowledge. And I succeed! From my perspective this is the most important fact – if you are waring with these technologies and have a real practical knowledge, you can pass them without any problem. It still means you should be focused on questions as they can sometimes be complicated, especially when it comes to the case studies. I didn’t want to say these exams are easy as they are not, but you don’t need to prepare yourself if you know topics. But to be honest, you can still find a couple of useless questions, you really don’t need in practice, but even if you fail on some of them you will still have big chance to pass exams.

What I want to mention about BC exam is to be prepared with SaaS topics as this is very important. It is not enough to know only features in system, as you need to understand cloud concept as well. On the other side, when we talk about Power Platform, you should know both Canvas and Model-driven Power Apps, Power Automate as well as other Power Platform features (AI, Chat Bots…) and CDS. But this is what we imply with the Power Platform knowledge.

If you are newbie, in this case you need to learn for these exams. But good thing is that if you want to start, you can find everything you will need on the Learning Path site. But one small note, when you start to learn from Learning Paths, I often hear that there are not enough information and some of people often fail on exams. This is because, you need to open every link you have in your learning path as often you can find basic information in this part of text, but when you click on some links, you will be redirected to Microsoft docs site with all necessary information with related topic.

On the end I want to say THANKS to all people involved in preparation these two new exams as they made a good result. And for all of you who didn’t register for these exams, do it… you will not make mistake.

15 Microsoft Ignite not-to-miss non-Dynamics Session

A few years ago, and earlier, every time when I attended some conference I’ve chose the topic I’m familiar with. For example, probably in 95% of my time I attended Dynamics NAV sessions or something very close with it.

But in the last few years I changed my attention to very different sessions. In these times, everything is different, and everything is changed. Now if you want to survive in your ERP or CRM world, you need to learn a lot of different topics outside of your primarily interest. Solutions are more and more connected and now nobody want to buy i.e. ERP, but they want to buy completely solution… and if you want to provide it, you have to me familiar not only with ERP, but with IoT, AI, ML…

Because of that, I want to write a small recommendation not-to-miss sessions for all Dynamics ERP or CRM experts on this Microsoft Ignite. As Microsoft Ignite will start in a few days (September 22-24, 2020) and registration is free of charge, be sure you registered and try to attend the following sessions:

Of course, there are a lot of other Dynamics topics and I can suggest watching sessions about solutions you don’t implement. You will expand your knowledge and in this era it is very important to know how to choose what to and when to implement; when to customize and when to integrate… Of course, this is just my opinion and prediction… if you think differently, do as you think. Definitely, try to enjoy this virtual event.

Business Central Certification Exam and more…

Yesterday on the first day of Microsoft Inspire (this year in digital format), we had an opportunity to see some long time waited news. We will finally have certification exam for Business Central. It will be MB-800 exam – Microsoft Dynamics 365 Business Central Functional Consultant and this exam will be available from October 2020. It will cover the following processes of implementation: set up Business Central, configure Financials, configure Sales and Purchasing, set up operations, and of course how to use Power Platform components. More about the exam here. When you pass this exam, you will become Microsoft Dynamics 365 Business Central Functional Consultant Associate.

But this is not all. We have more news in certifications. As Power Platform takes more and more spaces in solving business issues, we will get two new exams for Power Platform and they will be available from September 2020:

Business Central API’s and Available Methods

If you use API’s in Business Central, probably you found some limitations in methods, depending on API to API. Sometimes you can do more, sometime less. For example, with Accounts you can use only GET method (I still don’t understand why?), and so on…

You can find details about all of them here, but I prefer to have everything on one place as it will be easier to decide if I would use standard API or eventually I need to create the custom one. Because of that, I’ve made this matrix with all standard API’s and methods you can use with them:

Except these limitations, it would be nice to know that you have some other limits as well and they are important if you want to use API’s in some solutions. Even if those limits are high, they are still limits. For example, you can have maximum 600 requests per minute in production environment and 300 in sandbox. Complete list of limits is here.

And what is also important? If you are using those API’s through Power Platform (or Logic Apps) connectors, you should understand their actions and parameters. All details can be found here, but there is a table for better understanding:

It is important to mention that all that information are subject of change.