Skip to main content

Power Automate: SharePoint Copy file action fails on file names with a plus (+) sign

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

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 docu

CRM 2016: The attribute with AttributeId = 'guid' was not found in the MetadataCache.

During the export of an unmanged solution I always received the following error message from my CRM 2016 SP1 OnPremise development system: The attribute with AttributeId = '023bda49-9dfa-401e-b348-9374a4141186' was not found in the MetadataCache. Then I tried to remember what I did since the last solution version. => Yes, there was a field that I deleted, because the customer does not need it anymore. Because I am working on-premise it was easy to check the database for the specific attribute. First, I searched in the attribute table: SELECT [AttributeId]   FROM [Dev_MSCRM].[MetadataSchema].[Attribute]   where [AttributeId] = '023bda49-9dfa-401e-b348-9374a4141186' => result was nothing I concluded CRM deleted the field in this table but missed to remove the attribute from our customer solution. Next thing was to check the solutioncomponent table: SELECT [ModifiedOn]       ,[CreatedBy]       ,[ObjectId]       ,[IsMetadata]       ,[ModifiedBy