Saturday, July 17, 2021

Could not load file or assembly 'Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.

We all D365 Developers came across this annoying error often. Today, we will try to understand this one and quickly resolve it if it appears next time.

When connecting to Dynamic CRM we are required a couple of DLL’s which are

  • Microsoft.Crm.Sdk.Proxy                         :         9.0.0.0
  • Microsoft.Xrm.Sdk                                   :         9.0.0.0
  • Microsoft.Xrm.Sdk.Deployment               :         9.0.0.0
  • Microsoft.Xrm.Tooling.Connector            :         3.0.0.0

Now these DLL’s must be in one common version only either 8.0.0.0 or 9.0.0.0. If any one of these DLLs is not synced version-wise, then during runtime we have an error.

We can check the version of DLL’s from a property window in Visual Studio.


Remove the wrong version of the DLL’s and add the correct version of the DLL’s




Now the NuGet way, verify if you have the same version installed. 

 


Important Note: If you see the version of the NuGet same and still, run into the problem, then Uninstall the NuGet and Clean and Re-Build the solution or try verifying individual DLL’s version as explained above.




Wednesday, July 14, 2021

How to search in multiple table from a lookup in Dynamic CRM

Now we can use a single lookup field to refer multiple entities for searching (including a custom entity)

A lookup value submitted will be matched to a record in all the related entities.

Note: For now, to achieve this it is possible only via SDK or Web APIs. Interactive user interface support will be coming in a future release. 

Example:

Let's say you are hosting media for users in a library. You have many different MediaObjects, like “Books”, “Audio”, and “Video”. Creating a multi-table lookup called “new_Media” that has 1:M relationships to “new_Books”, “new_Audio”, and “new_Video” will result in a “new_Media” lookup table that provides quick identifications of records stored in specific tables.

 



Shown below is an HTTP post to CREATE Multiple lookup attribute.

It will create three relationships as depicted below image.


POST [Organization URI]/api/data/v9.0/CreatePolymorphicLookupAttribute HTTP/1.1 

 

Accept: application/json 

Content-Type: application/json; charset=utf-8 

OData-MaxVersion: 4.0 

OData-Version: 4.0 

 

{

 "OneToManyRelationships": [

   {

     "SchemaName""new_media_new_book",

     "ReferencedEntity""new_book",

     "ReferencingEntity""new_media"

   },

   {

     "SchemaName""new_media_new_video",

     "ReferencedEntity""new_video",

     "ReferencingEntity""new_media"

   },

   {

     "SchemaName""new_media_new_audio",

     "ReferencedEntity""new_audio",

     "ReferencingEntity""new_media",

     "CascadeConfiguration": {  

        "Assign""NoCascade",  

        "Delete""RemoveLink",  

        "Merge""NoCascade",  

        "Reparent""NoCascade",  

        "Share""NoCascade",  

        "Unshare""NoCascade"  

     }

   }

 ],

 

 "Lookup": {

   "AttributeType""Lookup",

   "AttributeTypeName": {

     "Value""LookupType"

   },

 

   "Description": {

     "@odata.type""Microsoft.Dynamics.CRM.Label",

     "LocalizedLabels": [

       {

         "@odata.type""Microsoft.Dynamics.CRM.LocalizedLabel",

         "Label""Media Polymorphic Lookup",

         "LanguageCode": 1033

       }

     ],

 

     "UserLocalizedLabel": {

       "@odata.type""Microsoft.Dynamics.CRM.LocalizedLabel",

       "Label"" Media Polymorphic Lookup Attribute",

       "LanguageCode": 1033

     }

   },

 

   "DisplayName": {

     "@odata.type""Microsoft.Dynamics.CRM.Label",

     "LocalizedLabels": [

       {

         "@odata.type""Microsoft.Dynamics.CRM.LocalizedLabel",

         "Label""MediaPolymorphicLookup",

         "LanguageCode": 1033

       }

     ],

 

     "UserLocalizedLabel": {

       "@odata.type""Microsoft.Dynamics.CRM.LocalizedLabel",

       "Label""MediaPolymorphicLookup",

       "LanguageCode": 1033

     }

   },

 

   "SchemaName""new_mediaPolymporphicLookup",

   "@odata.type""Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata"

 }

}



