Get SharePoint Document details for particular record in MS CRM using FetchXML

What is Issue?

There are many cases while implementing MS CRM where clients ask to perform some operation in MS CRM based on the document uploaded in SharePoint. But how to get SharePoint document details in MS CRM other than “Documents” associated view? If you try to fetch records using advanced find or querying sharepointdocument entity directly, it will show you error. So how we can query and get the document details using code either from client side or server side?

The Reason-

MS CRM Supports only the associated view for Document i.e. sharepointdocument entity. MS CRM do not support direct querying on all sharepointdocument.

Solution-

There is a way to fetch SharePoint document details for particular record in MS CRM.

If you try to query on Document entity in MS CRM using Advanced find you will get the error-” SharePoint document entity does not support any view other than associated view”.

Now this seems trouble to get sharepoint document details. Don’t worry, as error itself says, the sharepoint document does not support any view other than associated view, We can keep building query in advance find itself.

Suppose I want to get documents details for one of my Opportunity in MS CRM , So I am building the query in the following way-
1. Look for : Document
2.Use Saved View :All Sharepoint Documents
3.If you want, you can edit the columns
4. Select Regarding(Opportunity) contains data
5. Select sub query for opportunity record(for which you want to get details)

If you click on results, it will still show you same error. Don’t worry, download the fetchXML for the query we built.

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="sharepointdocument">
    <attribute name="documentid" />
    <attribute name="fullname" />
    <attribute name="relativelocation" />
    <attribute name="sharepointcreatedon" />
    <attribute name="filetype" />
    <attribute name="absoluteurl" />
    <attribute name="modified" />
    <attribute name="sharepointmodifiedby" />
    <attribute name="title" />
    <attribute name="readurl" />
    <attribute name="editurl" />
    <attribute name="author" />
    <attribute name="sharepointdocumentid" />
    <attribute name="ischeckedout" />
    <attribute name="locationid" />
    <attribute name="iconclassname" />
    <order attribute="relativelocation" descending="false" />
    <link-entity name="opportunity" from="opportunityid" to="regardingobjectid" link-type="inner" alias="ad">
      <filter type="and">
        <condition attribute="opportunityid" operator="eq" value="{83779C3E-xxxx-xxxx-xxxx-0CD3BEAFE160}" />
      </filter>
    </link-entity>
  </entity>
</fetch>

When I tried to use the fetchXML in Javascript query, I got the Sharepoint Document details in json as below-

As sharepoint document entity supports only associated view, it requires regarding object to query. So if you try to remove and link-entity tag from fetchXML, it will not return any record in response.

Now we have fetchXML which we can utilize in Javascript or C# based on requirement.

Hope this will help…
Enjoy Ms CRM!!!

Follow on Facebook- FB: MSCRM16Tech

Color Picker Custom Control for MS Dynamics CRM

What is Issue?

One of my previous projects had requirement of color picker in MS CRM to provide users flexibility to select any color to can display notifications(using HTML) on their records. But we had no other option than going with html and JavaScript web resources for this.

The Reason-

MS CRM don’t provide any color picker field out-of-box.

Solution-

As I already had a blog written for color picker using web resources and spectrum libraries-Color Picker in MS CRM ?

But it is web resource which needs much efforts to match to field styles in crm.

I have created the custom pcf control (PowerApps Custom Control). This control can be used for the single line text fields.

Depends on browser it appears in supported way-

On Browsers other than IE-

This slideshow requires JavaScript.

In IE it will appear as –

This slideshow requires JavaScript.

If you want to use it you form you can download ready custom control from here-ColorPickerSolution.zip

How to use it-
1. Import downloaded solution in CRM-
ColorPicker5

2. Create single line of Text field in any entity you want and add it on form.
3. when adding to form select field, click on change field property and in controls tab add custom control “ColorPicker”-

This slideshow requires JavaScript.

4.Save and publish the form.
Now the control is available and ready on form to use.

 

You can also download the source code from here-ColorPickerSource.zip

To work with source code you need some of the basic setup in your computer-
1. Nodejs installed
2. VS or Visual Studio Code installed
3.Understanding of below commands-


pac pcf init --namespace yourNamespace --name yourControlName --template field
npm install
npm run build
npm start
pac solution init --publisher-name yourPubliserName --publisher-prefix yourPrefix
pac solution add-reference --path "pcfproj folder path"
msbuild /t:restore
msbuild

Hope this will help…
Enjoy Ms CRM!!!

Follow on Facebook- FB: MSCRM16Tech

Generating Early Bound Classes and simple Entity Classes MS CRM

What is Issue?

While developing the CRM, when we have to go through coding part, we need to create Early-bound classes for some specific entities. But CrmSvcUtil.exe provides us the Early Bound classes for all the entities available in CRM.
Second scenario- we don’t want this much of complicated classes, Only want to add simple Entity classes. But it might become very lengthy and time consuming task to add the fields in class one by one.

The Reason-

Creating Early bound classes for particular entities is not possible using CrmSvcUtil.exe directly and creating simple entity classes is lengthy and time consuming task.

Solution-

