I've done something like that before where we would load a csv file and then push a button or run this rule to loop through the years. This is an example of Extensibility Rule. I had commented out scenarioName initially which was set to a specific scenario and later replaced it so the user pushing the button's Scenario would be used since it was done in the workflow. Hope this gives some ideas how you can use it for your process.
Public Function Main(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As Object, ByVal args As ExtenderArgs) As Object
Try
'Loops through profile names and years to allow faster load for the growth components process
'Each year will need to add new forecast year to the timeNames ex. "2028", "2029"
Dim profileNames = {"GC_Fiscal_Default.GC_Revenue_Fiscal"}
'Dim scenarioName = "FCST_08_04"
Dim scenarioName As String = ScenarioDimHelper.GetNameFromID(si, si.WorkflowClusterPk.ScenarioKey) ' ' this gets the scenario from the user running the rule's workflow
Dim timeNames = {"2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028"} ' add years by putting
For Each profileName In profileNames
For Each timeName In timeNames
Dim wfClusterPk As WorkflowUnitClusterPk = BRApi.Workflow.General.GetWorkflowUnitClusterPk(si, profileName, scenarioName, timeName)
Dim objValidationTransformationProcessInfo As ValidationTransformationProcessInfo = BRApi.Import.Process.ValidateTransformation(si, wfClusterPk, True)
Dim objValidateIntersectionProcessInfo As ValidateIntersectionProcessInfo = BRApi.Import.Process.ValidateIntersections(si, wfClusterPk, True)
Dim objLoadCubeProcessInfo As LoadCubeProcessInfo = BRApi.Import.Process.LoadCube(si, wfClusterPk)
Next
Next
Return Nothing
Catch ex As Exception
Throw ErrorHandler.LogWrite(si, New XFException(si, ex))
End Try
End Function