I have a question with JS.

One case record could have multiple sub case records.

I need to add a subgrid to the CASE entity and need to show all the tasks associated with the Sub-cases.

I have my JS attached for your review.

I appreciate your help.

In the case entity I want to add a subgrid to list all the tasks associated with the all sub cases.

function TasksFromSubCases (executionContext) {
    debugger;
    var formContext = executionContext.getFormContext();
    var childrenActivitiesSubgrid = formContext.getControl("Children_Activities");
    var inquiryId = formContext.data.entity.getId().replace('{', '').replace('}', '');
    
    var fetchXml = " <fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>"+
                                    "  <entity name='activitypointer'>"+
                                    "    <attribute name='activityid' />"+
                                    "    <filter type='and'>"+
                                    "      <condition attribute='activitytypecode' operator='eq' value='4212' />"+
                                    "    </filter>"+
                                    "    <link-entity name='incident' from='incidentid' to='regardingobjectid' link-type='inner' alias='ae'>"+
                                    "      <filter type='and'>"+
                                    "        <condition attribute='parentcaseid' operator='eq' value='" + inquiryId + "'/>"+
                                    "      </filter>"+
                                    "    </link-entity>"+
                                    "  </entity>"+
                                    "</fetch>";

     
    fetchXml = "?fetchXml=" + encodeURIComponent(fetchXml);
    Xrm.WebApi.retrieveMultipleRecords("activitypointer", fetchXml).then(
        function success(result) {  
                debugger;
                var activityValues = "";
                if (result.entities.length > 0) {
                result.entities.forEach(function (v) {
                    return (activityValues += '<value uitype="activitypointer">{' + v.activityid + "}</value>");
                });
                var activitiesFetchXmlFilter =
                '<filter type="and">\n'+
                '<condition attribute="activityid" operator="in">\n '+
                activityValues +
                +'</condition>\n '+
                +'</filter>';
                childrenActivitiesSubgrid.setFilterXml(activitiesFetchXmlFilter);
                childrenActivitiesSubgrid.refresh();
            } 
            else {
                var activitiesFetchXmlFilter = '<filter type="and">\n '+
                +'<condition attribute="activityid" operator="null" />\n '+
                +'</filter>';
                childrenActivitiesSubgrid.setFilterXml(activitiesFetchXmlFilter);
                childrenActivitiesSubgrid.refresh();
            }
            },
    function (error) {
        //console.log(error.message);
    }
    );