Power Virtual Agent licensing- Capacity Planning

FeaturedPower Virtual Agent

As mentioned in earlier post, data consumption of the PVA also plays important role in the licensing of the PVA.

We also need to consider the data storage requirements for the PVA implementations. How to calculate the data consumed by PVA so that we can arrive at the needed storage. With usual configuration, PVA has special storage requirements for all the conversations of the chatbot and any attachments uploaded during the conversation.

Lets look at the tables which store conversation transcripts, All the conversations in the PVA bot are stored in Conversationtranscript table. Hence to forecast the data storage we need to understand size of each conversation and expected conversations. Again it depends in the complexity of the conversations,

We can refer any existing implementation and check size of ConversationTranscript table and count of conversation (which is ideally the number of records in this table 😀. If its our first implementation we have to assume some number and then validate it during the operations.

Generally we have forecast the sizing and license cost for one year, we should multiply above size per conversation with number of conversations expected per year (# of conversations *12* # of conversations per month) . Once we get this number, we can calculate the forecasted size of data verse needed for this implementation.

In addition to Conversation transcripts, let us also check the requirements in case we are expecting user to upload attachments or in case any plugin trace logs , audit logs are required to be to tracked. We have to consider that data consumption as well while calculating the data verse size.

Based on all above calculations we have to arrive at forecasted size and purchase the licenses accordingly.

While calculating the size, also consider the data retention policy as per the requirement. By default there is one bulk deletion job which runs everyday and deletes the conversation transcripts older than a month. This optimizes the storage requirements. If the bot is for internal users and data is not needed , we can keep this job on with the change in the filter setting. However in case the bot is for the customers and there might be policies related to customer data retention for audit purposes, we have to disable this bulk deletion job. In this case we need to consider the storage requirements on higher side. To optimize the costs, we can even think of the usage of data lake to store this history data. Solution can be implemented to archive the history conversations to economical storages rather than using data verse storage

Chatbot: What do you need to know?

FeaturedPower Virtual Agent

Now a days when we visit any website, we will be surprised if we do not see a chatbot popping up for our help 😀. Even there are WhatsApp numbers of the chatbot. You just need to send “Hi” to a WhatsApp number and chatbot starts responding.

Most of the product companies are providing the chatbot ecosystem. Whenever we think about chatbots, we hear lot of heavy words like ML(Machine Learning), DL(Deep Learning), NLP(Natural Language Processing), AI(Artificial Intelligence). I had worked on a project few years ago where I was integrating the chatbot with Dynamics CRM Customer Service. I worked on only integration of this chatbot and CRM. However when I was trying to understand the underlying technology of this chatbot, I was actually scared hearing all these heavy words. I thought implementing chatbots is not easy and if I have to do it I have to learn lot of technologies.

Microsoft released Power platform in 2018 as a low code no code platform. Another enhancement, Power Virtual Agent (PVA) was launched in 2019. This was the game changer. Microsoft did the magic and if you want to develop chatbot, you need not learn anything like ML, NLP etc. your basic requirements can be simply configured by citizen developers and platform will manage everything behind the scenes.

It industry always talks about the limitations of low code no code platforms and made us think that we can only develop very basic functionality with these. However when I studied PVA, it has overcome all these limitations by ability to integrate with Power flows. This way it finds perfect balance to collaborate between no code citizen developers and Pro code developers.

Below are some comments about the chatbots that bots are expensive and hard to create and maintain, there is always a friction among the SMEs with answers and the developers or the scientists who actually develop the bot, generally bots are not that useful unless they provide personalized answer or can integrate with back send systems. However when we consider PVA implementation, development can be done by SMEs directly to avoid any conflict and delays. In case of personalized answers, Power Virtual Agent can integrate with many back end systems via Power flows. Complex scenarios can be developed by integrating it with Azure Bot framework.

Now lets start exploring Power Virtual Agent

What is FHIR ?


Working in healthcare domain is completely different experience to me who has worked mostly in Oil and Gas or Manufacturing domain. Lot of terminologies and hyper sensitive data. Every time we take any scenario, any use case, we can directly relate to ourselves. Post Covid, everyone became health cautious, even heard about lot of health related terminologies which were never heard of. For ex. with my limited knowledge, I could never thought of a CT scan of chest as I was always under assumption that if someone has serious head injury then doctors suggest for CT scan 😀.

Anyways its completely different story and I do not want to go through that angle now.

Just wanted to share what I have learned recently in very short span of time

Now a days, as doctor’s prescribe and we go for different tests like, laboratory tests, radiology tests etc and we get the report in a hardcopy document, or in advanced diagnostic centers we also get a soft copy of the same. Now we are expecting much more advanced digital reports. All this data is called as clinical data of the patients.

When we are talking about healthcare domain, below are the various personas,

  • Patient
  • Healthcare team
  • Providers(Clinicians)
  • Payer(Insurance coverage)

Patient’s clinical history data is stored in different formats by different organizations which becomes difficult if we need to refer any data for better diagnosis, better treatment, insurance payments, it was becoming difficult to everyone to understand the data . To address this problem, in US it is mandated to follow a common framework for all healthcare data which is called as FHIR (pronounced as fire). It is been predicted that FHIR standard would be adapted by maximum healthcare organizations and it would be a key in digital transformation projects in IT industry.

With increasing number of health monitoring devices, there is huge data available about patient’s health for better analysis / diagnosis and medical research. And when we talk about the PHI, Patient’s Healthcare Information , it is most sensitive and confidential data we can cater to. Hence when we talk about digital transformation for healthcare , we should always take care of the data interoperability, data security and compliance from the day one.

What is FHIR? Fast Healthcare Interoperability Resources is a open source data framework for healthcare and not a data standard. It is a foundation and API specifications for exchanging the healthcare data models . It consists of tools and servers for building and interacting with those APIs

Open source standard allows the medical community to collaborate and evolve this standard to continue to grow and enhance. It has definitions for exchange the APIs, it gives all the specifications which secures the data transfer of EHI (Electronic health information)

The FHIR API consists of data formats and elements known as resources. Few of the resources are as mentioned in below snippet

Above resources can be exchanged using Application programming interface (API)

For exchanging the resources API uses a modern web based suit of technology including an HTTP based RESTful protocol, JSON and XML

FHIR brings all the asymmetrical Health data from disparate systems together as mentioned in below snippet

  • Standardize semantics and data exchange into a common definition
  • Secure pipeline for Protected Health Information (PHI)
  • Creates consistency across the health ecosystem
Asymmetrical Health Data from Disparate systems

That is it for now on FHIR, keep learning !!


Updating Entity Reference Power Automate vs Plugin- Owner

In my last blog, I was getting OwnerType as blank. With help of Microsoft community, I understood that we won’t get the OwnerType from the triggering event output. Ideally it should have directly provided, but since it is not provided, let us use the other way around.

Our requirement is to check the Owner type of the Case record and set the same for the task

After the triggering event, I am using “Get a record” step in my flow and the OwnerType value from this step’s output as shown in below snippet

Again here is a tricky thing to remember. If I directly get the OwnerType field from its output in my next step’s expression, again it would be blank. (Not sure why it can’t be used from output in the expression of next step- I may get the reason and some way around and post it)

Hence after getting the record, I need to get that value in a variable as shown in below snippet

Once I have this value in a variable, I can then use it in any expression in next step


I thought multiple times if I should use the if else condition which comes in steps Condition, however when I just need to replace the string based on the if condition and rest of the actions are exactly same, then I won’t recommend to use Condition and use branching with same steps. Instead we can use If condition in the expression

Once I use this condition, automatically, it would pick up the OwnerType based on the Case Owner and accordingly assign the same Owner to the Task, be it Team or User, does not matter. For examples, below the owner is Team , hence its setting as Team.

Now another example is a Case where Owner is User.

Task is getting created with same Owner

Lets also check the flow how its executed

In the post we have seen how we can get the Owner from one record and update the same in another record. Let us continue our Power Automate learning in my further posts

Till that time, happy power automating 🙂 Enjoy new learning!

Power Virtual Agent Channels

Power Virtual Agent

In last post we have discussed about bot authentication to secure the chatbot from unauthenticated users. Now lets see what are the options where chatbot can be hosted. What do you mean by chatbot hosting? Again going back to the same example that we are browsing a portal and suddenly a bot pops up from right bottom of the screen, so that user can interact with the chatbot. This is the opportunity and we can engage the users wherever they go to find the answers like a customer care portal, internal portal, mobile app etc. These are called channels for PVA. Availability of variety of channels are the opportunities for you to connect with users to solve their problems or interact with your brands.

PVA gives lot of options to host the bot as shown in below snippet

Out of these various channels, mostly used in projects are the Microsoft Teams, Custom websites, Mobile app. Demo Website is generally used for testing, anybody can use this link for testing purpose.

Lets take a deep dive in the Microsoft Teams channel. Here the bot would be available in the Teams and as any other user who is using teams, we can chat with the bot directly from Teams. I think this is most efficient for internal users who use Teams most of the times during the day. Here we can even see the history of our last conversation. Obviously its based on the Teams policies to store the conversations.

In PVA Manage->Go to Channels and select Microsoft Teams as shown in below snippet and then click on Turn on Teams

It will open the popup as shown below. We have to first click on Edit details In case we want to disconnect the Teams, we can click on Disconnect from Teams anytime

In Edit details, we can change the icon, change the colors etc. Provide short and long description and click on Save We can check the checkbox for to allow users to add this bot to a team.

After saving the settings, we can select the setting where we want users to see this bot. if we want to show this ot to everyone in the organization, this needs approval from the Teams Administrator. Lets select this option

Click on the Submit for Approval button

It would confirm if we really want to so and if we click on Yes, this app would be submitted for approval to Teams Administrator

If its in Trial instance and as admin, we can go ahead and approve the app as mentioned in below steps

Search for your app, select and click on Allow.

Click on the App and then click on Publish , it will again confirm and then publish the App

Now our app /our chatbot is available in Teams Apps, we can search and add it to our teams

We can chat with the bot in the Teams 😀.

We have seen the deployment channels of the PVA and went in depth of Teams channel. Hope you find this posts helpful.

Enjoy chatting with the newly created bot in Teams.

Power Virtual Agent Authentication

Power Virtual Agent

When we login to any portal, suddenly the bot pops up in the corner and asks us “May I help you?” or “What are you looking for?” etc. Here the bot is not expecting to know who you are and anybody can type hello to the bot. However when you get into the conversation and go in specific questions, it asks you your name and email/phone number to identify you. In another case sometimes the bot asks to login first to identify you. Internal bots, the bit automatically recognizes and greets you.

When you are asking generic questions to bot, it can provide you generic answers, however when your bot is intended to answer very specific questions like what is my leave balance, what is the location of my parcel or even the status of the issue raised in the customer care. then bot needs to identify you. There are scenarios where the bot is restricted to only specific group of users. In all such scenarios user authentication in the bot implementation comes in picture. Unlike any other application access, to access the bot, we don’t need to assign any license to these users. Anybody who has the link of the bot can access the bot provided the bot is set to be authenticated.

To enable the bot authentication, there are some settings to be in the bot. If we go to Manage – Security, we can see three options:

  • No Authentication – Anybody who has the link of the bot can access the bot
  • Only for Teams- this bot is available for access only through the Microsoft Teams app
  • Manual (For any channel including Teams)-supports AAD or Auth2 identity provider

We can also check the checkbox to “Require users to sign in” which will immediately prompt the users to sign in as soon as they interact with bot.

In case you select only for Teams options , rest of the channels are disabled for the bot and bot can be only accessible via Teams.

Here are the steps

You can refer detailed documentation and steps in Microsoft Documentation link