Saturday, 4 July 2020

Set date value in Dynamics Portal

 var startdate = new date();

    var $submitField = $("#new_datevaluesetfield");

    //Get the display field
    var $displayField = $submitField.nextAll(".datetimepicker").children("input");

    //Get the display date format
    var dateFormat = $displayField.attr("data-date-format");

    //Set the submit field. Remember this needs to be in UTC and the format must be exact.
    $submitField.val(moment(startdate).format("YYYY-MM-DDTHH:mm:ss.0000000Z"));

    //Set the display field using the page's date format
    $displayField.val(moment(startdate).format(dateFormat));

Friday, 3 July 2020

Dynamics CRM Portals


Lookup field disabled.       

  $("#transactioncurrencyid_enityname").prop("disabled", true);
            $("#transactioncurrencyid_entityname").parent().find('.launchentitylookup').prop("disabled", true);
            $("#transactioncurrencyid_entityname").parent().find('.clearlookupfield').prop("disabled", true);


Date field:


  $('#new_starttimedate_datepicker_description').val(null);

$('#date').next().children().prop("readonly", true);

    $("#new_requesttype option:not(:selected)").prop("disabled", true);



 $.ajax({
            url: "",
        }).fail(function (jqXHR, textStatus, error) { })
            .done(function (result) {
                if (result != null) {
                    var dropdown = $("#new_fieldname");
                    dropdown.empty();
                    var optionArray = [];
                    $.each(result, function (index, options) {
                        var option = $('<option>').text(options.new_name).val(options.gs_lookupid);
                        optionArray.push(option);
                    });
                    $("#new_fieldname").html(optionArray);
                    dropdown[0].selectedIndex = -1;
                }

            });

Saturday, 16 November 2019

CalculateRollupFieldRequest


EntityReference Note = Case.GetAttributeValue<EntityReference>("caseid");
CalculateRollupFieldRequest calculateRollup = new CalculateRollupFieldRequest();
calculateRollup.FieldName = _FieldSchemaName;
    calculateRollup.Target = new EntityReference(_EntitySchemaName, Note.Id);
CalculateRollupFieldResponse resp = (CalculateRollupFieldResponse)_service.Execute(calculateRollup);

filterSubGrid



https://nishantrana.me/2017/05/21/filter-subgrid-in-dynamics-365-with-new-form-rendering-or-turbo-form/

function filterSubGrid()
{
// get the current record's guid
var entityId = Xrm.Page.data.entity.getId();

// refer the subgrid
var testGrid = window.parent.document.getElementById("Test");

if (testGrid == null)
{
setTimeout(function () {filterSubGrid(); }, 2000);
return;
}

// fetch xml code using User operator
var fetchXml = "<fetch distinct='false' no-lock='false' mapping='logical'>" +
"<entity name='new_test' >" +
"<attribute name='new_name' />" +
" <attribute name='new_testname' />" +
"<order attribute='new_name' descending='true' />" +
"<filter type='and'>" +
"<condition attribute='new_testid' operator='under' value='"+entityId+"'"+"/>" +
"</filter>" +
"</entity>" +
"</fetch>";

if (testGrid.control != null)
{
testGrid.control.SetParameter("fetchXml", fetchXml);
testGrid.control.refresh();
}
else
{
setTimeout(filterSubGrid, 500);
}
}

Common Methods



 vaf["missionid"] = setLookupObject(missionId, "mission");
   

function setLookupObject(id, logicalName) {
    ///<summary>
    /// Function to set and return a lookup object
    ///</summary>
    var lookupObject = new Object();
    lookupObject.Id = id;
    lookupObject.LogicalName = logicalName;
    return lookupObject;
}

BPF




  static void Main(string[] args)
        {
            ClientCredentials clientCredentials = new ClientCredentials();
            clientCredentials.UserName.UserName = "";
            clientCredentials.UserName.Password = "";
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            organizationService = (IOrganizationService)new OrganizationServiceProxy(new Uri(""), null, clientCredentials, null);
            AdvanceBusinessProcessFlow(organizationService);

        }

        private static void AdvanceBusinessProcessFlow(IOrganizationService service)
        {
            // Retrieve all process instances
            RetrieveProcessInstancesRequest instanceRequest = new RetrieveProcessInstancesRequest
            {
                EntityId = new Guid("bceb89f8-4808-ea11-a811-000d3af02cd4"),
                EntityLogicalName = "new_student"
            };
            RetrieveProcessInstancesResponse instanceResponse = (RetrieveProcessInstancesResponse)service.Execute(instanceRequest);

            // First record is the active process instance
            Entity activeProcessInstance = instanceResponse.Processes.Entities[0];
            var activeProcessId = activeProcessInstance.Id;
            var activeStageId = new Guid(activeProcessInstance.Attributes["processstageid"].ToString());

            // Retrieve the process stages in the active path of the current process instance
            RetrieveActivePathRequest activePathRequest = new RetrieveActivePathRequest
            {
                ProcessInstanceId = activeProcessId
            };

            // System.ServiceModel.FaultException exception occurs here
            RetrieveActivePathResponse activePathResponse = (RetrieveActivePathResponse)service.Execute(activePathRequest);

            string activeStageName;
            int? activeStagePosition = null;
            int stageCount = activePathResponse.ProcessStages.Entities.Count;

            // Iterate through all process stages and identify active stage
            for (int i = 0; i < stageCount; i++)
            {
                if (activePathResponse.ProcessStages.Entities[i].Attributes["processstageid"].ToString() == activeStageId.ToString())
                {
                    activeStageName = activePathResponse.ProcessStages.Entities[i].Attributes["stagename"].ToString();
                    activeStagePosition = i;
                }
            }       

            // Auto-advance active stages of BPF to last stage so that BPF can be auto-finished
            while (activeStagePosition < stageCount - 1)
            {
                // Retrieve the stage ID of the next stage to be set as the active stage
                var newActiveStageId = (Guid)activePathResponse.ProcessStages.Entities[(int)++activeStagePosition].Attributes["processstageid"];

                // Retrieve the process instance record to update its active stage
                ColumnSet columnSet = new ColumnSet();
                columnSet.AddColumn("activestageid,traversedpath");
                Entity retrievedProcessInstance = service.Retrieve("new_testbpf", activeProcessId, columnSet);
                // Update active process stage
                retrievedProcessInstance["activestageid"] = new EntityReference("new_testbpf", newActiveStageId);
                service.Update(retrievedProcessInstance);
            }
        }

