This is my first SSIS project so I'm struggling with some of the core concepts.
In production I have forms submitted along with files for each form. I need to verify that each file exists on disk before moving on to the next SSIS package.
In my first package I want to achieve the following:
- Extract sample data from production into temp DB - working
- Load sample data into a Recordset, rsFormSubmissions and get a count of records to be processed - working
- Show a message box with the number of records to be processed - working
- Loop through each record and, depending on the type of form, deserialize JSON data from one of the columns and add the resulting set of filenames to a list in another recordset, rsFiles - This is where I'm having a problem
- Loop through rsFiles and confirm that each file exists, if not, write a simple record to a table indicating the faulty record - haven't done this yet, but should be simple
Here is my Control Flow illustrating the rough explanation above:

The Problem
In step 4 above I tried finding a simple if/then or switch/case task but lacking that I opted for a hack I found on another post here in Stack which is to use an empty sequence container and from there use precedence constraints to determine what form type I'm dealing with using an expression:
@[FormSubmissions::FormTypeId] == 1
The above is the constraint for "Split out Generic form submission files" in the diagram - the left most flow in the loop.
Using a Data Flow I first use a Script Task to deserialize JSON data that was pushed into a variable by the loop container and then add the resulting list of files to a Recordset.
Note: If I disable the Control Flow section for Form 2A then Form 1G's process works and vice versa.
Each form type has its own JSON structure so if I were to attempt to process Form 2A using the Data Flow/ Script Task for Form 1 G I would run into exceptions. Which is where I'm at now. I'm getting Form 2A records being processed by the Data Flow for Form 1G.
My thinking is that I'm using my normal coding understanding to try and solve a problem where the tool works differently? I.e. I'm assuming that the loop is running through its data row by row AND foreach row checks the constraint and only executes the Dataflow for that constraint. Perhaps I'm not getting how parallelism impacts SSIS?

