I would create a scheduled event for step 1 that ends in an action that adds the records in a taskqueue. Adding the records could be done with an extra entity that has the imported records associated to it. The process the records with the microflow in the taskqueue with a batch pattern and end this with a new record in the taskqueue that processes all the records associated to the extra entity.
THis ensures the process is sequential and can only overlap with e new batch perfroming the three steps if the processing of the previous batch has not been finished. To prevent this you could create a control record in an entity that is set at the start with the scheduled event and updated when steps 3 has finished, then yoou can add a check in the scheduled event to see if this can be executed or needs to wait for the processing to finish. Using the endtransaction java action from community commons might be helpful depending on the scheduled events interval.