Code Apps for Dataverse – Part 2 [Updating your Apps and Deployment]

Now that we learnt how to get started and put up your first blank app in Code Apps for Dataverse – Part 1 [Using VS Code and Claude Code] – Getting Started. In this post, we ‘ll understand how you can continue to work with your Code Apps like you would for any other solutions in Dataverse.

Pushing your App to the Environment

Now that Code Apps was run locally and hosted on the environment. We’ll see how it is coming along –

  1. Code Apps was running on Localhost as we saw in the previous post. You can always use the command pa app run to test this and it’ll give you a URL which on the browser of your environment will appear like this –


  2. Now, you can check if this is published or not by running pa app list


  3. And then, you’ll be able to push this to the environment itself.
    First, npm run build and then pa app push
    This will first build the app locally and then push it to the environment.


  4. Here, the App is now pushed to your preferred Solution which you have set for your evironment.

    Now, the App is on the environment and can be run from there.

Update Your Changes

Now that the App is deployed, I’ll continue to make more changes to it –

  1. Just chat with Claude Code and build your App first. Like so –

  2. Once all the changes are written – you can run pa app run to run the App server locally.


  3. Now, once you copy the URL it gave back – basically the same one which is generated for localhost.
    It’ll now show the changes you did.



  4. And then again, push the changes to the environment. Using the same commands –
    npm run build
    pa app push

Running the App on the Environment

We have not run it locally, let’s run it on the environment –

  1. Locate your App like you would do for any Canvas/Model-Driven app and you can simply Run it.

  2. But here, something is wrong – it didn’t load my app. Maybe something is missing and I need to debug. Correct?

    This segways into debugging mode.

Debug the App on the Environment

Now, let’s debug the App on the environment –

  1. Simply chat with Claude Code explaning the issue. Follow the instructions based on what it says and every time the App is updated, run npm run build and then pa app push to keep pushing your changes to the environment and keep checking.

And that’s pretty much how you go about it.

Hope this was helpful!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you

Code Apps for Dataverse – Part 1 [Using VS Code and Claude Code] – Getting Started

Code Apps has been our earlier this year and I’ve seen people start to use it already. But some stumble upon it and somehow end up creating and managing it – but when we try to remember where we started, it get a little blurry.

