Dynamics CRM - How to get the Message default display string - dynamics-crm

Does anyone know how to use C# to get the Default Display String for a Message?
The Default Display String is the first column displayed when you open a Solution, select an Entity (such as Case), and then select Messages. It contains values like "A Parent Case cannot have more than {0} child cases. Contact your administrator for more details."
The DisplayString Entity seems like the right place, but it only has the CustomDisplayString and the PublishedDisplayString, and not the default display string. Microsoft have confirmed that the Default Display String is not in the DisplayString Entity, but they don't say where it can be found...
I have tried searching the Metadata Browser, and even went trawling through the Organisation and Config databases, but no luck.
Any help greatly appreciated ...

While this doesn't answer your question directly, it's a clue.
I checked a bit in the database, then searched for the Account entity message "Existing Account?" in the file system.
It's in this DLL:
C:\Program Files\Microsoft Dynamics CRM\CRMWeb\bin\Microsoft.Crm.Application.Components.Strings.dll
As far as accessing strings in that DLL from C# goes, I'm currently at a loss. You might want to create a MSFT ticket to see if they have any further suggestions. Another thought is that if you're targeting a particular entity, or a few entities, maybe copy the default message to the CustomDisplayString for the messages you're interested in.

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.

Fullname control is not working in Dynamics 365 Unified interface

We've recently enabled the Unified Interface on our Dynamics 365 CE web client and noticed that the fullname is missing from the Contact forms and several views. It is there when we open the Form editor, but when we're running formContext.getAttribute("fullname") it returns a null.
It's causing us a big headache as we're using the fullname basically everywhere: in forms, views, Document templates, JavaScripts etc.
Has anyone come across this problem or knows a workaround without having to replace the fullname with first and last name everywhere in our environment?
According to Microsoft it's officially not ready before April 2020 (https://learn.microsoft.com/en-us/power-platform/admin/about-unified-interface#capabilities-not-yet-on-unified-interface), but we need to start testing before that.
Many thanks in advance
Composite control is not available in UCI yet. So the popup will not be showing up to do data entry. That means the Full name field will display as the child individual fields, ie. First name & Last name. The data changes in any of the First name or Last name will replicate to Full name field.
Only changes needed is in form scripting. Whenever/wherever you are accessing the Full name field like formContext.getAttribute("fullname") just switch it to formContext.getAttribute("firstname") + " " + formContext.getAttribute("lastname") if the script is executing in UCI.
I just tested this quickly in my UCI. Also views showing the Full name field without issues. Templates should not be a problem if data is there. Only problem is in form, so the above script will solve the issue.

Removing an EntityRelationship by its guid

when saving a modified account form on a MS Dynamics CRM 2015 on-premise installation I recently get an error:
Dependency Calculation
The dependent component EntityRelationship (Id=5288430f-7abf-e511-80cd-000d3a203473) does not exist. Failure trying to associate it with SystemForm (Id=e284b20f-a66d-4019-9a96-83d6ce65847e) as a dependency. Missing dependency lookup type = PrimaryKeyLookup.
This message is not quite useful to me to fix the problem.
If I want to fix it, where should you look for ID "5288430f-7abf-e511-80cd-000d3a203473" and which toold would you use?
You could try the CRM Metadata Browser. This is included in the tools folder in the CRM SDK that you can download for free. It is a managed solution that you have to install into CRM. Once installed you can use it to view information about your entities and their attributes
MSDN Page for Metadata Browser
Select your entity; This will then list all the attributes that belong to the selected entity, in this case Account
You can then look through all the relationships and look for the Metadata ID property of the record. For example, here is the ID for the Primary Contact relationship
You will probably have to examine all these relationships manually to find a match though.
Hope this helps

Save application settings in vb6

I wanted someone to help me decide which is the best option to save the settings of an application on vb6. I understand that this can be done with an INI file and/or modifying the registry. I need you to move the directory if one computer to another, the application stops working.
What you think is the best option?
If someone has an interesting link that can help me thank you very much!
Thank you for readme and sorry for my English!
We don't use the registry but follow these steps which has worked well for us even when crossing platforms and new versions of a language:
Save all parameters in a table in a database associated with the application. We normally call this "Code" with the fields "Type", "Code", "Description", and "Control". For example, the name of the company would be stored in the table as "PARM","CONAME","My Company Name","". If you have a dynamic list of transaction types, store them as "TRNS","01","My 1st Type","" and "TRNS", "02", "My 2nd Type", "" and so forth. The Control field is used for anything you want that's hidden from the user but possibly controls how the program responds based upon the users selection of that type...as an example. To get the list of types, just use a SELECT statement like "SELECT * FROM [Code] WHERE [Type]='TRNS' ORDER BY [Code];".
Save the connection to the database in an encrypted ini file. We wrote the encryption and decryption functions ourselves. There are various out of the box ways to do this on various blogs.
Installing the application on another system demands access to the database and copying the ini file.

Lookup site column not saving/storing metadata for Office 2007 documents?

I'm having this issue on several server environments.
We have a list at the site collection root. There is a site column created as a multi-value lookup on that list's Title field. This site column is used in document libraries in subsites as a required field. When we upload anything but an Office 2007 document, the user is presented with the document metadata fill-in screen (EditForm.aspx?Mode=Upload), the user fills in the appropriate data (including picking a value(s) for this lookup), and clicks "check in" - the document is checked in as expected, with the lookup field's value filled in.
With an Office 2007 document, this fails. The user selected values for the lookup field do not ever make it to the server - no errors are thrown, but the field is not saved with the document. We have an event listener on these document libraries, and if we inspect the incoming SPListItem on the event listener method before a single line of our code has run, we see that the value for the lookup field is null.
It smells like a SharePoint bug to me - but before I go calling Microsoft, has anyone seen this & worked around it?
Edit: the only entry I see in the SP trace logs relating to the problem:
CMS/Publishing/8ztg/Medium/Got List Item Version, but item was null
Wound up having to open a ticket with Microsoft for this one, and found a bug in the MSDN documentation to boot.
In order to get a multiselect lookup, we had been setting the "Mult" attribute in our lookup field CAML to "true" in the XML we passed to SPFieldCollection.AddFieldAsXml. However, even though the API will throw no errors & appear to work in the UI, this clashes with how Office 2007 & 2010 documents & their SharePoint integration works.
The official, supported way to add a multiselect lookup field is to use the LookupMulti field type in the Field CAML. Doing this, and setting the "Mult" attribute to "true" gives the result I was looking for.
The MSDN documentation for "Mult" has still not been updated for the SP 2007 documentation, and can safely be ignored as it is completely wrong.

Resources