Step 1: Construct a cdt by name 'myCdtFormattedForExcel' (I referred this for example) which consists of all the columns from your nested cdt. You can refer the rule shown below for the structure of this cdt. Step 2: Construct a rule that formats your nested cdt into a plain cdt i.e. that populates the cdt (which is constructed in step-1) from the nested cdt. You can refer the below rule. Rule name : populateMyCdtFormattedForExcel ------------------------------------------- Inputs: 1. myCdt (Any Type) Description: This rule creates a plain formatted cdt from the nested myCdt type!myCdtFormattedForExcel( id: index(ri!myCdt,"id",null), clientRequestInfo_id: index(ri!myCdt.clientRequestInfo,"id",null), clientRequestInfo_clientRequestInfo: index(ri!myCdt.clientRequestInfo,"clientRequestInfo",null), clientRequestInfo_borrowerName: index(ri!myCdt.clientRequestInfo,"borrowerName",null), clientRequestInfo_obligorNumber: index(ri!myCdt.clientRequestInfo,"obligorNumber",null), clientRequestInfo_obligationNumber: index(ri!myCdt.clientRequestInfo,"obligationNumber",null), clientRequestInfo_crCrmNumber: index(ri!myCdt.clientRequestInfo,"crCrmNumber",null), clientRequestInfo_moodysNumber: index(ri!myCdt.clientRequestInfo,"moodysNumber",null), clientRequestInfo_decisionMatrixDate: index(ri!myCdt.clientRequestInfo,"decisionMatrixDate",null), clientRequestInfo_office: index(ri!myCdt.clientRequestInfo,"office",null), clientRequestInfo_costCenter: index(ri!myCdt.clientRequestInfo,"costCenter",null), clientLoanInfo: index(ri!myCdt,"clientLoanInfo",null), totalCommitment: index(ri!myCdt,"totalCommitment",null), templateInfo: index(ri!myCdt,"templateInfo",null), templateCmntsInfo: index(ri!myCdt,"templateCmntsInfo",null), sasResponseInfo_id: index(ri!myCdt.sasResponseInfo,"id",null), sasResponseInfo_transactionId: index(ri!myCdt.sasResponseInfo,"transactionId",null), sasResponseInfo_overallRating: index(ri!myCdt.sasResponseInfo,"overallRating",null), sasResponseInfo_prior: index(ri!myCdt.sasResponseInfo,"prior",null), sasResponseInfo_trend: index(ri!myCdt.sasResponseInfo,"trend",null), sasResponseInfo_policyExceptionComments: index(ri!myCdt.sasResponseInfo,"policyExceptionComments",null), underwriterInfo_id: index(ri!myCdt.underwriterInfo,"id",null), underwriterInfo_transactionId: index(ri!myCdt.underwriterInfo,"id",null), underwriterInfo_preparedBy: index(ri!myCdt.underwriterInfo,"preparedBy",null), underwriterInfo_preparedDate: index(ri!myCdt.underwriterInfo,"preparedDate",null), underwriterInfo_reviewedBy: index(ri!myCdt.underwriterInfo,"reviewedBy",null), underwriterInfo_reviewedDate: index(ri!myCdt.underwriterInfo,"reviewedDate",null), underwriterInfo_exceptionType: index(ri!myCdt.underwriterInfo,"exceptionType",null), underwriterInfo_finalDisposition: index(ri!myCdt.underwriterInfo,"finalDisposition",null), underwriterInfo_decisionBy: index(ri!myCdt.underwriterInfo,"decisionBy",null) ) Step 3: The above rule applies only for a single record in your cdt. In order to construct the plain formatted cdt for all the rows in your nested cdt, call the above rule in an iterative fashion as shown below: apply(rule!populateMyCdtFormattedForExcel,) Store the above caluculation in a process variable of type and refer in the Export cdt to excel