Skip to main content

How to add your personal PowerBI Dashboard as a system dashboard

Experiences with profile cards in Dynamics 365 v.9.1

Today I was testing out the profile cards feature and analysed how Microsoft implemented it as there is only little information to find on docs.microsoft.com, like this article:
https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/admin/enable-profile-card

While using the profile cards I experienced a behavior that was not really self-explanatory for me and my colleagues. Thanks to Chrome DevTools I was able to have look behind the scences to find more information on how it works.

Key findings

If you use a contact lookup field on an entity form and...
  • select a contact that has the field "emailaddress1" filled you will get a persona card popup
  • if the contact has "emailaddress1" not filled the persona card popup will not show up
For system users there are two fields that are used to show the persona card popup:
  • internalemailaddress
  • azureactivedirectoryobjectid
The following snippet helped me identify those fields and dependencies:

t.prototype._getQueryOptions = function (e) {
 switch (e) {
 case "contact":
  return "?$select=emailaddress1";
 case "systemuser":
  return "?$select=internalemailaddress,azureactivedirectoryobjectid"
 }
 return ""
},
t.prototype._getLpcIdentifiers = function (e, t) {
 switch (t) {
 case "contact":
  return {
   smtp: e.emailaddress1
  };
 case "systemuser":
  return {
   smtp: e.internalemailaddress,
   aadObjectId: e.azureactivedirectoryobjectid
  }
 }

Further I found that this file:
/uclient/scripts/livepersonacard.js?v=1.3.2399-191022-211210
provides information that it leverages Microsoft Delves Live PersonaCard App or feature to display the popup, which looks similar to what we can find here:
https://developer.microsoft.com/en-us/fabric-js/components/personacard/personacard

As Office Fabric JS offers a nice framework for controls the idea is not far away to use the components provided there for your own PCF controls which there are already a few controls shared on https://pcf.gallery like this DatePicker control: https://pcf.gallery/date-picker/

Comments

Popular posts from this blog

Yet Another Address Autocomplete PCF Control–powered by Bing

In this blog post I will not go into detail in how to install all the pre-requisites that are required to build and run PCF controls. My goal was to build a new PCF control and get into coding of PCF controls as fast as possible.

Here are a few links to articles that will help you installing the pre-requisites (Microsoft PowerApps CLI) https://docs.microsoft.com/en-us/powerapps/developer/component-framework/get-powerapps-cli
Other good references to get into this topic:
https://toddbaginski.com/blog/how-to-create-a-powerapps-pcf-control/
https://docs.microsoft.com/en-us/powerapps/developer/component-framework/create-custom-controls-using-pcf
I looked through the Guido Preite’s https://pcf.gallery/ which will help you find appropriate use cases / examples for your own needs. It did not take very long to find a simple example to start with: Andrew Butenko's https://pcf.gallery/address-autocomplete/
A few moments later I had the idea to create yet another address autocomplete control b…

Regarding SPFieldMultiLineText (Add HTML/URL content to a field) programmatically

I recently tried so set some HTML content in a SharePoint list column of type SPFieldMultiLineText.

My first approach was this piece of code:

SPFieldMultiLineText field = item.Fields.GetFieldByInternalName("Associated Documents") as SPFieldMultiLineText; StringBuilder docList = new StringBuilder(); docList.Append(""); foreach (DataRow docRow in addDocs) { DataRow[] parent = dr.Table.DataSet.Tables[0].Select("DOK_ID=" + docRow["DOK_MGD_ID"].ToString()); if (parent != null && parent.Length > 0) { docList.AppendFormat("{1}", parent[0]["FilePath"].ToString(), parent[0]["Title"].ToString()); } } if (docList.Length > 0) { // remove trailing tag docList.Remove(docList.Length-5, 5); } docList.Append(" "); string newValue = docList.ToString(); item[field.Title] = newValue;
What this code does is to get all associated documents to the main document and to add these document uri links to the "Assoc…

Set Multi-OptionSet values with a custom workflow activity

As the relatively new multi-optionset field type arrived with v.9 of Dynamics 365 the need to set values via workflow is quite a common requirement. So I searched within the community to find some ideas on how to solve and create such a workflow activity and so I stumbled upon Demian Raschkovan’s Workflow Tools with can be found on his github repository: https://github.com/demianrasko/Dynamics-365-Workflow-Tools/blob/master/msdyncrmWorkflowTools/msdyncrmWorkflowTools/Class/MapMultiSelectOptionSet.cs

It gave me some basic ideas to reach my requirements which are: Should be generic for any type of entity Ability to specify the attribute name of the required multi-optionset for that entity Provide a list of multi-optionset values (comma-separated) Keep existing values (True/Yes => add provided values / False/No => replace all values with the provided values Remove specific value(s) from an existing set of values
My code sample (without other dependencies):
using Microsoft.Xrm.Sdk; using Micr…