To create early bound classe using CrmSvcUtil.exe, please refer blog – Generate Early Bound Classes for selected entities using CrmSvcUtil.exe in MS CRM

OR

you can use the tool created by mscrm16Tech as below-
It provides both the options like creating Simple CRM entity classes or to Use CrmSvcUtil.exe to generate early bound classes for selected entities only.

When you install and open the application in your system you will get below window which will help you in configuration of MS CRM connection and database connection if needed.

AppScreen1

After configuring the app and clicks on OK, Select the application “Create Early-Bound Classes” in next window  –

App2Screen0

Now you can load the available entities in connected CRM Organization. Please use below image for reference-

App2Screen In case you are using windows 10 and trying to generate Early Bound classes using CrmSvcUtil.exe, you need to make sure following feature is enabled on your windows-
>Control Panel Programs and Features – Turn Windows feature On or Off
->.NetFramework 4.8 Advanced Services
-> WCF Services
->HTTP Activation (Please enable if not)

App2Screen1

Please follow the images to work with the app.

You can download app Here- MSCRM16Tech Tool

Hope this will help…
Enjoy Ms CRM!!!

Follow on Facebook- FB: MSCRM16Tech

 

Get Excel Report or Create Database table Directly from FetchXML file

What is Issue?

The creating report or database table using complex fetchXML and getting records more than 5000.

The Reason-

It is difficult to get data directly from MS CRM without any coding or using third party tool .

Solution-

Here is the new tool created by mscrm16tech which allows you to save data in excel sheet from MS CRM or helps you to create Database table with the display names available in MS CRM. These reports and data dump minimizes the developer efforts.

When you install and open the application in your system you will get below window which will help you in configuration of MS CRM connection and database connection if needed.

AppScreen1

After configuring the app and clicks on OK, you will get below window –

AppScreen2

Please follow the images to work with the app.

You can download app Here- FetchApp by MSCRM16Tech

Hope this will help…
Enjoy Ms CRM!!!

Follow on Facebook- FB: MSCRM16Tech

 

Make CRM user friendly using Dynamics 365 CRM new features

What is Issue?

This time it is not an issue but improvement in product to make CRM user friendly. Below are the common requirements from users-

1.There is always requirement from user that they don’t want to click multiple times to go to particular window. Many times happens when user accidentally clicks on look up field which opens up the record and to get back to previous record user have to navigate many areas on sitemap. Even user clicks on back button on browser it might take much time to load window again.
2.User not able to find the opportunity pipeline stage or its status.
3. Activities in CRM hard to manage with external calendar.

The Reason-

These are the basic requirements from the users. Previously Dynamics 365 didn’t had any option to figure out these multiple click issue and single view to manage opportunities and Activities with calendar.

Solution-

With Dynamics 365 -2020 Release Wave 1 Microsoft provided some features that will help us with our above requirements –

1. Multiple clicks-
How we avoid multiple clicks-
Microsoft provided new event for lookup fields-  addOnLookupTagClick
Using this event we can perform action when click on lookup field record.
To avoid multiple clicks we can open record in popup window with all buttons and functionality available for that record without closing parent record window.
How to use addOnLookupTagClick event-

//call function onload of form with execution context passed.
function LookupDialog(executionContext) {
    var formContext = executionContext.getFormContext();
    formContext.data.entity.attributes.forEach(function (attribute, index) {
        var attributeType = attribute.getAttributeType();
        if (attributeType == "lookup") {
            var attrName = attribute.getName();
            OpenDialogForLookup(formContext, attrName);
        }
    });
}

function OpenDialogForLookup(formContext, lookupField) {
    formContext.getControl(lookupField).addOnLookupTagClick(context => {
        context.getEventArgs().preventDefault();
        const lookupTagValue = context.getEventArgs().getTagValue();
        Xrm.Navigation.navigateTo(
            {
                pageType: "entityrecord",
                entityName: lookupTagValue.entityType,
                formType: 2,
                entityId: lookupTagValue.id
            },
            {
                target: 2,
                position: 1,
                width: {
                    value: 70,
                    unit: "%"
                }
            });
    });
}

Add the LookupDialog function on load event of form so that it will add this addOnLookupTagClick  event to all lookup fields on form. So that you don’t have to add this manually for every lookup field. If you have large number of lookup field then you can call this function asynchronously on form onload event.

After clicking on lookup field you will see window like below-
NewFeatures0

You can change the position like quick create window in UCI – change position: 2
and you can change the popup window screen coverage by changing –width: {
value: 50,
unit: "%"
}
in above code.
Below is screenshot for the same-
NewFeatures2

2.Opportunity Stages and Status in single view-
Microsoft introduced the new Kanban Control

that can be used to show opportunities based on their stages or status in single view with capability to move records from one stage to another.
NewFeatures3
How to activate this feature – Click here
This will give user a better view of opportunities in his bucket.

3.Calender Control-
Microsoft also provided new calendar control to manage activities as well as some entities which sticks to the time.
NewFeatures4

This can be also activated like Kanban control above.
This will help user to easily organize activities/records with calendar.

 

Hope this will help…
Enjoy Ms CRM!!!

Follow on Facebook- FB: MSCRM16Tech