//Specific Business Architecture Methodology Variables (Based on ENGEN Method) var g_mtBusArch = new Array(); //Array for allowed model types for Bus Arch g_mtBusArch[0] = Constants.MT_EEPC; //Model Type used to depict Project Business Architecture g_mtBusArch[1] = Constants.MT_VAL_ADD_CHN_DGM; //Alternative Model Type used to depict Project Business Architecture g_mtBusArch[2] = Constants.MT_EEPC_COLUMN; //Alternative Model Type used to depict Project Business Architecture var g_mtBusArchEPCOnly = new Array(); g_mtBusArchEPCOnly[0] = Constants.MT_EEPC; g_mtBusArchEPCOnly[1] = Constants.MT_EEPC_COLUMN; var g_iBusArchSortAttr = Constants.AT_NAME; //var g_iBusArchSortAttr = Constants.AT_HIER_NUM; //Attribute used in standard methodology to sort function objects (attribute must be user populated) var g_stBusArchCustomSAP = Constants.ST_SOLAR_FUNC; //Custom Symbol Type used for SAP functions var g_stBusArchCustomSAPsc = Constants.ST_SOLAR_FUNC_SHORTCUT; //Custom Symbol Type used for SAP functions var g_stBusArchCustomNonSAP = Constants.ST_SYS_FUNC_TRG; //Custom Symbol Type used for non-SAP functions var g_stBusArchCustomManFunc = Constants.ST_FUNC; var g_AttrBusArchName = Constants.AT_NAME; //Attribute used to store the activity name var g_AttrBusArchDesc = Constants.AT_DESC; //Attribute used to store the activity description var g_mtBusArchL3Detail = Constants.MT_FUNC_ALLOC_DGM; var g_stBusArchFadContent = new Array(); g_stBusArchFadContent[0] = Constants.ST_RISK_1; // SymbolNumber 688 var g_stBusArchOrg = new Array(); //Object types used for Organisational Information g_stBusArchOrg[0] = Constants.ST_ORG_UNIT_1; g_stBusArchOrg[1] = Constants.ST_ORG_UNIT_2; g_stBusArchOrg[2] = Constants.ST_ORG_UNIT_3; // DEV SERVER var g_IPOCompleteness = 199382; var g_IPOAccuracy = 264918; var g_IPOVAlidity = 330454; var g_IPORestricted = 395990; var g_IPOTimeliness = 854742; var g_FSAAccuracy = 527062; var g_FSATimeliness = 920278; var g_FSACompleteness = 592598; var g_FSACutOff = 658134; var g_FSAExistence = 723670; var g_FSAOccurence = 789206; var g_FSAPresentationDisclosure = 854742; var g_FSARighsObligations = 920278; var g_FSAValuationAllocation = 985814; // DEV SERVER // TEST SERVER /* var g_IPOCompleteness = 68310; var g_IPOAccuracy = 133846; var g_IPOVAlidity = 199382; var g_IPORestricted = 264918; var g_IPOTimeliness = 854742; var g_FSAAccuracy = 330454; var g_FSATimeliness = 920278; var g_FSACompleteness = 395990; var g_FSACutOff = 461526; var g_FSAExistence = 527062; var g_FSAOccurence = 592598; var g_FSAPresentationDisclosure = 658134; var g_FSARighsObligations = 723670; var g_FSAValuationAllocation = 789206; */ // TEST SERVER main(); // Entry Point function main() { var oL2Objects = ArisData.getSelectedObjOccs(); var sGroupLevelName = ''; //var sAssignedModels = oL2Objects[0].ObjDef.GetAssignments(g_mtBusArch); var sAssignedModels = oL2Objects[0].ObjDef().AssignedModels(g_mtBusArch); var bGovernanceLevelPassed = false; var oHighLevelValues; var oSuperiorObjDefs; var oModel; var oValueChainName = "[Value Chain Name]"; if (oL2Objects.length > 0) { sGroupLevelName = oL2Objects[0].Model().Group().Name(g_nloc); var countObjOccsFound = new Array(); GetRootGroupRecursively(oL2Objects[0].Model().Group(),countObjOccsFound); //GetRootGroupRecursively(oL2Objects[0].Model().Group().Parent(),countObjOccsFound); if (countObjOccsFound.length > 0) { if (sGroupLevelName.substr(0, 2) == 'L2' && oL2Objects.length == 1) { oHighLevelValues = generateHighLevelValues(oL2Objects[0].ObjDef()); oModel = oL2Objects[0].ObjDef().AssignedModels(g_mtBusArch[1][0]); oValueChainName = oL2Objects[0].ObjDef().Attribute(Constants.AT_NAME, g_nloc).GetValue(true); bGovernanceLevelPassed = true; } else if (sGroupLevelName.substr(0, 2) == 'L3' && oL2Objects.length > 0) { oSuperiorObjDefs = oL2Objects[0].Model().getSuperiorObjDefs([Constants.OT_FUNC]); oModel = oL2Objects[0].Model(); // A model will only ever be connected to a single superior object. if (oSuperiorObjDefs.length == 1) { oValueChainName = oSuperiorObjDefs[0].Attribute(Constants.AT_NAME, g_nloc).GetValue(true); if (oSuperiorObjDefs[0].getDefaultSymbolNum() == Constants.ST_VAL_ADD_CHN_SML_1) { oHighLevelValues = generateHighLevelValues(oSuperiorObjDefs[0]); } } bGovernanceLevelPassed = true; } else { Dialogs.MsgBox("Run the report from a single L2 object, or from multiple L3 objects!"); } if (bGovernanceLevelPassed == true) { g_sTitle = sAssignedModels[0].Name(g_nloc) createDateFormat(); //Set Filename g_sFormat = Context.getSelectedFormat(); //Begin Output if (g_sFormat == "ArisOutputFormatType OutputXLS") { sselfile = "Risk and Control Matrix - " + g_sTitle + " - " + g_sDateTitle + ".xls"; Context.setSelectedFile(sselfile); g_ooutfile = Context.createOutputObject(Constants.OUTEXCEL, Context.getSelectedFile()); } else {} initialiseOutput(); defineOutputl(); writeCoverPage(oModel, oHighLevelValues, oValueChainName); switch(sGroupLevelName.substr(0, 2)) { case 'L2': if(g_sFormat == "ArisOutputFormatType OutputXLS") { generateL3BusArchDetailedViewForXLS(oL2Objects[0]); } else {} break; case 'L3': if(g_sFormat == "ArisOutputFormatType OutputXLS") { generateL4BusArchForXLS(oL2Objects); } else {} break; } g_ooutfile.WriteReport(Context.getSelectedPath(), Context.getSelectedFile()); } } else { Dialogs.MsgBox("Ensure that the object you are running the report from, occurs within the correct group structure!"); } } else { Dialogs.MsgBox("At least one object must be selected"); } } //********************************L2 Section PDF,DOC,XLS**************************************************************************** function generateHighLevelValues(object) { var sOrgGroup = Array(); //var oAssignedFAD = object.ObjDef().AssignedModels(g_mtBusArchL3Detail); var oAssignedFAD = object.AssignedModels(g_mtBusArchL3Detail); // Ensure that the object has an assignment to a FAD if (oAssignedFAD.length > 0) { var aFADOrgData = oAssignedFAD[0].ObjOccListBySymbol(g_stBusArchOrg); for (var i = 0; i < aFADOrgData.length; i++){ if (aFADOrgData[i].ObjDef().TypeNum() == Constants.OT_ORG_UNIT) { var oSingleValue = cleanStringData(aFADOrgData[i].ObjDef().Attribute(Constants.AT_NAME, g_nloc).GetValue(true)); sOrgGroup[sOrgGroup.length] = oSingleValue + " (group) "; } } } return sOrgGroup; } function generateL3BusArchDetailedViewForXLS(oParentObject){ var ob_AssignedModels = oParentObject.ObjDef().AssignedModels(g_mtBusArch[1]); if(ob_AssignedModels.length != 0) { for (var bb = 0; bb < ob_AssignedModels.length; bb++) { s_oL3Objects = ArisData.sort(ob_AssignedModels[bb].ObjOccListFilter(Constants.OT_FUNC), g_iBusArchSortAttr, g_nloc); generateL4BusArchForXLS(s_oL3Objects); } } } //********************************L4 Section PDF,DOC,XLS**************************************************************************** function generateL4BusArchForXLS(oParentObject){ var sL3ParentName; var sControls = Array(); var sL3FADOrgUnitTypes = Array(); var sPersonTypes = Array(); var oFADResults = new Array(); // Process var oProcess = new Array(); var oProcessStep = new Array(); var oProcessStepDescription = new Array(); // Conrol var oControlObjective = new Array(); // Risk var oRiskName = new Array(); var oRiskDescription = new Array(); // Control var oControlID = new Array(); var oControlName = new Array(); var oControlDescription = new Array(); var oLineClassofBusiness = new Array(); // Line of business/Class of business var oControlDocument = new Array(); var sDocumentTypes = Array(); var oControlKeyControl = new Array(); var oControlFrequency = new Array(); var oControlAutomatedManual = new Array(); var oControlITControl = new Array(); var oControlEffectofControl = new Array(); var oControlPersonType = new Array(); // Information Processing Objectives var oInfProcObjCompleteness = new Array(); var oInfProcObjAccuracy = new Array(); var oInfProcObjValidity = new Array(); var oInfProcObjRestricted = new Array(); var oInfProcObjTimeliness = new Array(); // Financial Statement Assertions var oFinStatAssAccuracy = new Array(); var oFinStatAssTimeliness = new Array(); var oFinStatAssCompleteness = new Array(); var oFinStatAssCutoff = new Array(); var oFinStatAssOccurrence = new Array(); var oFinStatAssExistence = new Array(); var oFinStatAssPresentationDisclosure = new Array(); var oFinStatAssRightsObligations = new Array(); var oFinStatAssValuationAllocation = new Array(); var sContainsRisk = false; var sContainsControl = false; var sControlCounter = 0; g_ooutfile.TableRow(); writeTableHeadCRowColumnSpan("Business Process", 1, 4, "TableHeadC50Percent"); writeTableHeadCRowColumnSpan("Risk", 1, 2, "TableHeadC80PercentCentre"); writeTableHeadCRowColumnSpan("Control", 1, 11, "TableHeadC50Percent"); writeTableHeadCRowColumnSpan("Information Processing Objectives", 1, 5, "TableHeadC80PercentCentre"); writeTableHeadCRowColumnSpan("Financial Statement Assertions", 1, 9, "TableHeadC50Percent"); g_ooutfile.TableRow(); writeTableHead("Name",25); writeTableHead("Activity / Process Step Name",33); writeTableHead("Activity / Process Step - Details",35); writeTableHeadC("Line of business/Class of business",25); writeTableHeadC50Percent("Name",30); writeTableHeadC50Percent("Description",25); writeTableHead("Objective",30); writeTableHead("Reference Number",25); writeTableHead("Name",25); writeTableHead("Description",25); writeTableHeadC("Critical Reports and/or spreadsheets",25); writeTableHeadC("Key/Non-Key",25); writeTableHeadC("Frequency",25); writeTableHeadC("Automated/Manual Execution",25); writeTableHeadC("IT Execution",25); writeTableHeadC("Preventative or Detective",25); writeTableHeadC("Control Owner",25); // Information Processing Objectives writeTableHeadC50Percent("Completeness",15); writeTableHeadC50Percent("Accuracy",15); writeTableHeadC50Percent("Validity",15); writeTableHeadC50Percent("Restricted",15); writeTableHeadC50Percent("Timeliness",15); // Financial Statement Assertions writeTableHeadC80PercentCentre("Accuracy",25); writeTableHeadC80PercentCentre("Timeliness",25); writeTableHeadC80PercentCentre("Completeness",25); writeTableHeadC80PercentCentre("Cut-off",25); writeTableHeadC80PercentCentre("Existence",25); writeTableHeadC80PercentCentre("Occurrence",25); writeTableHeadC80PercentCentre("Presentation & Disclosure",25); writeTableHeadC80PercentCentre("Rights & Obligations",25); writeTableHeadC80PercentCentre("Valuation & Allocation",25); for (var ii = 0; ii < oParentObject.length; ii++) { var ob_AssignedModels = oParentObject[ii].ObjDef().AssignedModels(g_mtBusArch); // if(ob_AssignedModels.length != 0) { var oL4Objects = ArisData.sort(ob_AssignedModels[0].ObjOccListFilter(Constants.OT_FUNC), g_iBusArchSortAttr, g_nloc); for (var gg = 0; gg < oL4Objects.length; gg++) { if(oL4Objects[gg].getActive() == 1) { if ((oL4Objects[gg].SymbolNum() == g_stBusArchCustomManFunc) || (oL4Objects[gg].SymbolNum() == g_stBusArchCustomNonSAP) || (oL4Objects[gg].SymbolNum() == g_stBusArchCustomSAP) || (oL4Objects[gg].SymbolNum() == g_stBusArchCustomSAPsc)) { var oL4AssignedFAD = oL4Objects[gg].ObjDef().AssignedModels(g_mtBusArchL3Detail); if (oL4AssignedFAD.length != 0) { var aL4FADObjects = oL4AssignedFAD[0].ObjOccListFilter(Constants.OT_FUNC); // Get the associated risk var aL4FADRisk = oL4AssignedFAD[0].ObjOccListBySymbol(g_stBusArchFadContent[0]); if (aL4FADRisk.length > 0) { sContainsRisk = true; // L3 Object Assigned FAD retrieve Org Unit var o_L3AssignedFAD = oParentObject[ii].ObjDef().AssignedModels(g_mtBusArchL3Detail); if(o_L3AssignedFAD.length != 0) { var oL3Objects = o_L3AssignedFAD[0].ObjOccListFilter(Constants.OT_FUNC); if(oL3Objects.length > 0) { // L3 Object FAD Org Unit - Control: Line Class of Business; var aL3FADOrgUnit = getConnectedObjOcc(oL3Objects[0], Constants.ST_ORG_UNIT_1); if (aL3FADOrgUnit.length > 0) { for (var i1 = 0; i1 < aL3FADOrgUnit.length; i1++) { sL3FADOrgUnitTypes[sL3FADOrgUnitTypes.length] = aL3FADOrgUnit[i1].ObjDef().Attribute(Constants.AT_NAME, g_nloc).GetValue(true); } } if (sL3FADOrgUnitTypes.length > 0) { oLineClassofBusiness.push(sL3FADOrgUnitTypes.join("\n")); // Clear FADOrgUnitType array. sL3FADOrgUnitTypes = new Array(); } else { oLineClassofBusiness.push(""); } } } for (var fadr = 0; fadr < aL4FADRisk.length; fadr++) { // New Implementation var aControlObjects = getConnectedObjOcc(aL4FADRisk[fadr], 284); // This has been relaxed to allow Risks that have no associated Controls if (aControlObjects.length > 0) { for (var bcdco = 0; bcdco < aControlObjects.length; bcdco++) { if (aControlObjects[bcdco].SymbolNum() == 284) { sContainsControl = true; // Process //oProcess.push(oParentObject[0].ObjDef().Name(g_nloc)); oProcess.push(oParentObject[ii].ObjDef().Name(g_nloc)); oProcessStep.push(oL4Objects[gg].ObjDef().Attribute(g_AttrBusArchName, g_nloc).GetValue(true)); oProcessStepDescription.push(oL4Objects[gg].ObjDef().Attribute(g_AttrBusArchDesc, g_nloc).GetValue(true)); //oLineClassofBusiness.push("Line Class of Business"); // Risk oRiskName.push(aL4FADRisk[fadr].ObjDef().Attribute(g_AttrBusArchName, g_nloc).GetValue(true)); oRiskDescription.push(aL4FADRisk[fadr].ObjDef().Attribute(g_AttrBusArchDesc, g_nloc).GetValue(true)); // Control oControlObjective.push(aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_CTRL_OBJECTIVE, g_nloc).GetValue(true)); // Control Objective oControlID.push(aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_CTRL_ID, g_nloc).GetValue(true)); // Control Reference Number oControlName.push(aControlObjects[bcdco].ObjDef().Attribute(g_AttrBusArchName, g_nloc).GetValue(true)); oControlDescription.push(aControlObjects[bcdco].ObjDef().Attribute(g_AttrBusArchDesc, g_nloc).GetValue(true)); // Control Description var aL4FADControlDocument = getConnectedObjOcc(aControlObjects[bcdco], Constants.ST_DOC); if (aL4FADControlDocument.length > 0) { for (var kk = 0; kk < aL4FADControlDocument.length; kk++) { sDocumentTypes[sDocumentTypes.length] = aL4FADControlDocument[kk].ObjDef().Attribute(Constants.AT_NAME, g_nloc).GetValue(true); } } if (sDocumentTypes.length > 0) { oControlDocument.push(sDocumentTypes.join("\n")); // Clear DocumentType array, before next Control evaluation. sDocumentTypes = new Array(); } else { oControlDocument.push(""); } var oControlIsKeyControl; if (aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_KEY_CTRL, g_nloc).GetValue(true) == "True") { oControlIsKeyControl = "Key control"; } else if (aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_KEY_CTRL, g_nloc).GetValue(true) == "False") { oControlIsKeyControl = "Non-Key control"; } else { oControlIsKeyControl = ""; } oControlKeyControl.push(oControlIsKeyControl); // Control Frequency oControlFrequency.push(aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_CTRL_FREQUENCY, g_nloc).GetValue(true)); // Control Automated or Manual var oControlIsAutomatedorManual; if (aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_CTRL_EXECUTION_MANUAL, g_nloc).GetValue(true) == "True") { oControlIsAutomatedorManual = "Manual"; } else if (aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_CTRL_EXECUTION_MANUAL, g_nloc).GetValue(true) == "False") { oControlIsAutomatedorManual = "Automated"; } else { oControlIsAutomatedorManual = ""; } oControlAutomatedManual.push(oControlIsAutomatedorManual); // IT Control var oControlIsITControl; if (aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_CTRL_EXECUTION_IT, g_nloc).GetValue(true) == "True") { oControlIsITControl = "IT"; } else if (aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_CTRL_EXECUTION_IT, g_nloc).GetValue(true) == "False") { oControlIsITControl = ""; } else { oControlIsITControl = ""; } oControlITControl.push(oControlIsITControl); // Control Preventative or Detective oControlEffectofControl.push(aControlObjects[bcdco].ObjDef().Attribute(Constants.AT_AAM_CTRL_EFFECT, g_nloc).GetValue(true)); // Connected Person Type roles to Control object (Control Owner) (carris out connection type) var aL4FADControlOwner = getConnectedObjOcc(aControlObjects[bcdco], Constants.ST_EMPL_TYPE); if (aL4FADControlOwner.length > 0) { for (var kk = 0; kk < aL4FADControlOwner.length; kk++) { sPersonTypes[sPersonTypes.length] = aL4FADControlOwner[kk].ObjDef().Attribute(Constants.AT_NAME, g_nloc).GetValue(true); } } if (sPersonTypes.length > 0) { oControlPersonType.push(sPersonTypes.join("\n")); // Clear PersonType array, before next Control evaluation. sPersonTypes = new Array(); } else { oControlPersonType.push(""); } // Information Processing Objectives var oControlIsInfProcObjCompleteness; if (aControlObjects[bcdco].ObjDef().Attribute(g_IPOCompleteness, g_nloc).GetValue(true) == "True") { oControlIsInfProcObjCompleteness = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_IPOCompleteness, g_nloc).GetValue(true) == "False") { oControlIsInfProcObjCompleteness = ""; } else { oControlIsInfProcObjCompleteness = ""; } oInfProcObjCompleteness.push(oControlIsInfProcObjCompleteness); //oInfProcObjCompleteness.push(aControlObjects[bcdco].ObjDef().Attribute(985813, g_nloc).GetValue(true)); var oControlIsInfProcObjAccuracy; if (aControlObjects[bcdco].ObjDef().Attribute(g_IPOAccuracy, g_nloc).GetValue(true) == "True") { oControlIsInfProcObjAccuracy = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_IPOAccuracy, g_nloc).GetValue(true) == "False") { oControlIsInfProcObjAccuracy = ""; } else { oControlIsInfProcObjAccuracy = ""; } oInfProcObjAccuracy.push(oControlIsInfProcObjAccuracy); //oInfProcObjAccuracy.push("X"); var oControlIsInfProcObjValidity; if (aControlObjects[bcdco].ObjDef().Attribute(g_IPOVAlidity, g_nloc).GetValue(true) == "True") { oControlIsInfProcObjValidity = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_IPOVAlidity, g_nloc).GetValue(true) == "False") { oControlIsInfProcObjValidity = ""; } else { oControlIsInfProcObjValidity = ""; } oInfProcObjValidity.push(oControlIsInfProcObjValidity); //oInfProcObjValidity.push(""); var oControlIsInfProcObjRestricted; if (aControlObjects[bcdco].ObjDef().Attribute(g_IPORestricted, g_nloc).GetValue(true) == "True") { oControlIsInfProcObjRestricted = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_IPORestricted, g_nloc).GetValue(true) == "False") { oControlIsInfProcObjRestricted = ""; } else { oControlIsInfProcObjRestricted = ""; } oInfProcObjRestricted.push(oControlIsInfProcObjRestricted); //oInfProcObjRestricted.push(""); var oControlIsInfProcObjTimeliness; if (aControlObjects[bcdco].ObjDef().Attribute(g_IPOTimeliness, g_nloc).GetValue(true) == "True") { oControlIsInfProcObjTimeliness = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_IPOTimeliness, g_nloc).GetValue(true) == "False") { oControlIsInfProcObjTimeliness = ""; } else { oControlIsInfProcObjTimeliness = ""; } oInfProcObjTimeliness.push(oControlIsInfProcObjTimeliness); // Financial Statement Assertions var oControlIsFinStatAssAccuracy; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAAccuracy, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssAccuracy = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAAccuracy, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssAccuracy = ""; } else { oControlIsFinStatAssAccuracy = ""; } oFinStatAssAccuracy.push(oControlIsFinStatAssAccuracy); //oFinStatAssAccuracy.push("X"); var oControlIsFinStatAssTimeliness; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSATimeliness, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssTimeliness = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSATimeliness, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssTimeliness = ""; } else { oControlIsFinStatAssTimeliness = ""; } oFinStatAssTimeliness.push(oControlIsFinStatAssTimeliness); var oControlIsFinStatAssCompleteness; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSACompleteness, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssCompleteness = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSACompleteness, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssCompleteness = ""; } else { oControlIsFinStatAssCompleteness = ""; } oFinStatAssCompleteness.push(oControlIsFinStatAssCompleteness); //oFinStatAssCompleteness.push(""); var oControlIsFinStatAssCutoff; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSACutOff, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssCutoff = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSACutOff, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssCutoff = ""; } else { oControlIsFinStatAssCutoff = ""; } oFinStatAssCutoff.push(oControlIsFinStatAssCutoff); //oFinStatAssCutoff.push(""); var oControlIsFinStatAssOccurrence; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAOccurence, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssOccurrence = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAOccurence, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssOccurrence = ""; } else { oControlIsFinStatAssOccurrence = ""; } oFinStatAssOccurrence.push(oControlIsFinStatAssOccurrence); //oFinStatAssOccurrence.push(""); var oControlIsFinStatAssExistence; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAExistence, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssExistence = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAExistence, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssExistence = ""; } else { oControlIsFinStatAssExistence = ""; } oFinStatAssExistence.push(oControlIsFinStatAssExistence); //oFinStatAssExistence.push("X"); var oControlIsFinStatAssPresentationDisclosure; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAPresentationDisclosure, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssPresentationDisclosure = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAPresentationDisclosure, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssPresentationDisclosure = ""; } else { oControlIsFinStatAssPresentationDisclosure = ""; } oFinStatAssPresentationDisclosure.push(oControlIsFinStatAssPresentationDisclosure); //oFinStatAssPresentationDisclosure.push(""); var oControlIsFinStatAssRightsObligations; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSARighsObligations, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssRightsObligations = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSARighsObligations, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssRightsObligations = ""; } else { oControlIsFinStatAssRightsObligations = ""; } oFinStatAssRightsObligations.push(oControlIsFinStatAssRightsObligations); //oFinStatAssRightsObligations.push("X"); var oControlIsFinStatAssValuationAllocation; if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAValuationAllocation, g_nloc).GetValue(true) == "True") { oControlIsFinStatAssValuationAllocation = "X"; } else if (aControlObjects[bcdco].ObjDef().Attribute(g_FSAValuationAllocation, g_nloc).GetValue(true) == "False") { oControlIsFinStatAssValuationAllocation = ""; } else { oControlIsFinStatAssValuationAllocation = ""; } oFinStatAssValuationAllocation.push(oControlIsFinStatAssValuationAllocation); } } } else { sContainsControl = false; // No Controls assigned to Risk oProcess.push(oParentObject[ii].ObjDef().Name(g_nloc)); oProcessStep.push(oL4Objects[gg].ObjDef().Attribute(g_AttrBusArchName, g_nloc).GetValue(true)); oProcessStepDescription.push(oL4Objects[gg].ObjDef().Attribute(g_AttrBusArchDesc, g_nloc).GetValue(true)); // Risk oRiskName.push(aL4FADRisk[fadr].ObjDef().Attribute(g_AttrBusArchName, g_nloc).GetValue(true)); oRiskDescription.push(aL4FADRisk[fadr].ObjDef().Attribute(g_AttrBusArchDesc, g_nloc).GetValue(true)); } // New Implementation } } // This has been relaxed to allow Risks that have no associated Controls //if (sContainsControl) { if (sContainsRisk) { oFADResults[sControlCounter] = Array(); oFADResults[sControlCounter][0] = oProcess; oFADResults[sControlCounter][1] = oProcessStep; oFADResults[sControlCounter][2] = oProcessStepDescription; oFADResults[sControlCounter][3] = oLineClassofBusiness;// Line of Business oFADResults[sControlCounter][4] = oRiskName; oFADResults[sControlCounter][5] = oRiskDescription; oFADResults[sControlCounter][6] = oControlObjective; oFADResults[sControlCounter][7] = oControlID; oFADResults[sControlCounter][8] = oControlName; oFADResults[sControlCounter][9] = oControlDescription; oFADResults[sControlCounter][10] = oControlDocument; // Control Document oFADResults[sControlCounter][11] = oControlKeyControl; // Key Control oFADResults[sControlCounter][12] = oControlFrequency; // Control Frequency oFADResults[sControlCounter][13] = oControlAutomatedManual; // Control Automated or Manual oFADResults[sControlCounter][14] = oControlITControl; //IT Control oFADResults[sControlCounter][15] = oControlEffectofControl; oFADResults[sControlCounter][16] = oControlPersonType; // Information Processing Objectives oFADResults[sControlCounter][17] = oInfProcObjCompleteness; oFADResults[sControlCounter][18] = oInfProcObjAccuracy; oFADResults[sControlCounter][19] = oInfProcObjValidity; oFADResults[sControlCounter][20] = oInfProcObjRestricted; oFADResults[sControlCounter][21] = oInfProcObjTimeliness; // Financial Statement Assertions oFADResults[sControlCounter][22] = oFinStatAssAccuracy; oFADResults[sControlCounter][23] = oFinStatAssTimeliness; oFADResults[sControlCounter][24] = oFinStatAssCompleteness; oFADResults[sControlCounter][25] = oFinStatAssCutoff; oFADResults[sControlCounter][26] = oFinStatAssOccurrence; oFADResults[sControlCounter][27] = oFinStatAssExistence; oFADResults[sControlCounter][28] = oFinStatAssPresentationDisclosure; oFADResults[sControlCounter][29] = oFinStatAssRightsObligations; oFADResults[sControlCounter][30] = oFinStatAssValuationAllocation; /* oFADResults[sControlCounter][21] = oFinStatAssAccuracy; oFADResults[sControlCounter][22] = oFinStatAssCompleteness; oFADResults[sControlCounter][23] = oFinStatAssCutoff; oFADResults[sControlCounter][24] = oFinStatAssOccurrence; oFADResults[sControlCounter][25] = oFinStatAssExistence; oFADResults[sControlCounter][26] = oFinStatAssPresentationDisclosure; oFADResults[sControlCounter][27] = oFinStatAssRightsObligations; oFADResults[sControlCounter][28] = oFinStatAssValuationAllocation; */ sContainsRisk = false; sContainsControl = false; sControlCounter += 1; oProcess = new Array(); oProcessStep = new Array(); oProcessStepDescription = new Array(); oLineClassofBusiness = new Array(); oRiskName = new Array(); oRiskDescription = new Array(); oControlObjective = new Array(); oControlID = new Array(); oControlName = new Array(); oControlDescription = new Array(); oControlDocument = new Array(); oControlKeyControl = new Array(); oControlFrequency = new Array(); oControlAutomatedManual = new Array(); oControlITControl = new Array(); oControlEffectofControl = new Array(); oControlPersonType = new Array(); // Information Processing Objectives oInfProcObjCompleteness = new Array(); oInfProcObjAccuracy = new Array(); oInfProcObjValidity = new Array(); oInfProcObjRestricted = new Array(); oInfProcObjTimeliness = new Array(); // Financial Statement Assertions oFinStatAssAccuracy = new Array(); oFinStatAssTimeliness = new Array(); oFinStatAssCompleteness = new Array(); oFinStatAssCutoff = new Array(); oFinStatAssOccurrence = new Array(); oFinStatAssExistence = new Array(); oFinStatAssPresentationDisclosure = new Array(); oFinStatAssRightsObligations = new Array(); oFinStatAssValuationAllocation = new Array(); } } } } } } } if (oFADResults.length > 0) { for (var fadr = 0; fadr < oFADResults.length; fadr++) { var oProcessResults = new Array(); var oProcessStepResults = new Array(); var oProcessStepDescriptionResults = new Array(); var oControlLineClassofBusinessResults = new Array(); var oRiskNameResults = new Array(); var oRiskDescriptionResults = new Array(); var oControlObjectiveResults = new Array(); var oControlIDResults = new Array(); var oControlNameResults = new Array(); var oControlDescriptionResults = new Array(); var oControlDocumentResults = new Array(); var oControlKeyControlResults = new Array(); var oControlFrequencyResults = new Array(); var oControlAutomatedManualResults = new Array(); var oControlITControlResults = new Array(); var oControlEffectofControlResults = new Array(); var oPersoneTypeResults = new Array(); // Information Processing Objectives var oInfProcObjCompletenessResults = new Array(); var oInfProcObjAccuracyResults = new Array(); var oInfProcObjValidityResults = new Array(); var oInfProcObjRestrictedResults = new Array(); var oInfProcObjTimelinessResults = new Array(); // Financial Statement Assertions var oFinStatAssAccuracyResults = new Array(); var oFinStatAssTimelinessResults = new Array(); var oFinStatAssCompletenessResults = new Array(); var oFinStatAssCutoffResults = new Array(); var oFinStatAssOccurrenceResults = new Array(); var oFinStatAssExistenceResults = new Array(); var oFinStatAssPresentationDisclosureResults = new Array(); var oFinStatAssRightsObligationsResults = new Array(); var oFinStatAssValuationAllocationResults = new Array(); oProcessResults = oFADResults[fadr][0]; oProcessStepResults = oFADResults[fadr][1]; oProcessStepDescriptionResults = oFADResults[fadr][2]; oControlLineClassofBusinessResults = oFADResults[fadr][3]; oRiskNameResults = oFADResults[fadr][4]; oRiskDescriptionResults = oFADResults[fadr][5]; oControlObjectiveResults = oFADResults[fadr][6]; oControlIDResults = oFADResults[fadr][7]; oControlNameResults = oFADResults[fadr][8]; oControlDescriptionResults = oFADResults[fadr][9]; oControlDocumentResults = oFADResults[fadr][10]; oControlKeyControlResults = oFADResults[fadr][11]; oControlFrequencyResults = oFADResults[fadr][12]; oControlAutomatedManualResults = oFADResults[fadr][13]; oControlITControlResults = oFADResults[fadr][14]; oControlEffectofControlResults = oFADResults[fadr][15]; oPersoneTypeResults = oFADResults[fadr][16]; // Information Processing Objectives oInfProcObjCompletenessResults = oFADResults[fadr][17]; oInfProcObjAccuracyResults = oFADResults[fadr][18]; oInfProcObjValidityResults = oFADResults[fadr][19]; oInfProcObjRestrictedResults = oFADResults[fadr][20]; oInfProcObjTimelinessResults = oFADResults[fadr][21]; // Financial Statement Assertions oFinStatAssAccuracyResults = oFADResults[fadr][22]; oFinStatAssTimelinessResults = oFADResults[fadr][23]; oFinStatAssCompletenessResults = oFADResults[fadr][24]; oFinStatAssCutoffResults = oFADResults[fadr][25]; oFinStatAssOccurrenceResults = oFADResults[fadr][26]; oFinStatAssExistenceResults = oFADResults[fadr][27]; oFinStatAssPresentationDisclosureResults = oFADResults[fadr][28]; oFinStatAssRightsObligationsResults = oFADResults[fadr][29]; oFinStatAssValuationAllocationResults = oFADResults[fadr][30]; /* oFinStatAssAccuracyResults = oFADResults[fadr][21]; oFinStatAssCompletenessResults = oFADResults[fadr][22]; oFinStatAssCutoffResults = oFADResults[fadr][23]; oFinStatAssOccurrenceResults = oFADResults[fadr][24]; oFinStatAssExistenceResults = oFADResults[fadr][25]; oFinStatAssPresentationDisclosureResults = oFADResults[fadr][26]; oFinStatAssRightsObligationsResults = oFADResults[fadr][27]; oFinStatAssValuationAllocationResults = oFADResults[fadr][28]; */ g_ooutfile.TableRow(); // This has been relaxed to allow Risks that have no associated Controls //for (var cntrl = 0; cntrl < oControlNameResults.length; cntrl++) { for (var cntrl = 0; cntrl < oRiskNameResults.length; cntrl++) { writeTableInfo(oProcessResults[0],25); writeTableInfo(oProcessStepResults[0],33); writeTableInfo(oProcessStepDescriptionResults[0],35); oControlLineClassofBusinessResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlLineClassofBusinessResults[cntrl],25); oRiskNameResults[cntrl] === undefined? writeTableInfo("",30):writeTableInfo(oRiskNameResults[cntrl],30); oRiskDescriptionResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oRiskDescriptionResults[cntrl],25); oControlObjectiveResults[cntrl] === undefined? writeTableInfo("",30):writeTableInfo(oControlObjectiveResults[cntrl],30); oControlIDResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlIDResults[cntrl],25); oControlNameResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlNameResults[cntrl],25); oControlDescriptionResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlDescriptionResults[cntrl],25); oControlDocumentResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlDocumentResults[cntrl],25); oControlKeyControlResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlKeyControlResults[cntrl],25); oControlFrequencyResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlFrequencyResults[cntrl],25); oControlAutomatedManualResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlAutomatedManualResults[cntrl],25); oControlITControlResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlITControlResults[cntrl],25); oControlEffectofControlResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oControlEffectofControlResults[cntrl],25); oPersoneTypeResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oPersoneTypeResults[cntrl],25); // Information Processing Objectives oInfProcObjCompletenessResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oInfProcObjCompletenessResults[cntrl],25); oInfProcObjAccuracyResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oInfProcObjAccuracyResults[cntrl],25); oInfProcObjValidityResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oInfProcObjValidityResults[cntrl],25); oInfProcObjRestrictedResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oInfProcObjRestrictedResults[cntrl],25); oInfProcObjTimelinessResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oInfProcObjTimelinessResults[cntrl],25); // Financial Statement Assertions oFinStatAssAccuracyResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssAccuracyResults[cntrl],25); oFinStatAssTimelinessResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssTimelinessResults[cntrl],25); oFinStatAssCompletenessResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssCompletenessResults[cntrl],25); oFinStatAssCutoffResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssCutoffResults[cntrl],25); oFinStatAssOccurrenceResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssOccurrenceResults[cntrl],25); oFinStatAssExistenceResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssExistenceResults[cntrl],25); oFinStatAssPresentationDisclosureResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssPresentationDisclosureResults[cntrl],25); oFinStatAssRightsObligationsResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssRightsObligationsResults[cntrl],25); oFinStatAssValuationAllocationResults[cntrl] === undefined? writeTableInfo("",25):writeTableInfo(oFinStatAssValuationAllocationResults[cntrl],25); g_ooutfile.TableRow(); } } } else { g_ooutfile.TableRow(); writeTableInfo("No risks defined", 25); writeTableInfo("",33); writeTableInfo("",35); writeTableInfoC("",25); // Line of business/Class of business writeTableInfoC("",30); writeTableInfo("",25); writeTableInfo("",30); writeTableInfo("",25); // Control ID - Control Reference Number writeTableInfo("",25); writeTableInfo("",25); writeTableInfoC("",25); // Control Documents writeTableInfoC("",25); // Key control writeTableInfoC("",25); // Control Frequency writeTableInfoC("",25); // Control Automated or Manual writeTableInfoC("",25); // IT Control writeTableInfoC("",25); writeTableInfo("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); writeTableInfoCentre("",25); } g_ooutfile.EndTable("", 100, "Arial", 8, Constants.C_BLACK, Constants.C_BLACK, 0, Constants.FMT_LEFT, 0); g_ooutfile.EndSection(); } //********************************Common Functions**************************************************************************** // Changed to accomodate Z Modelling Standards structure // function GetRootGroupRecursively(group,countObjOccsFound) { var oParentGroup = group.Parent(); // The following statement checks if the object occurs within the Enterprise Group structure (Enterprise group 'EE.51460') if (group.IsChildGroupOf(oParentGroup)) { if(oParentGroup.Attribute(Constants.AT_ID, g_nloc).GetValue(true) == 'EE.51460' || //(Enterprise group) oParentGroup.Attribute(Constants.AT_ID, g_nloc).GetValue(true) == 'EE.809.965960' || //(Z Modelling Standards) oParentGroup.Attribute(Constants.AT_ID, g_nloc).GetValue(true) == 'EE.809.230621') { //(Specific Overview Value Chain) countObjOccsFound.push(oParentGroup); return ; } else { GetRootGroupRecursively(oParentGroup,countObjOccsFound); } } } /* function GetRootGroupRecursively(group,countObjOccsFound) { var oParentGroup = group.Parent(); // The following statement checks if the object occurs within the Enterprise Group structure (Enterprise group 'EE.51460') if (group.IsChildGroupOf(oParentGroup)) { if(oParentGroup.Attribute(Constants.AT_ID, g_nloc).GetValue(true) == 'EE.51460') { //(Enterprise group) countObjOccsFound.push(oParentGroup); return ; } else { GetRootGroupRecursively(oParentGroup,countObjOccsFound); } } } */ function getConnectedObjOcc(objocc, objsymboltype) { return objocc.getConnectedObjOccs(objsymboltype); } function writeBusArchHeading(parentObject) { var ob_AssignedModels = parentObject.ObjDef().AssignedModels(g_mtBusArch); var sGroupLevelName = parentObject.Model().Group().Name(g_nloc); g_ooutfile.BeginTable(100, Constants.C_BLACK, Constants.C_TRANSPARENT, Constants.FMT_REPEAT_HEADER | Constants.FMT_LEFT, 0); g_ooutfile.TableRow(); writeHeading(g_sDoc,100); g_ooutfile.TableRow(); if (sGroupLevelName.substr(0, 2) != 'L3') { writeGroup(createHeaderDate(),100); g_ooutfile.TableRow(); writeGroup(ob_AssignedModels[0].Name(g_nloc),100); } else { writeGroup(createHeaderDate(),100); g_ooutfile.TableRow(); writeGroup(sGroupLevelName,100); } g_ooutfile.TableRow(); g_ooutfile.EndTable("", 100, g_sdFont, 8, Constants.C_BLACK, Constants.C_TRANSPARENT, 0, Constants.FMT_LEFT, 0); } function defineOutputl(){ //setup Output Object g_ooutfile.SetLeftMargin(20); g_ooutfile.SetRightMargin(20); g_ooutfile.SetTopMargin(10); // 20 g_ooutfile.SetBottomMargin(27); //Distance of bottom of text to bottom of page g_ooutfile.SetDistHeader(10); // 0 g_ooutfile.SetDistFooter(12); //Distance of bottom of footer to bottom of page g_ooutfile.SetAutoTOCNumbering(true); //setup Footer g_ooutfile.BeginFooter(); g_ooutfile.BeginParagraph(Constants.FMT_RIGHT, 0.71, 0.71, 0, 0, 0); g_ooutfile.Output("Page ", g_sdFont, 9, Constants.C_BLACK, Constants.C_TRANSPARENT, Constants.FMT_RIGHT, 0.71); g_ooutfile.OutputField(Constants.FIELD_PAGE, g_sdFont, 9, Constants.C_BLACK, Constants.C_TRANSPARENT, Constants.FMT_RIGHT); g_ooutfile.Output(" of ", g_sdFont, 9, Constants.C_BLACK, Constants.C_TRANSPARENT, Constants.FMT_RIGHT, 0.71); g_ooutfile.OutputField(Constants.FIELD_NUMPAGES, g_sdFont, 9, Constants.C_BLACK, Constants.C_TRANSPARENT, Constants.FMT_RIGHT); g_ooutfile.EndParagraph(); g_ooutfile.EndFooter(); } function cleanStringData(sString){ //Routine takes away the rogue line breaks from ARIS var xx = sString.charCodeAt(0); if (xx == 10){ sString = sString.substr(1, sString.length); } return sString; } function findAttrNum(attrList, attrName) { attrNum = null; for(ik=0; ik 0) { g_ooutfile.TableCellF(highlevelvalues.join("\n"), 1, 2, "TableNormal"); } else { g_ooutfile.TableCellF("[L2 Object FAD - Organization object]", 1, 2, "TableNormal"); } } else { g_ooutfile.TableCellF("[L2 Object FAD - Organization object]", 1, 2, "TableNormal"); } */ g_ooutfile.TableCellF("", 10, "TableNormalNoBorder"); g_ooutfile.TableCellF("Date", 20, "TableNormalCentreLineBreak"); g_ooutfile.TableRow(); g_ooutfile.TableCellF("", 10, "TableNormalNoBorder"); g_ooutfile.TableCellF("", 33, "TableNormalNoBorder"); g_ooutfile.TableCellF("Last Update", 1, 2, "TableNormalBold"); g_ooutfile.TableCellF(model.Attribute(Constants.AT_LAST_CHNG_2, g_nloc).GetValue(false), 1, 1, "TableNormal"); g_ooutfile.TableCellF("", 1, 1, "TableNormalNoBorder"); g_ooutfile.TableCellF("Signature", 1, 1, "TableNormalCentreLineBreak"); g_ooutfile.TableRow(); g_ooutfile.TableCellF("", 10, "TableNormalNoBorder"); g_ooutfile.TableCellF("", 33, "TableNormalNoBorder"); g_ooutfile.TableCellF("", 35, "TableNormalNoBorder"); g_ooutfile.TableCellF("", 30, "TableNormalNoBorder"); g_ooutfile.TableCellF("", 20, "TableNormalNoBorder"); g_ooutfile.TableCellF("", 10, "TableNormalNoBorder"); g_ooutfile.TableCellF("", 20, "TableNormalNoBorder"); } //********************************Common Functions****************************************************************************