code: def _compute_and_transfer_to_progress(self, process_name, start_timeperiod, end_timeperiod, job_record):
          
          source_collection_name = context.process_context[process_name].source
          start_id = self.ds.highest_primary_key(source_collection_name, start_timeperiod, end_timeperiod)
          end_id = self.ds.lowest_primary_key(source_collection_name, start_timeperiod, end_timeperiod)
          uow, is_duplicate = self.insert_and_publish_uow(job_record, start_id, end_id)
          self.update_job(job_record, uow, job.STATE_IN_PROGRESS)
docs: method computes new unit_of_work for job record in STATE_IN_PROGRESS
          it also contains _fuzzy_ logic regard the DuplicateKeyError:
          - we try to compute new scope of processing
          - in case we face DuplicateKeyError, we try to recover from it by reading existing unit_of_work from DB:
          -- in case unit_of_work can be located - we update job record and proceed normally
          -- in case unit_of_work can not be located (what is equal to fatal data corruption) - we log exception and
          ask/expect manual intervention to resolve the corruption