public void Execute(IActivityRequest request, IActivityResponse response) { string username = Credentials.UserDomain + "\\" + Credentials.UserName; COMInterop scorchInterop = new COMInterop(username, Credentials.Password); ExportFile RunbookExport = new ExportFile(); string runbookPath = String.Empty; string savePath = String.Empty; if (request.Inputs.Contains(ResourceStrings.runbookPath)) { runbookPath = request.Inputs[ResourceStrings.runbookPath].AsString(); } if (!runbookPath.ToLower().StartsWith(ResourceStrings.policies.ToLower())) { runbookPath = ResourceStrings.policies + runbookPath; } if (request.Inputs.Contains(ResourceStrings.savePath)) { savePath = request.Inputs[ResourceStrings.savePath].AsString(); } bool loadExportData = true; bool overwriteExistingExport = true; if (request.Inputs.Contains(ResourceStrings.loadExportData)) { loadExportData = Convert.ToBoolean(request.Inputs[ResourceStrings.loadExportData].AsString()); } if (request.Inputs.Contains(ResourceStrings.overwriteExistingExport)) { overwriteExistingExport = Convert.ToBoolean(request.Inputs[ResourceStrings.overwriteExistingExport].AsString()); } bool loadGlobalComputerGroupData = true; bool loadGlobalConfigurationData = true; bool loadGlobalCounter = true; bool loadGlobalScheduleData = true; bool loadGlobalVariableData = true; bool applyLinkBestPractices = false; bool updateMaxParallelRequests = false; if (request.Inputs.Contains(ResourceStrings.loadGlobalComputerGroupData)) { loadGlobalComputerGroupData = Convert.ToBoolean(request.Inputs[ResourceStrings.loadGlobalComputerGroupData].AsString()); } if (request.Inputs.Contains(ResourceStrings.loadGlobalConfigurationData)) { loadGlobalConfigurationData = Convert.ToBoolean(request.Inputs[ResourceStrings.loadGlobalConfigurationData].AsString()); } if (request.Inputs.Contains(ResourceStrings.loadGlobalCounter)) { loadGlobalCounter = Convert.ToBoolean(request.Inputs[ResourceStrings.loadGlobalCounter].AsString()); } if (request.Inputs.Contains(ResourceStrings.loadGlobalScheduleData)) { loadGlobalScheduleData = Convert.ToBoolean(request.Inputs[ResourceStrings.loadGlobalScheduleData].AsString()); } if (request.Inputs.Contains(ResourceStrings.loadGlobalVariableData)) { loadGlobalVariableData = Convert.ToBoolean(request.Inputs[ResourceStrings.loadGlobalVariableData].AsString()); } if (request.Inputs.Contains(ResourceStrings.applyLinkBestPractices)) { applyLinkBestPractices = Convert.ToBoolean(request.Inputs[ResourceStrings.applyLinkBestPractices].AsString()); } if (request.Inputs.Contains(ResourceStrings.updateMaxParallelRequests)) { updateMaxParallelRequests = Convert.ToBoolean(request.Inputs[ResourceStrings.updateMaxParallelRequests].AsString()); } bool cleanGlobalComputerGroupData = true; bool cleanGlobalConfigurationData = true; bool cleanGlobalCounter = true; bool cleanGlobalScheduleData = true; bool cleanGlobalVariableData = true; if (request.Inputs.Contains(ResourceStrings.cleanGlobalComputerGroupData)) { cleanGlobalComputerGroupData = Convert.ToBoolean(request.Inputs[ResourceStrings.cleanGlobalComputerGroupData].AsString()); } if (request.Inputs.Contains(ResourceStrings.cleanGlobalConfigurationData)) { cleanGlobalConfigurationData = Convert.ToBoolean(request.Inputs[ResourceStrings.cleanGlobalConfigurationData].AsString()); } if (request.Inputs.Contains(ResourceStrings.cleanGlobalCounter)) { cleanGlobalCounter = Convert.ToBoolean(request.Inputs[ResourceStrings.cleanGlobalCounter].AsString()); } if (request.Inputs.Contains(ResourceStrings.cleanGlobalScheduleData)) { cleanGlobalScheduleData = Convert.ToBoolean(request.Inputs[ResourceStrings.cleanGlobalScheduleData].AsString()); } if (request.Inputs.Contains(ResourceStrings.cleanGlobalVariableData)) { cleanGlobalVariableData = Convert.ToBoolean(request.Inputs[ResourceStrings.cleanGlobalVariableData].AsString()); } if (loadExportData) { RunbookExport.LoadExportFromFolder(runbookPath, scorchInterop); } if (loadGlobalComputerGroupData) { try { RunbookExport.LoadComputerGroups(scorchInterop); } catch { /* No Computer Groups defined in environment */ } } if (loadGlobalConfigurationData) { try { RunbookExport.LoadConfigurations(scorchInterop); } catch { /* No Global Configurations defined in environment */ } } if (loadGlobalCounter) { try { RunbookExport.LoadCounters(scorchInterop); } catch { /* No Counters defined in environment */ } } if (loadGlobalScheduleData) { try { RunbookExport.LoadSchedules(scorchInterop); } catch { /* No Schedules defined in environment */ } } if (loadGlobalVariableData) { try { RunbookExport.LoadVariables(scorchInterop); } catch { /* No Variables defined in environment */ } } if (cleanGlobalComputerGroupData) { RunbookExport.cleanGlobalComputerGroupsNode(); } if (cleanGlobalConfigurationData) { RunbookExport.cleanGlobalConfigurations(); } if (cleanGlobalCounter) { RunbookExport.cleanGlobalCountersNode(); } if (cleanGlobalScheduleData) { RunbookExport.cleanGlobalSchedulesNode(); } if (cleanGlobalVariableData) { RunbookExport.cleanGlobalVariablesNode(); } if (applyLinkBestPractices) { RunbookExport.modifyExportLinkApplyBestPractices(); } if (updateMaxParallelRequests) { RunbookExport.modifyExportSetMaxParallelRequestSettingNameBased(); } string logObjectSpecific = ResourceStrings.doNotModify; switch (logObjectSpecific) { case ResourceStrings.doNotModify: break; case ResourceStrings.t: RunbookExport.modifyObjectSpecificLogging(ResourceStrings.on); break; case ResourceStrings.f: RunbookExport.modifyObjectSpecificLogging(ResourceStrings.off); break; default: break; } string logCommonData = ResourceStrings.doNotModify; switch (logCommonData) { case ResourceStrings.doNotModify: break; case ResourceStrings.t: RunbookExport.modifyGenericLogging(ResourceStrings.on); break; case ResourceStrings.f: RunbookExport.modifyGenericLogging(ResourceStrings.off); break; default: break; } DirectoryInfo di = new DirectoryInfo(savePath.Substring(0, savePath.LastIndexOf('\\'))); if (!di.Exists) { di.Create(); } if (overwriteExistingExport) { RunbookExport.OISExport.Save(savePath); response.Publish(ResourceStrings.exportFilePath, savePath); } else { if (System.IO.File.Exists(savePath)) { throw new Exception("Export File already exists, run with Overwrite Existing Export True to overwrite"); } else { RunbookExport.OISExport.Save(savePath); response.Publish(ResourceStrings.exportFilePath, savePath); } } }