Checking out ‘Check Access’

Imagine going to work desk (aka kitchen top for me) in the morning and finding a new gadget, stationary item or something useful. Dynamics 365 is a little like that, recently — with a stream of enhancements and new features (big and small) are arriving subtly as part of Dynamics 365 product updates, Power Platform updates, and Dataverse enhancements. One recent one is ‘Check Access’.

It must have been part of Release Wave documentation but somehow I lost track of it until I saw this new button on every form. Clicking on it, brings up a form that shows all the permission logged-in user has related to the form/table. Furthermore you can also select any other user to check that user’s permissions on the same form/table. Slick, easy and useful!

Here’s a friendly documentation link from user guide 👉 Check your user access and permissions – Power Apps | Microsoft Docs

Thanks for reading!

Feel free to share your feedback, I’d love to hear your thoughts 😊

Multi-session, multi-tab user experience in Dynamics 365

Imagine a user experience in Dynamics 365 where:

  • you could open tabs within same browser tab and then easily navigate without losing context,
  • keep a few most frequently used entities, dashboards etc. pinned as tabs,
  • open multiple tabs for a session eg. to process a case, open account profile, contact profile, and knowledge base
  • if interrupted during a session, could come back and resume from where you left

Drum rolls…. introducing “Customer Service workspace”. This is a new app (model-driven) which enables multi-tabs, multi-session experience. Have a look at annotated images below (this is all out of the box, no customisations/configurations 😊)

Under the hood, it is just another app in the environment and there is nothing on the screen to set this multi-tab experience on the app.

It is just another model-driven app
Model-driven app editor

I thought to play a little trick and added Work Order and Booking in the app and in sitemap (using app editor) and viola! it shows an option to add Work Orders and Bookings now 🤓

Options to add new tabs
and this is how it looks.

Pretty amazing, isn’t it! I think this is a promising start as it leads to obvious productivity benefits for certain user types (think Customer Service front desk officer, Customer Service Agent, Work Management supervisor etc.). Looking forward to having an option to selectively enable this experience in other apps too and also to be able to switch this on per specific user type or functional area.

Thanks for reading!

Feel free to share your feedback, I’d love to hear your thoughts 😊

How to make a copy of Model-driven Power Apps app?

Working on a new Dynamics 365 project or creating a new (model-driven) Power Apps for your customers? One of the first few things to do is to setup a new app.

Particularly in the context of Dynamics 365, this “new app” approach makes a lot of sense as it enables a more personalised and tailored user experience for users while hiding all those features and screens which are not part of the project.

Creating a brand-new model-driven app requires creating an app, setting sitemap, choosing forms, views etc. – all of this is not super difficult but does require some efforts. How about you could save this time by cloning an existing app and then tailor it for the use. This is what this post is about – #ProductivityTip!

OK, so how to make a copy of an app?

For this post (inspired by some real-life projects) we are creating a lighter version of Dynamics 365 Field Service app. Go to your solution (destination: Click on New to create a new model-driven app

Enter the name, description, icon etc. of the new app and then select ‘Use existing solution to create the app’. Click Next.

On the next screen, you’ll see a list of solutions. Browse through the list to select Field Service

Oops, there are 2 Field Service solutions to select. On some digging, I found this is happening because the list is showing both solutions and patches. If you view all the solution (separate browser window), you’ll see Field Service solution has got a patch of the same name.

Select the first one and you’ll be asked to select ‘Sitemap’. Select the only option on the list.

Click Done!

…and be patient. It took a couple of minutes for me and then opened a new app designer window. This is your new app which is an exact clone of out of the box Dynamics 365 Field Service app. You can make changes in forms, views, icons and sitemap.

Since we are setting up a lighter version of Dynamics 365 Field Service, I took out a few Advanced features like Agreements, Inventory, Purchasing, IoT etc. Saved and published the app and…

The new app is ready to be served (err… used). All set and ready in less than 5 minutes 😊

Thanks for reading!

Please feel free to share your feedback, I’d love to hear from you.

Automatically process Uber Receipts for expense approvals using AI Builder

A common scenario in most of the businesses is for employees to collect their receipts of the expenses made and then submit expenses along with receipts at the end of the month (or week/fortnight) for reimbursement. This creates a long queue (aka processing time and possible delay in processing) for HR/accounts team to review each receipt for approval. In this article, I have experimented with AI Builder to see if it can help in making the process faster and easier.

An example scenario here considers submission of an expense through a model-driven Power Apps app, but this could be used in Canvas Power App, Dynamics HR, emails or even any other system that connects with CDS. The process is to auto-approves the expense in expense in record tallies with the ‘Total’ field in Uber receipt or sends for further approval (manual offline process).

This demonstration requires three components to be built:

  1. A model-driven Power Apps app with an expense entity and form
  2. An AI Builder model to process Uber receipts
  3. A Power Automate flow to run on the create/update of expense, trigger AI Builder model and based on the result, change expense status

Step 1. Model-driven Power Apps app
Create a new PowerApps model-driven app and create an entity ‘Travel Expense’ entity with three fields:
a. Title
b. Total Expense ($ value)
c. Status

Note: An entity should support notes and attachments.
Also note: this step is not discussed in detail in this app. If model-driven apps are new for you, have a look at this excellent Microsoft docs resource.

Step 2. Create an AI Builder Model
Goto Power Apps maker portal and click on AI Builder on the left.

Click on Form Processing. You’ll notice the Examples and Best practices tab which have great tips on setting up AI models. Enter the name of your model (Read Uber Receipts – for example) and click on Create.

Next screen will ask you to upload documents. Select the files and upload.

Once the documents are uploaded, click on Analyze.

Now the AI engine will run..

..and it will ask you to tag the fields which it was able to find in the documents.

Select the Total field on the document and label it.

Click ‘Done’ and click ‘Next’

Next click on Train to train the newly created model

Once the training is completed..

..go to the Details page. This shows the document that is used to train the AI model, field identified during form processing and how to use the model (Power Automate and Power Apps).

You can also do the quick test by uploading another document and let the AI model find data in the document. Publish the model.

Step 3. Create Power Automate Flow

Go to the solution (created in Step 1) and click on New-> Flow to create a new flow.

Create a flow with a CDS trigger on the entity that we created in Step 1. Next, find notes associated with the expense record, fetch attachment in Notes and then use ‘Apply to each’ to run an AI model on each file. For calling the AI model, use ‘Predict’ action.

Next, fetch the result from the AI model and compare with the expense entered by the user in the form. If both match, then approve the record, else send for manual review.

Lastly, let’s test it out:

  1. Create a new expense record and attached an Uber receipt:

.. in the background, the flow ran:

Record gets updated to manual approval process (In Progress) if expense record total doesn’t match total in receipt:

..otherwise it gets auto-approved:

Hope you will find this useful. Please feel free to share your feedback 🙂