Add new relationship to existing Multiple-lookup

POST [OrganizationUrl]/api/data/v9.0/RelationshipDefinitions

{

  "SchemaName": "new_media_poly_new_newspaper",

  "@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",

  "CascadeConfiguration": {

    "Assign": "NoCascade",

    "Delete": "RemoveLink",

    "Merge": "NoCascade",

    "Reparent": "NoCascade",

    "Share": "NoCascade",

    "Unshare": "NoCascade"

  },

  "ReferencedEntity": "new_newspaper",

  "ReferencingEntity": "new_media",

  "Lookup": {

    "AttributeType": "Lookup",

    "AttributeTypeName": {

      "Value": "LookupType"

    },

    "Description": {

      "@odata.type": "Microsoft.Dynamics.CRM.Label",

      "LocalizedLabels": [

        {

          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",

          "Label": "Media Polymorphic Lookup",

          "LanguageCode": 1033

        }

      ],

      "UserLocalizedLabel": {

        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",

        "Label": "Media Polymorphic Lookup Attribute",

        "LanguageCode": 1033

      }

    },

    "DisplayName": {

      "@odata.type": "Microsoft.Dynamics.CRM.Label",

      "LocalizedLabels": [

        {

          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",

          "Label": "MediaPolymorphicLookup",

          "LanguageCode": 1033

        }

      ],

      "UserLocalizedLabel": {

        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",

        "Label": "MediaPolymorphicLookup",

        "LanguageCode": 1033

      }

    },

    "SchemaName": "new_mediaPolymporphicLookup",

    "@odata.type": "Microsoft.Dynamics.CRM.LookupAttributeMetadata"

  }

}


Finally, we can see all entities in lookup





References

https://powerapps.microsoft.com/en-us/blog/announcement-multi-table-lookups-are-now-available-as-a-preview/

https://docs.microsoft.com/en-us/powerapps/developer/data-platform/webapi/multitable-lookup?branch=pr-en-us-4448


Wednesday, July 7, 2021

How to search lookup based on other attribute in Dynamic CRM

 Using the lookup, we can search records by typing in the search keywords to filter the list.

This search is performed on all fields that are listed in the Find columns in the Quick Find View of the entity.

Below are the steps in Power Apps or UCI Settings.

1] Navigate to the respective entity and click on views and edit Quick Find view for that entity.

2] Edit find table columns and select the columns that are required for search.




Here is the same we can achieve in Classic mode as well.

1] Navigate to the respective entity and click on views and edit Quick Find view for that entity.

















How to stop showing recent records for lookup fields in UCI

When using lookup fields on the form, it by default shows the recent records in the UCI environment. We need to hide the recent records for the lookup fields.

 

Solution

We need to change the field behavior settings.

1] UCI Form Settings

Check the Disable most recently used items and then save and publish the form customization changes.


2] Classic Editor Form Settings

If your recent items are still showing up, try to use classic editor and turn on or checked the field behavior setting as depicted in below image.









Monday, July 5, 2021

Generic Method to Hide and Show Tab and Section

 

Problem Statement

We need to hide and display TAB’s and their respective SECTION's based on configured values. 

The configuration will be loaded based on the template selected for a given entity records.


Solution

As current D365 CRM does not support any out-of-box feature to support this, we created a generic script-based solution to support our scenario.

Note: We cannot show hide sections/tab using Business rules.


Template Configuration

We created a configuration entity which can be used by the End-Client to configure which TAB and SECTION to show.

Tab and Section are created as a Multi-Select for user to decide and configure which section and tab to be displayed.




Configuration Rules
When NO Section Name is listed for a given TAB, by default script should display all the sections for it.

But When Section Name is specified, it will display only those sections for a respective TAB.


Please reach out to me for detailed script and solution.

 

Thanks.

Vipin Jaiswal

vipinjaiswal12@gmail.com




How to hide a section in MS CRM 2016 based on user logged in ?

https://vjcity.blogspot.com/2016/09/how-to-hide-section-in-ms-crm-2016.html