Get Status Reasons (statuscode) for a specific status (Statecode) from metaData

Following is sample code for getting statuses for an entity from metadata

function getStatusAttributeMetadata(entityName) {  
    var data = null;
    var webApiQuery = Xrm.Page.context.getClientUrl() + "/api/data/v8.2/EntityDefinitions(LogicalName='" + entityName + "')/Attributes/Microsoft.Dynamics.CRM.StatusAttributeMetadata?$expand=OptionSet";

    var req = new XMLHttpRequest();    
    req.open('GET', webApiQuery, false);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("OData-MaxVersion", "4.0");
    req.setRequestHeader("OData-Version", "4.0");
    req.send();
    if (req.readyState == 4 /* complete */) {
        if (req.status == 200) {
            var results = JSON.parse(req.response);
            data = results.value[0];
        }
        else {
            var error = JSON.parse(req.response).error;
            console.log(error.message);
        }
    }
    return data;
}


You can filter the statuscode by statecode as following

  var statusReasons = getStatusAttributeMetadata("lead");
    if (statusReasons != null) {
        var options = statusReasons.OptionSet.Options;       
        for (var i = 0; i < options.length; i++) {
            if (options[i].State == 2) {
              //do your code here
            }              
        }
    }

Enable Tracing for Dynamics CRM on premises


By Enabling tracing, there created some files that monitor the actions that are performed by Microsoft CRM. These files are helpful when you need to troubleshoot error messages as we can find more information about the issues/errors.
We can enable tracing for dynamics CRM on premises by adding some registry keys on CRM server. However, make sure to follow following steps carefully, as there might occur serious problems when you modify registry incorrectly.
1.     Go to CRM server
Open registry (runà regedit)
2.     HKEY_LOCAL_MACHINEàSoftwareà MicrosoftàMSCRMàadd new keys
a.     Name: TraceEnabled
Type: DWORD
Value: 1
b.     Name: TraceDirectory
Type: String
Value: C:\CRMTrace
c.     Name: TraceRefresh
Type: DWORD
Value: 99
3.     Create the folder "CRMTrace" in C directory
4.     Reset IIS (Run CMD as administrator >> execute this “iisreset” command )

After doing above steps, perform the action with CRM where you were facing issues, then go to folder (Trace directory), there you will find some tracing files will be created containing detail description.

After troubleshooting your issues, we should disable (provide value “0” to TraceEnabled registry key) the tracing and resetting the IIS. As constant tracing running will have a performance impact on your system and consume disk space.

Enjoy Bug fixing!!!

Auto Complete in Dynamics CRM

Following is sample JavaScript code to demonstrate the auto completion feature. This sample configures the auto-complete feature for a custom single line of text that auto complete years.



Call following function on form load event, this will auto populate the last 60 years in the field when do keypress on this field.

function year_AutoComplete() {
    var keyPressFcn = function (ext) {       
        try {           
            resultSet = {
                results: new Array()                
            };
            var dt = new Date();           
            for (i = 0; i < 50; i++) {               
                    resultSet.results.push({
                        id: i,
                        fields: [dt.getFullYear() - i]
                    });                           
            }         

            if (resultSet.results.length > 0) {
                ext.getEventSource().showAutoComplete(resultSet);
            } else {
                ext.getEventSource().hideAutoComplete();
            }
        } catch (e) {          
            console.log(e);
        }
    };
   
    Xrm.Page.getControl("new_year").addOnKeyPress(keyPressFcn);
}