code: def _reset_flow_uow(self, freerun_entry, uow, flow_request):
          
          process_entry = context.process_context[freerun_entry.process_name]
          arguments = process_entry.arguments
          arguments.update(freerun_entry.arguments)
          arguments.update(flow_request.arguments)
  
          uow.created_at = datetime.utcnow()
          uow.submitted_at = datetime.utcnow()
          uow.state = unit_of_work.STATE_REQUESTED
          uow.unit_of_work_type = unit_of_work.TYPE_FREERUN
          del uow.started_at
          del uow.finished_at
          del uow.number_of_aggregated_documents
          del uow.number_of_processed_documents
          uow.number_of_retries = 0
          uow.arguments = arguments
          self.uow_dao.update(uow)
docs: there can be multiple freeruns for a single combination of workflow+step+timeperiod
              hence, we have to *recycle* finished UOW