Email Templates

                  Email emailTemplate = new Email();
                ActivityParty fromAdd = new ActivityParty();
                fromAdd.PartyId = new EntityReference();
                fromAdd.PartyId.Id = this.Requestor.Get<EntityReference>(executionContext).Id;
                fromAdd.PartyId.LogicalName = Contact.EntityLogicalName.ToString();
                emailTemplate.From = new ActivityParty[] { fromAdd };
                ActivityParty toAdd = new ActivityParty();
                toAdd.PartyId = new EntityReference();
                toAdd.PartyId.Id = queueID;
                toAdd.PartyId.LogicalName = "queue";
                emailTemplate.To = new ActivityParty[] { toAdd };
                string emailsubject = this.Subject.Get<string>(executionContext).ToString();           
                emailTemplate.Subject = emailsubject;
                emailTemplate.Description = this.FullMessage.Get<string>(executionContext).ToString();

                EntityReference Regarding = new EntityReference();
                Regarding.Id = regardingCaseID;
                Regarding.LogicalName = "incident";
                emailTemplate.RegardingObjectId = Regarding;         
                emailTemplate.IsWorkflowCreated = true;
                if (queueID != null && queueID != Guid.Empty)
                {
                    QueryExpression queryQu = new QueryExpression
                    {
                        EntityName = Queue.EntityLogicalName,
                        ColumnSet = new ColumnSet("ownerid"),
                    };

                    queryQu.Criteria.AddCondition("queueid", ConditionOperator.Equal, queueID.ToString());

                    EntityCollection retrievedQu = _service.RetrieveMultiple(queryQu);
                    if (retrievedQu.Entities.Count > 0)
                    {
                        EntityReference queueOwner = (EntityReference)retrievedQu.Entities[0].Attributes["ownerid"];
                        emailTemplate.OwnerId = new EntityReference("team", queueOwner.Id);
                    }
                }

                Guid emailId = SendEmail(emailTemplate, _service, context, emailTemplate.Subject);
                Entity incidentEnity = new Entity();
                incidentEnity.Id = regardingCaseID;
                incidentEnity.LogicalName = "incident";

                incidentEnity.Attributes.Add("emailid", emailId.ToString());
                incidentEnity.Attributes.Add("email", new OptionSetValue(2));
                _service.Update(incidentEnity);

            }

            public static void AddAttachmentsToEmail(IOrganizationService _service, Guid activityId, Guid emailId, string emailSubject)
            {

                QueryExpression notesQuery = new QueryExpression
                {
                    EntityName = "annotation",
                    ColumnSet = new ColumnSet("filename", "documentbody", "mimetype", "objectid", "annotationid"),
                    Criteria = new FilterExpression()
                };
                notesQuery.Criteria.AddCondition("objectid", ConditionOperator.Equal, activityId);
                EntityCollection noteCol = _service.RetrieveMultiple(notesQuery);
                if (noteCol.Entities.Count > 0)
                {
                    for (int i = 0; i < noteCol.Entities.Count; i++)
                    {
                        string attachmentSubject = emailSubject;

                        // Create note in case                       
                        Entity setupAttachment = new Entity();
                        setupAttachment.LogicalName = "activitymimeattachment";
                        setupAttachment["subject"] = attachmentSubject;
                        setupAttachment["filename"] = (string)noteCol.Entities[i].Attributes["filename"];
                        setupAttachment["body"] = (string)noteCol.Entities[i].Attributes["documentbody"];
                        setupAttachment["mimetype"] = (string)noteCol.Entities[i].Attributes["mimetype"];
                        setupAttachment["objectid"] = new EntityReference("email", emailId);
                        setupAttachment["objecttypecode"] = "email";

                        _service.Create(setupAttachment);
                    }
                }

            }

            private Guid SendEmail(Email emailObj, IOrganizationService _service, IWorkflowContext context, string emailSubject)
            {
                Guid emailId = _service.Create(emailObj);

                //statecode is 1
                SetStateRequest req = new SetStateRequest();

                req.EntityMoniker = new EntityReference("email", emailId);

                req.State = new OptionSetValue(1);

                req.Status = new OptionSetValue(4);

                SetStateResponse resp = (SetStateResponse)_service.Execute(req);

                return emailId;

            }