Also, this is great segway to move to something not Microsoft-native from a development standpoint and moving away from using Visual Studio (traditionally for C# .NET Framework Plugins) to Node.js based vibe-coded Code-App development.
So, we’ve come from Model-driven Apps -> Canvas Power Apps -> now Code Apps!

Let’s get your first Code Apps out of th door.

Enable Code Apps in your Power Platform Environment

Given you might be a Power Platform / Dynamics 365 Admin already, go to the your Environment’s Settings as below –

  1. Look for Features –

  2. Then, Code Apps might already be Disabled, you need to Enable it.

  3. Make sure to Save the settings and check if it is enabled.


    That’s it, you’re set. Now let’s get your environment setup.

Setup your VS Code with with Node.js [and Claude Code] to start writing your Code App

Suppose you are using VS Code [the most popular choice for coding lately 😊, or vibe-coding with Claude Code], here’s how you set it up –

  1. Make sure Node.js is setup on your machine post. Check it using Claude Code on Visual Studio.
    Use “node –version” to check the installation is in place.


    In case Node.js is not installed – on a Mac, use Homebrew to get it or from winget on a Windows machine.


  2. That set up, now – Power Apps CLI or “pac cli” for short.
    So, check using pac –version
    I’ll ignore the rest of the message for now.


  3. Now, my preference is to build locally and then host it on the environment. So, my next step is – to authenticate Power Platform CLI to the target environment.


    One of the ways to authenticate Power Apps CLI is to also use Device Login method. In that case, use the below –


  4. Use pac org who to confirm if you are authenticated into the correct environment.


    Here, you are set with your tools. Now, let’s create a project locally.

Setup A Local App Folder

Now, let’s setup a local app folder now that your tools are authenticated and ready.

  1. Run the command to create a Project folder locally and name your app.

  2. Now, once I run this in Terminal on my VS Code, it’ll create the App.


  3. As this looks good, I’ll now go ahead and initialize this in my connected environment.
    Using this command pa app init --display-name "Project Profitability Dashboard" --environment-id XXXXXX-XXXX-e9d2-8c94-e577a72007d7
    Once you run it in your terminal, it’ll give you this on your browser

  4. Confirm the local build using ls command.

    You’ll see the files listed. Now you are all set.

Add Data Source to the Code App

Now, let’s add Data Source to the code App. In this case, it’ll be our Dataverse environment itself –

  1. Use this command pa app add data-source shared_commondataserviceforapps to add the Data source. I’m not using a Connection Reference so it just took my Entra ID.


  2. And I select the connector, it’ll be finally connected. Now, since this is a blank project, just add a dev script using npm install --save-dev vite

  3. It’ll create the same code and you are done. Now, you can continue to talk to Claude Code to build your Code App and run it using pa app run


    Now, we’ll see how the App can run and your changes can start panning out!
    Part 2 – Code Apps for Dataverse – Part 2 [Updating your Apps and Deployment]

Hope this was helpful!

Thank you

Access Customer Insights in your Office 365 tenant

As a newbie to Customer Insights myself, I struggled to find where from Office 365 or Dynamics itself do I access Customer Insights!

I tried looking in the Office 365 under All Apps, I couldn’t find it as any other App

Here’s a direct link for the same –

Use this link in the O365 Logged In browser to access Customer Insights – https://home.ci.ai.dynamics.com/ (Bookmark this 😊)

And you’ll be taken to the Home Page which appears like this –

Alternatively

You can also search for Customer Insights and it’ll give you the Log In page as below from which you can click on Sign In –


And the first result will open the Sign In page for Customer Insights if you are already logged in the browser with the O365 account already.

From Admin Portal

Here’s how you access it from the Office 365 Admin Portal.

  1. Go to Admin Center area in M365 Admin Center and click on All admin Centers. It’ll show the list of all Admin Centers in your tenant.

  2. Clicking on Customer Insights there will then open up the Customer Insights and will help you navigate from choosing between Audience Insights / Engagement Insights (preview at the time of this post)

Hope this was helpful! Here are some more Dynamics 365 posts which you might be interested in –

  1. Dynamics 365 Storage Utilization | Dataverse Storage | Power Platform Admin Center
  2. Use Hierarchy in Roll Up Fields in Dynamics 365 CRM
  3. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  4. Get GUID of the current View in Dynamics 365 CRM JS from ribbon button | Ribbon Workbench
  5. Dynamics 365 App For Outlook missing on SiteMap in CRM? Use shortcut link [Quick Tip]
  6. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  7. Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM
  8. Excel Importing Notes (Annotation) entity in Dynamics 365 CRM
  9. Enable/Disable the need to Approve Email for Mailboxes in Dynamics 365 CRM CE
  10. Call Azure Function from Dynamics 365 CRM using Webhooks
  11. Show Ribbon button only on record selection in Dynamics CRM
  12. Accessing multiple occurrences of a field in Business Process Flow using JS in D365 CRM

Thank you!!

Upload documents more than 50MB to SharePoint in Dynamics 365 | Quick Tip

Currently, Dynamics 365 SharePoint Integration document limit is 50MB.

And if you try to upload a Document greater than 50MB, it’ll give you the below error –

So here’s what they mean by directly uploading to SharePoint, in case you are new to Dynamics and don’t know if you can access SharePoint directly from Dynamics.

Quick Tip

Here’s how you can upload larger files greater than 50MB –

  1. In the Documents tab, you’ll see the

  2. This will take you to the SharePoint location in the new tab which this Document folder points to –

  3. And you can choose to upload your file –

  4. And your file will be uploaded even if it’s larger than 50MB

  5. And the same will be reflected in Dynamics’ Document grid on the record as well.

Hope this was helpful! Here are some more Dynamics 365 posts which you might be interested in –

  1. Enable SharePoint Online integration Dynamics 365 | Power Platform Admin Center
  2. Dynamics 365 Storage Utilization | Dataverse Storage | Power Platform Admin Center
  3. Use Hierarchy in Roll Up Fields in Dynamics 365 CRM
  4. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  5. Get GUID of the current View in Dynamics 365 CRM JS from ribbon button | Ribbon Workbench
  6. Dynamics 365 App For Outlook missing on SiteMap in CRM? Use shortcut link [Quick Tip]
  7. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  8. Excel Importing Notes (Annotation) entity in Dynamics 365 CRM
  9. Enable/Disable the need to Approve Email for Mailboxes in Dynamics 365 CRM CE
  10. Call Azure Function from Dynamics 365 CRM using Webhooks
  11. Show Ribbon button only on record selection in Dynamics CRM
  12. Accessing multiple occurrences of a field in Business Process Flow using JS in D365 CRM

Thank you!!

Enable SharePoint Online integration Dynamics 365 | Power Platform Admin Center

In this post, I will highlight on how you can enable SharePoint Online Document Integration with Dynamics 365 CRM and how these records are structured in SharePoint as well as Dynamics CRM.

Hope this post covers it for you to get started with Dynamics 365 SharePoint Online Integration! 😊

Pre-requisites

Here are the pre-requisites you need to make sure you can enable SharePoint Online integration with Dynamics 365 CE/CRM.

  1. With Dynamics 365 Online, you’ll also need SharePoint Online plan as well which is available with M365/O365 Plans. Example: E3

  2. Also, make sure you are Dynamics 365 Admin as well as SharePoint Admin as well. In case you happen to the be Global Administrator, even better! 😊

Before enabling SharePoint Integration

Before we enable SharePoint Integration, notice that Documents is not shown in related records under entities like Accounts, for example.



Power Platform Admin Center

You can visit Power Platform Admin Center (https://admin.powerplatform.microsoft.com/environments) to enable SharePoint Integration

  1. Navigate to Power Platform Admin Center (https://admin.powerplatform.microsoft.com/environments) and then to the environment with which you want to enable the SharePoint Online integration with –
    Then, go the to Settings of the Organization –

  2. Under the Integration section, navigate to Document management settings

  3. It’ll take you to the old Document Management Settings in Dynamics 365 CRM. Here, you’ll be able to select the Enable Server-Based SharePoint Integration

  4. The next dialog box will walk you through the steps to enable the SharePoint Integration with your Site. Click Next.

  5. Now, you’ll be asked if you want to enable for Online or On-premise. In this example, we are looking at Online, hence, Online will be selected and you click Next.

  6. Further, you’ll be asked what Site should the integration be enabled on.

  7. It should be the SharePoint Site you want to enable this to, so you can pick it from the SharePoint site itself. Copy the selected URL from your respected SP Site.


    And paste it in the box where URL is asked. Then click Next as shown below.

  8. Final step is to click Finish post the Site is found to be Valid.


  9. At this point, Documents will be visible on entities.

  10. But, if you navigate and try to enter Documents, you’ll see the error message saying that Site is missing

    This completed the first step of the process. Next step is to enable the entities for SharePoint integration of Documents.

Enable Entities for SharePoint Integration

In this section, once we have enable the Dynamics 365 environment for SharePoint integration, we’ll now enable the entities which we want the Document Integration to be enabled on –

  1. Now, you’ll need to enable the entities for Document Management


  2. In this, you have to make enter the URL of the SharePoint Site where you want the Document Library to reside. I’m entering the main SharePoint URL itself and we’ll see where this ends up.
    In this, make sure you select the Entities which you want to enable for Document Management.
    Most of common Business Entities are pre-selected, you only need to paste the URL of the Site location and you are good to click on Next.

  3. Next, it’ll ask the structure of the folders that should be created in the SharePoint.
    To understand Based on Entity, you can check this – https://d365demystified.com/2018/12/17/based-on-entity-folder-structure-in-d365-sharepoint-online-integration-in-d365/

  4. Once you click Next based on your selection, you’ll simply be prompted where the Document Locations are being created.
    You just need to click OK.

  5. Further, it’ll process the entities which were initially selected in #2 above.

  6. In a few moments, this will be completed.
    You can simply click finish.

  7. Once done, you can now check that the error in Account’s Document section is gone and you’ll see that the Documents grid is ready for Documents to be uploaded.

  8. And here’s the SharePoint Folder Structure created in SharePoint.


  9. When you navigate and even if you open the grid on the Dynamics 365 record, the folder is created in SharePoint even if you don’t upload anything.

  10. And for example, you upload a sample Document on the record

  11. It’ll appear in the Documents tab here.

  12. And also on the SharePoint library which we just saw

    Easy!!

SharePoint Site Structure in Dynamics 365

If you are further curious on what happens in Dynamics 365 and which kind of records are created, here you go –

  1. The first record to be created in a high-level is SharePoint Site.
    Under this, a Document Location record is created.

  2. And in this Document Location record, a Default Document Location is created which will house the other records

  3. And in this Document Location record itself (if you open the one marked in the #2 above)
    A child Document Location record is created [And this is created when you open the Document tab on the entity record itself]
    So, go to the Document Locations in related in the Documents on Default Site 1 itself

  4. And these are the records under the Child Document Location records.

    So this is what happens on a very high-level. 😊

Hope this was helpful! Here are some more Dynamics 365 posts which you might be interested in –

  1. Dynamics 365 Storage Utilization | Dataverse Storage | Power Platform Admin Center
  2. Use Hierarchy in Roll Up Fields in Dynamics 365 CRM
  3. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  4. Get GUID of the current View in Dynamics 365 CRM JS from ribbon button | Ribbon Workbench
  5. Dynamics 365 App For Outlook missing on SiteMap in CRM? Use shortcut link [Quick Tip]
  6. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  7. Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM
  8. Excel Importing Notes (Annotation) entity in Dynamics 365 CRM
  9. Enable/Disable the need to Approve Email for Mailboxes in Dynamics 365 CRM CE
  10. Call Azure Function from Dynamics 365 CRM using Webhooks
  11. Show Ribbon button only on record selection in Dynamics CRM
  12. Accessing multiple occurrences of a field in Business Process Flow using JS in D365 CRM

Thank you!!

Call Flow from Webhooks in Dynamics 365 CRM | Power Automate

In case you are wondering if there are other ways to call a Flow apart from just Dataverse connectors, well – There are ways! 😊

Here’s how you can use Webhooks registered on Dynamics 365 CRM to call a Flow in Power Automate using HTTP Request trigger

Pre-Requisites

Given that you already have Admin Access to create Flows with HTTP Request Triggers, you’ll need to have Plugin Registration Tool in case you are not familiar – Download Plugin Registration Tool for Dynamics 365 CRM using PowerShell

Initiate a Flow

Here’s how you start building your Flow –

  1. You must select the HTTP Trigger when you start a new flow. This will be your Flow trigger.

  2. Now, in order to be able to get the URL of the HTTP Trigger which you’ll need, you’ll need to save the Flow first.
    And for that, Flow needs to have more than 1 step. So just go ahead and add a variable, maybe. 😊

  3. Once you save the Flow, the URL will be generated which you can copy

  4. Copy this URL and paste it in the Notepad. We’ll come to it later.
    It should look like this –

    So we’ll come to this later. Let’s keep this handy in clipboard since you’ve copied it anyway and let’s move towards registering the Webhook itself.

Register Webhook in Dynamics 365 CRM

Given that you have Plugin Registration Tool and you are logged in, you can proceed with registering a Webhook in the environment –

  1. In the menu, select Register a Webhook option.

  2. Now, you can start by giving it a name.
    Then, in Endpoint URL – copy only till the work invoke
    https://prod-131.westus.logic.azure.com:443/workflows/6092c774224e498ebe413f3d7c05a45e/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gvfm52Mpnhsz4Ew4ufRllNM_VhfC6a-GkCpM7AigPU0

    Also, select the Authentication as HttpQueryString

  3. Now, coming the next part, you can start add properties to this –
    Green are the Properties, Pink are the Values

    https://prod-131.westus.logic.azure.com:443/workflows/6092c774224e498ebe413f3d7c05a45e/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gvfm52Mpnhsz4Ew4ufRllNM_VhfC6a-GkCpM7AigPU0

    Also, in case you are wondering what does the %2F mean – It’s the HTML encoding for a slash symbol “/“
    Ref Link: https://www.w3schools.com/tags/ref_urlencode.ASP

    And, the properties should look like below –


  4. Now, you can go ahead and add a Step just like you would do in a Plugin assembly


    And then, for example, register a step on Associate. It could be any message.

  5. And, when you Associate a record, example – Assigning a security role to a User –

  6. The Webhook will call the HTTP Request Flow


    And if you open the Flow, you can expand the first step and see the Detailed outputs






  7. You can copy the above Outputs and use this to generate Schema for the HTTP Trigger so that you can use it further in the Flow


    And this is how it will be generated

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Showing Sandbox or Non Production Apps in Power App mobile app
  2. Create a Power Apps Per User Plan Trial | Dataverse environment
  3. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  4. Co-presence in Power Automate | Multiple users working on a Flow
  5. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  6. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  7. Call a Flow from Canvas Power App and get back response | Power Platform\
  8. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  9. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  10. Asynchronous HTTP Response from a Flow | Power Automate
  11. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  12. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!

Pinning Records in Dynamics 365 CRM in Unified Interface [Quick Tip]

A small but super useful feature is to be able to access pinned records which you frequently visit / need to visit.

Pinning Records

Here’s how you pin records in Dynamics 365 CRM –

  1. In your left-hand-side of the navigation pane, you’ll see Recents and Pinned section.
    Right away, no records are pinned. You can pin records from Recent items only at this point.

  2. If you expand the Recents section, you can hover over the records to find the pin appear on the records which you want to pin.

  3. Once you pin them, they’ll appear in your Pinned area. Since you Recent records would change over time as you continue to access different records.

  4. In case you want to remove this, you can also unpin by clicking on the unpin icon as shown below

  5. Good thing is that pinned records are available all other Apps as well.
    So you could be in any App and you’ll retain all the Pinned items

Hope this was helpful! Here are some more Dynamics 365 posts which you might be interested in –

  1. Use Hierarchy in Roll Up Fields in Dynamics 365 CRM
  2. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  3. Get GUID of the current View in Dynamics 365 CRM JS from ribbon button | Ribbon Workbench
  4. Dynamics 365 App For Outlook missing on SiteMap in CRM? Use shortcut link [Quick Tip]
  5. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  6. Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM
  7. Excel Importing Notes (Annotation) entity in Dynamics 365 CRM
  8. Enable/Disable the need to Approve Email for Mailboxes in Dynamics 365 CRM CE
  9. Call Azure Function from Dynamics 365 CRM using Webhooks
  10. Show Ribbon button only on record selection in Dynamics CRM
  11. Accessing multiple occurrences of a field in Business Process Flow using JS in D365 CRM

Thank you!!

Use Hierarchy in Roll Up Fields in Dynamics 365 CRM

Here is the use of Use Hierarchy in Dynamics 365 CRM Roll-up Field’s Use Hierarchy option when defining the logic of the Roll-up fields.

Scenario

Let’s consider this out-of-the-box scenario where an Opportunity Rolls up Est. Revenue to the Account it is tagged to. Also, that Account also has another Account set in the Parent Account field.

So, the hierarchy here is Account (Parent Account) -> Account (child Account) -> Opportunity

Now, our demonstration of Use Hierarchy will show where does the Open Revenue (field on the Account) should Roll up from it’s own Account or from the Opportunity of the child Account’s Opportunity as well.
You’ll see a Hierarchy Icon to all records that participate –


And when you select either of them, you’ll be able to click on View Hierarchy button on the view’s Ribbon


This will show you how the Accounts are arranged in hierarchy


And here’s where you can access your Hierarchy Settings

Let’s see!

Use Hierarchy in Roll Up fields

Here’s how you would see the option to switch between Use Hierarchy in the Roll Up fields in Dynamics 365 –

Use Hierarchy: YES

Now, assuming this is set to Yes and it selects the OOB relationship that defined this hierarchy

  1. Consider the child Account “Alpine Contoso” (This is a child account of “Alpine Ski House Main“)


  2. And this Account Alpine Contoso has it’s own Opportunity worth of $25K


  3. Now, let’s look at the Alpine Ski House Main‘s Opportunity which is worth $30K

  4. Now, the Open Revenue for this child Account “Alpine Contoso” is $25

  5. However, since we are using Hierarchy as YES and selected the relationship between the self-lookup of Account itself, this value will also add up to the Open Revenue of the parent Account “Alpine Ski House Main” is $30K + $25K = $55K


    Here, we saw that the Open Revenue from the child Account too Rolled up to the Parent Account.

Use Hierarchy: NO

Assuming, the Roll-up field is now set to NO to Use Hierarchy, let’s see the difference on the Parent Account “Alpine Ski House Main” itself.

  1. If we look at the Alpine Ski House Main‘s Open Revenue value, it’ll only have $30K


  2. This $30K belongs to it’s own child Opportunity and not child Account i.e. Alpine Contoso‘s Opportunity.

Hope this was helpful! Here are some more D365 posts which you might be interested in –

  1. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  2. Get GUID of the current View in Dynamics 365 CRM JS from ribbon button | Ribbon Workbench
  3. Dynamics 365 App For Outlook missing on SiteMap in CRM? Use shortcut link [Quick Tip]
  4. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  5. Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM
  6. Excel Importing Notes (Annotation) entity in Dynamics 365 CRM
  7. Enable/Disable the need to Approve Email for Mailboxes in Dynamics 365 CRM CE
  8. Call Azure Function from Dynamics 365 CRM using Webhooks
  9. Show Ribbon button only on record selection in Dynamics CRM
  10. Accessing multiple occurrences of a field in Business Process Flow using JS in D365 CRM

Thank you!!

Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM

In Dynamics 365, “My” views show records owned by the System Users themselves. Let’s look at how you can have views that let’s you filter records based on the Owner Team which you are a part of.

Scenario

Let’s assume the below scenario in terms of Contacts entity. All users have Contacts owned by them. Out-of-the-box views show filter “My” views only by Owner field.

  1. Default My Active Contacts view will show you Contacts you are Owner of. (Similarly, this could apply to every other record as well)
    Example: Amit is logged in and he is seeing his Contacts under My Active Contacts




  2. Now, Amit is also part of a Sales Team which is an Owner Team in Dynamics 365 CRM/CE


  3. And, there is a Contact which is assigned to the Sales Team itself and not an individual user.


    I’ll just expand the header and show you the Owner

  4. So, we’ll make this Contact also appear for Amit on his new My Team(s) Contacts’ view. You can call your view something else as well.
    So let’s see we can do this.

Create a new View – Edit Filter Criteria

In order to make the Owner Team’s record available, we’ll have to work by creating a new view and editing the Filter Criteria of the new view. Let’s see how –

  1. I’ve created a new view called as My Team(s) Contacts. And I’ll start by editing the criteria itself.



  2. Start by selecting Owning Team (Team) under the Related section of the fields selection drop-down.



    Under that, open the drop down to expand it’s related records.


  3. Under Owning Team (Team), look for Users. Notice that it doesn’t have any entity name mentioned in brackets like other fields in the list. Meaning, it is the sub-grid i.e. Child Record list under the Team record.

  4. Once you select the Users, expand the dropdown under Users which will be the fields of the System User record itself.


  5. In this list, select User itself. This is the GUID of the User record. Pro Tip: Any field with the name of the entity itself is a GUID/Primary Key of the entity record itself.

  6. And in this last selection, you’ll notice that the Current User is already selected for you.

  7. That’s it. Save your criteria and publish the changes.
    Let’s see the results.

Result

Now, if you navigate to the new view you created with the selected criteria, you’ll see the records Owned by Teams which the logged in user is a part of –

Caveat – Clubbing into 1 view (Owner + Owning Team’s Member) is not possible

Let me point out a caveat right away before we proceed – In case if you are wondering that we can do this in the same view by adding more ‘Related’ entity criteria which will look like the below – it won’t work! 🙁

Because, the Filter Criteria will not consider (or let you select these rows in any order) and let you make it in an OR group.
By Default, this is an AND group i.e. a Field + Related criteria can’t be grouped together.
If you set the above criteria in any order, it’ll end up returning 0 results.


Hope this was useful!

Here are some more Dynamics 365 related posts you might want to check –

  1. Use Rich-Text Control for Multiple Lines of Text in Dynamics 365 CE | Quick TipDuration field in Dynamics 365 converts Hours value to Days in Dynamics 365 | [Flow Workaround to convert in Hours and Mins]
  2. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  3. Show custom ribbon button based on Security Role of the logged in User in Dynamics 365 | Ribbon Workbench in XrmToolbox
  4. Connecting XrmToolBox to an MFA enabled Dynamics 365 environment | Azure AD
  5. Form Access Checker in new Power Apps Form Designer | Model-Driven Apps in Dynamics 365
  6. Use Rich-Text Control for Multiple Lines of Text in Dynamics 365 CE | Quick Tip
  7. Ribbon button visibility based on a field value in Dynamics 365 | Ribbon Workbench
  8. Make On-Demand Flow to show up in Dynamics 365 | Power Automate
  9. Find deprecated JS code used in your Dynamics 365 environment | Dynamics 365 v9 JS Validator tool | XrmToolBox
  10. Remove ‘This Email has been blocked due to potentially harmful content.’ message in Dynamics 365 Emails | OrgDbSettings utility

Thank you!

Dynamics 365 PSA v2 to v3 Upgrade failed? Here’s what to do.

This is a little tricky upgrade from PSA v2 to PSA v3. I’m sure by this time of the year, most of you must have upgraded and this post by me comes a little late than it should.

Here’s my experience and what help from Microsoft Support I needed to complete the Upgrade successfully.

So usually, this is what you expect when you initiate the upgrade process. You go to the Instance Picker from Dynamics 365 Admin Center.
upgradeButton

And you can see that you are on PSA v2.4.x version and the New version available is 3.10.x. When you kick off, it starts running
upgradeInProgress
But, it fails like this.
installFailed

Let’s take a stab at it!

I usually prefer to go with the old school classic Instance Picker, if you want to have a quick access to it, check this post – D365 Admin Center: Instance Picker Link

Solution Health Hub

Note: Please be aware that below mentioned steps that involve Project Service & Project Service Upgrade Rule Set can only be provisioned by Microsoft Support and we need to create a Support Request with Microsoft for them to provide this Rule Set. These comes in a Managed Solution Microsoft Support installs from their end into your environment.

  1. Assuming Microsoft Support has enabled this Rule Set for your organization, you can go to Solution Health Hub
    createNewAnalysisJob
  2. Then, select either Project Service or Project Service Upgrade
    ruleSet
  3. It will automatically run asynchronously as and when you create it. It should display results in a few moments.
    failedValidation
    In this case, my failures were that Resource Requirement records didn’t have Hours & Resources were not filled in. Some Project Tasks didn’t have Project attached to them which resulted in corrupted PSA data according to the Rule Set and hence, the upgrade fails.
  4. Now, in my case, I cleaned this data manually. Post that, I created another Analysis Job to ensure that there are no more failures.
    passedRuleSet
    Also, there’s another Rule that isn’t mentioned here but is a reason for failure. That is – Project Name (msdyn_Subject) should NOT be Blank. Use Advanced Find to find these records and correct manually.  Please ensure this manually as it won’t appear here. 
  5. Now, there’s a workflow called as Update User Work History. It should have shown 3.3 or higher in the version to select, unfortunately, this will come once the upgrade fails 1 time.
    oldWF
  6. Now, you are all set to kick off Upgrade Once again. It will fail due to the incorrect workflow mentioned above in #5.
    installFailed
  7. Now, you can go back and check that workflow, it should have the correct version appearing (due to the partial upgrade that happened in #6 above, which eventually failed)
    updateUserWorkHours
    Set this to 3.3 and Activate the workflow again.
  8. Now, trigger the Update to PSA v3 one more time. And this time it should go through correctly.
    installedPlease note, due to constant upgrades in the platform/PSA, there could still be some undetected issues which could result in failure. Hence, I tried to put what I experienced in general.

    Post this, also ensure that all SDK Message Process Steps and related Workflows related to PSA are enabled.

In case you are also looking to find out about dependencies about failed Solution Upgrades, you can check this post too – Check Managed Solution failures in Solution History in D365 CE

Hope this helps!