def start(self):
<EOL>logger.info("<STR_LIT>")<EOL>logger.info("<STR_LIT>")<EOL>logger.info("<STR_LIT>")<EOL>logger.info("<STR_LIT>")<EOL>if not self.check_es_access():<EOL><INDENT>print('<STR_LIT>')<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT>if self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>if not self.check_redis_access():<EOL><INDENT>print('<STR_LIT>')<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT>if not self.check_arthur_access():<EOL><INDENT>print('<STR_LIT>')<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT><DEDENT>if self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>if not self.check_bestiary_access():<EOL><INDENT>print('<STR_LIT>')<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT><DEDENT>self.__execute_initial_load()<EOL>all_tasks_cls = []<EOL>all_tasks_cls.append(TaskProjects)  <EOL>if self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>if not self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>all_tasks_cls.append(TaskRawDataCollection)<EOL><DEDENT>else:<EOL><INDENT>all_tasks_cls.append(TaskRawDataArthurCollection)<EOL><DEDENT><DEDENT>if self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>all_tasks_cls.append(TaskIdentitiesLoad)<EOL>all_tasks_cls.append(TaskIdentitiesMerge)<EOL>all_tasks_cls.append(TaskIdentitiesExport)<EOL><DEDENT>if self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>all_tasks_cls.append(TaskEnrich)<EOL><DEDENT>if self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>all_tasks_cls.append(TaskTrackItems)<EOL><DEDENT>if self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>all_tasks_cls.append(TaskReport)<EOL><DEDENT>while True:<EOL><INDENT>if not all_tasks_cls:<EOL><INDENT>logger.warning("<STR_LIT>")<EOL>break<EOL><DEDENT>try:<EOL><INDENT>if not self.conf['<STR_LIT>']['<STR_LIT>']:<EOL><INDENT>self.execute_batch_tasks(all_tasks_cls,<EOL>self.conf['<STR_LIT>']['<STR_LIT>'],<EOL>self.conf['<STR_LIT>']['<STR_LIT>'])<EOL>self.execute_batch_tasks(all_tasks_cls,<EOL>self.conf['<STR_LIT>']['<STR_LIT>'],<EOL>self.conf['<STR_LIT>']['<STR_LIT>'])<EOL>break<EOL><DEDENT>else:<EOL><INDENT>self.execute_nonstop_tasks(all_tasks_cls)<EOL><DEDENT><DEDENT>except DataCollectionError as e:<EOL><INDENT>logger.error(str(e))<EOL>var = traceback.format_exc()<EOL>logger.error(var)<EOL><DEDENT>except DataEnrichmentError as e:<EOL><INDENT>logger.error(str(e))<EOL>var = traceback.format_exc()<EOL>logger.error(var)<EOL><DEDENT><DEDENT>logger.info("<STR_LIT>")<EOL>
This method defines the workflow of SirMordred. So it calls to:
- initialize the databases
- execute the different phases for the first iteration
  (collection, identities, enrichment)
- start the collection and enrichment in parallel by data source
- start also the Sorting Hat merge