Dynamics CRM Option Set data into Azure Data Factory - dynamics-crm

I'm using Azure Data Factory to create a pipeline that retrieves data from the option set entity, however this fails with the following error:
Dynamics operation failed with error code: -2147219456, error message: The 'RetrieveMultiple' method does not support entities of type 'optionset'. MessageProcessorCache returned MessageProcessor.Empty. .
Activity ID: 00c29e02-b71f-45e5-bb10-e6bac862f305
I've seen some workarounds suggesting to use FetchXML, but I'm not sure how to incorporate this, and the solutions seem to suggest that I need to know some of the attributes in this entity.
What I'm currently trying is to use the Ingest wizard - I select my Dynamics CRM linked service (which works fine on other entities), select the option set entity and then configure my target as parquet files. Being new to ADF, I'm not sure how to embark on an alternative approach that uses FetchXML. And all I know about the data, is that in several other entities there are several fields containing IDs and I need to know the text value, or 'label' which I intend to achieve as a left join further in the process.
How can I proceed, in ADF, to get the contents of the option set table (all of it - as I'm trying to set up an automated process here).

error message: The 'RetrieveMultiple' method does not support entities of type 'optionset'.
As the error message indicates that method does not support means we can't do it any way.
I'm not sure how to embark on an alternative approach that uses FetchXML.
For this workaround you need to use REST API given below.
https://crmdev.crm.dynamics.com/api/data/v9.1/roletemplates?fetchXml=<fetch> <entity name="roletemplate" > <attribute name="name" /> <attribute name="roletemplateid" /> </entity> </fetch>
Replace the parameters with required values.
Use the Azure REST API activity to load the data using API.

Related

Bulk Update of Entity Messages in Microsoft Dynamics 365

My Requirement
I have renamed my CASE entity display name to ENQUIRY so wanted to Change all CASE entity messages(e.g. Wherever "CASE" is used in message, will be changed to "ENQUIRY").
I tried getting the ResourceKey name from all the REGX file from the CRM, since was not sure which REGX file will be having the required ResourceKey, still was not getting any result.
When I added the entity messages for "CASE" entity and exported the solution the customization.xml had the following ResourceKeys and many more
So wanted to know how can we perform an bulk Update on Entity Messages without manually going and changing each message for an entity in Microsoft Dynamics.
I guess you are not trying to change schema name references or this ResourceKey, and you are trying these generic Entity messages. You can export translations to bulk edit in Excel and reimport. Read more
They are stored in displaystrings entity. If you want to try programmatically - still web api has possibility with below endpoint. Read more
[organization URI]/api/data/v9.0/displaystrings
The plural name (display name) should be used in a parameterized way from the CRM product perspective, though I remember the system views (Active cases, etc) were needed to be taken care after such display name changes. The customizations.xml will have them to update in one shot.

You can not complete this action for this component because of the configuration of its managed properties

I am trying to make a field optional in the Dynamics CRM
The name of the entity is Case and the internal name of the field is customerid
When I try to change it from mandatory to optional, I get the below error message
You can not complete this action for this component because of the
configuration of its managed properties.
this is happening in Dynamics CRM online
I'm pretty sure you won't be able to.
It's one of the few fields where mandatory behaviour is enforced at the platform level, whilst most mandatory fields are enforced only on the user interface.
If I remember correctly, tring to create a case without a customer via the API will result in an exception.
Looking at the managed properties for the customerid field on my recently provisioned CRM Online, shows that I'm unable to change the requirement level - I don't even get the option for setting it as optional.
I wanted to remove the field from the form, but I was not able to do it from the UI
So I used XRMToolBox.
There is a plugin called as FormXML Manager, enable it in the XRMToolBox and load the entities. Once this is done you can remove the required field and publish the form

how to retrieve select option ids and values via the web api

I'm using the api/data/v8.0 API endpoint of a microsoft crm 2016 and I can retrieve and update a specific entity using GET and PATCH on api/data/v8.0/accounts(063e4c86-e7f0-e511-93f7-123456bb6ce7).
That entity has a property called jobtypecode (I can see that on the JSON response of the GET) and on the front end of the CRM the possible values are the following (I retrieved them using dev tools by inspecting that html select):
721874717 Full Time
721874719 Part Time
721874713 Academic
721874714 Other
How can I retrieve those values via the API?
I tried using api/data/v8.0/GlobalOptionSetDefinitions and various combinations of api/data/v8.0/EntityDefinitions but no luck.
You can use EntityDefinitions with the MetadataId of account, add a filter to only get the optionset you want.
EntityDefinitions(70816501-edb9-4740-a16c-6a5efbc05d84)/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet,GlobalOptionSet
Source: https://msdn.microsoft.com/en-us/library/mt607522.aspx#bkmk_queryAttributes

Cognos session parameters usage

I have setup LDAP authentication and set up "custom properties" in cognos configuration to get a attribute i have defined in the LDAP entry.
For example this custom property is called ORG_NAME, how do i use this ORG_NAME in report studio as a parameter to filter on? I have seen online about mapping with Framework manager.. however the particular reports i am using access the database directly and DO NOT have a framework manager package associated with them, so i need to use the ORG_NAME without using FM....
You can use the same syntax you would use in FM. So, for example:
#sq($account.personalInfo.givenName)#
will return the first name, and so on.
If you feel some burning need to for user-written SQL, instead of using FM, you can include the macro as a query item in your "outer" query (that gets the results from your sql query, Query2 in the image below).

Combining metadata from multiple sources

In a SPA app using breeze, how would I go about combining metadata from multiple sources for related data so that I can use them in 1 manager on the client. For example, I might have the following
Entity Framework Metadata from WebAPI controller (e.g. Account)
Custom Metadata from DTOs (e.g. Invoices)
Data from a third party service with metadata provided from client side metadata (e.g. Invoice transmission result)
In each case the data has related properties so I might want to be able to use Account.Transactions.TransmissionResults
UPDATE
I have tried several ways of getting this to work but to no avail. From Jay's answer, it is not possible at present to update the metadata from the server once it has been retrieved, so if and until that changes (see breeze user voice issue) I am left with one of the following approaches
1 Retrieve metadata from the server from Entity Framework and add metadata on the client to add extra entities. This worked to a degree but I could not add navigation properties from entity types added on the client to entity types retrieved from the server because I cannot add the foreign key association to the entity retrieved from the server, again back to the need to modifying metadata after it has been retrieved.
2 Write the complete metadata by hand, which will work but makes maintainability that much harder and seems wrong to be manually writing mostly the same code that the designer would write.
3 Generate most of the code from Entity Framework as described in the docs and then update it afterwards to add in the custom entities. Again similar issues than with option 2, it seems hacky.
Anyone else tried something similar? Is there something I am missing, which I could be, I've only started with breeze and js.
Thanks
A breeze EntityManager can have metadata from any number of DataService endpoints, and you can manually add metadata (new EntityTypes) on the client at any point. The only current restriction is that once you have metadata from a specific service, you can't change it. ( We are considering reviewing the last restriction).
So the question is, what are you trying to do that you can't right now?

Resources