## required technology - nothing specified for languages and frameworks. - you may use your proficient one. - python, java, bash, spring batch, etc... either is fine if you are good at. ## data format 1. input data format is json. - refer for details. -> https://creww.esa.io/posts/245 1. output database tables, which is mysql. - refer for details. -> https://creww.esa.io/posts/250 ## uniq id use UUID v1(time based uuid) when insert it to database, it MUST be converted to binary. like this. ```sql select unhex(replace('1a3af9d4-cc93-44cb-9613-258a077323e5','-','')); ``` do same thing with you chosen technology. ## migration table refer -> https://creww.esa.io/posts/248 ## recovery feature is not required 1. recovery feature is not required for when failed batch. - it means, don't have to continue from previously processed point, such as spring batch. ## processing order order by `_createTime._seconds`, `_createTime._nanoseconds` ## escaped special characters in input data. since input data is json format, some special characters are escaped based on ECMA specs. so, MUST unescape them before insert to database. to do this, ECMA specs description may help you. https://www.json.org/json-en.html but if you use library widely used for processing input data, you may not have to do this. ## configuration batch MUST be able to specify following settings by external configuration file or input argument. 1. database 1. host 1. port 1. schema 1. username 1. password 1. json file name for input data 1. S3 Bucket name and object key prefix for attachment files ## logging batch MUST output about message which processing and completed. it would be nice to use `_ref._path.segments[1]` for this purpose. and also, if can output progress percentage, it would be much better. ## test creww prepare test cases such as input data and expected result. please ensure all test cases are passed. test data and expected result -> https://creww.esa.io/posts/252 ## migration procedure creww prepare migration procedure with the flow chart diagram. so implement according to it. if you find something that cannot implement according to the flow chart, contact to creww. and then, creww update flow chart. after that continue to work with it. refer for flowchart -> https://creww.esa.io/posts/251