Saturday, July 17, 2021

Assembly 'Microsoft.Crm.Sdk.Proxy' with identity 'Microsoft.Crm.Sdk.Proxy, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' uses 'Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'Microsoft.Xrm.Sdk' with identity 'Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

 Please refer here for more details, usually when there is a mismatch for DLLs version this error occured.

https://vjcity.blogspot.com/2021/07/could-not-load-file-or-assembly.html


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



Here are some other links for Troubleshooting and learning:

·       Plugin in Dynamic 365 CRM

·       Connect to Dynamic 365 CRM from Console App using Azure Authentication

·       Could not load file or assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies

·       Unable to Login to Dynamics CRMOrganizationWebProxyClient is null

·       Assembly 'Microsoft.Crm.Sdk.Proxy' with identity 'Microsoft.Crm.Sdk.Proxy, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' uses 'Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'Microsoft.Xrm.Sdk' with identity 'Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

·       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.

·       Could not load file or assembly 'Microsoft.Xrm.Sdk, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies




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.