{"id":23122545,"url":"https://github.com/folio-org/mod-source-record-manager","last_synced_at":"2026-01-05T00:23:36.152Z","repository":{"id":37601701,"uuid":"151219023","full_name":"folio-org/mod-source-record-manager","owner":"folio-org","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-08T14:59:32.000Z","size":4330,"stargazers_count":5,"open_issues_count":2,"forks_count":7,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-08-08T16:37:18.780Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/folio-org.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-10-02T07:48:36.000Z","updated_at":"2025-07-23T19:11:00.000Z","dependencies_parsed_at":"2023-10-02T05:43:40.367Z","dependency_job_id":"a1d7af44-1ccf-4eff-b2f0-d23b05284023","html_url":"https://github.com/folio-org/mod-source-record-manager","commit_stats":null,"previous_names":[],"tags_count":125,"template":false,"template_full_name":null,"purl":"pkg:github/folio-org/mod-source-record-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-source-record-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-source-record-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-source-record-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-source-record-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/folio-org","download_url":"https://codeload.github.com/folio-org/mod-source-record-manager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-source-record-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270798843,"owners_count":24648034,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-17T07:27:59.557Z","updated_at":"2026-01-05T00:23:36.145Z","avatar_url":"https://github.com/folio-org.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mod-source-record-manager\n\nCopyright (C) 2018-2025 The Open Library Foundation\n\nThis software is distributed under the terms of the Apache License,\nVersion 2.0. See the file \"[LICENSE](LICENSE)\" for more information.\n\n\u003c!-- ../../okapi/doc/md2toc -l 2 -h 4 README.md --\u003e\n* [Introduction](#introduction)\n* [Compiling](#compiling)\n* [Docker](#docker)\n* [Installing the module](#installing-the-module)\n* [Deploying the module](#deploying-the-module)\n* [REST Client](#rest-client)\n\n## Introduction\n\nFOLIO source record manager module.\n\n## Compiling\n\n```\n   mvn install\n```\n\nSee that it says \"BUILD SUCCESS\" near the end.\n\n## Docker\n\nBuild the docker container with:\n\n```\n   docker build -t mod-source-record-manager .\n```\n\nTest that it runs with:\n\n```\n   docker run -t -i -p 8081:8081 mod-source-record-manager\n```\n\n## Installing the module\n\nFollow the guide of\n[Deploying Modules](https://github.com/folio-org/okapi/blob/master/doc/guide.md#example-1-deploying-and-using-a-simple-module)\nsections of the Okapi Guide and Reference, which describe the process in detail.\n\nFirst of all you need a running Okapi instance.\n(Note that [specifying](../README.md#setting-things-up) an explicit 'okapiurl' might be needed.)\n\n```\n   cd .../okapi\n   java -jar okapi-core/target/okapi-core-fat.jar dev\n```\n\nWe need to declare the module to Okapi:\n\n```\ncurl -w '\\n' -X POST -D -   \\\n   -H \"Content-type: application/json\"   \\\n   -d @target/ModuleDescriptor.json \\\n   http://localhost:9130/_/proxy/modules\n```\n\nThat ModuleDescriptor tells Okapi what the module is called, what services it\nprovides, and how to deploy it.\n\n## Deploying the module\n\nNext we need to deploy the module. There is a deployment descriptor in\n`target/DeploymentDescriptor.json`. It tells Okapi to start the module on 'localhost'.\n\nDeploy it via Okapi discovery:\n\n```\ncurl -w '\\n' -D - -s \\\n  -X POST \\\n  -H \"Content-type: application/json\" \\\n  -d @target/DeploymentDescriptor.json  \\\n  http://localhost:9130/_/discovery/modules\n```\n\nThen we need to enable the module for the tenant:\n\n```\ncurl -w '\\n' -X POST -D -   \\\n    -H \"Content-type: application/json\"   \\\n    -d @target/TenantModuleDescriptor.json \\\n    http://localhost:9130/_/proxy/tenants/\u003ctenant_name\u003e/modules\n```\n\n## Interaction with Kafka\n\n\nThere are several properties that should be set for modules that interact with Kafka: **KAFKA_HOST, KAFKA_PORT, OKAPI_URL, ENV**(unique env ID).\nAfter setup, it is good to check logs in all related modules for errors. Data import consumers and producers work in separate verticles that are set up in RMB's InitAPI for each module. That would be the first place to check deploy/install logs.\n\n**System properties** that can be adjusted for this module and default values:\n* Relevant from the **Iris** release, module versions from 3.0.0:\n  * \"_srm.kafka.RawMarcChunkConsumer.instancesNumber_\": 5\n  * \"_srm.kafka.StoredMarcChunkConsumer.instancesNumber_\": 5\n  * \"_srm.kafka.DataImportConsumersVerticle.instancesNumber_\": 5\n  * \"_srm.kafka.DataImportJournalConsumersVerticle.instancesNumber_\": 5\n  * \"_srm.kafka.RawChunksKafkaHandler.maxDistributionNum_\": 100\n  * \"_srm.kafka.CreatedRecordsKafkaHandler.maxDistributionNum_\": 100\n  * \"_srm.kafka.DataImportConsumer.loadLimit_\": 5\n* Relevant from the **Juniper** release, module versions from 3.1.0:\n  * \"_srm.kafka.JobMonitoringWatchdogVerticle.instancesNumber_\": 1\n  * \"_srm.kafka.QuickMarcUpdateConsumersVerticle.instancesNumber_\": 5\n  * \"_srm.kafka.QuickMarcUpdateKafkaHandler.maxDistributionNum_\": 100\n* Relevant from the **Iris** release(module version from 3.0.0) to **Kiwi** release(module version from 3.2.0):\n  * \"_kafkacache.topic.number.partitions_\": 1\n  * \"_kafkacache.topic.replication.factor_\": 1\n  * \"_kafkacache.log.retention.ms_\": 18000000\n  * \"_kafkacache.topic_\": events_cache\n  * \"_srm.kafkacache.cleanup.interval.ms_\": 3600000\n  * \"_srm.kafkacache.expiration.time.hours_\": 3\n\nThere are another important properties - `number of partitions` for topics `DI_COMPLETED`, `DI_ERROR`, `DI_INCOMING_MARC_BIB_FOR_ORDER_PARSED`, \n`DI_SRS_MARC_AUTHORITY_RECORD_CREATED`, `DI_SRS_MARC_HOLDING_RECORD_CREATED`, `DI_MARC_FOR_UPDATE_RECEIVED`, \n`DI_MARC_FOR_DELETE_RECEIVED`,\n`DI_INCOMING_MARC_BIB_RECORD_PARSED`, `DI_INCOMING_EDIFACT_RECORD_PARSED`, `DI_JOB_COMPLETED`\nand `DI_RAW_RECORDS_CHUNK_PARSED`\nwhich are created during tenant initialization, the values of which can be customized with\n`DI_COMPLETED_PARTITIONS`, `DI_ERROR_PARTITIONS`, `DI_INCOMING_MARC_BIB_FOR_ORDER_PARSED_PARTITIONS`, \n`DI_SRS_MARC_AUTHORITY_RECORD_CREATED_PARTITIONS`, `DI_SRS_MARC_HOLDINGS_RECORD_CREATED_PARTITIONS`,\n`DI_MARC_FOR_UPDATE_RECEIVED_PARTITIONS`, `DI_MARC_FOR_DELETE_RECEIVED_PARTITIONS`,\n`DI_INCOMING_MARC_BIB_RECORD_PARSED_PARTITIONS`, `DI_INCOMING_EDIFACT_RECORD_PARSED_PARTITIONS`, `DI_JOB_COMPLETED_PARTITIONS`\nand `DI_RAW_RECORDS_CHUNK_PARSED_PARTITIONS` env variables respectively.\nDefault value - `1`.\n\n#### Note:\nFrom v 3.1.3 there is a new property which defines limit for retrieving data to fill mapping parameters for the data-import mechanism: **\"srm.mapping.parameters.settings.limit:1000\"**\n\n\n## REST Client\n\nProvides RMB generated Client to call the module's endpoints. The Client is packaged into the lightweight jar.\n\n### Maven dependency \n\n```xml\n    \u003cdependency\u003e\n      \u003cgroupId\u003eorg.folio\u003c/groupId\u003e\n      \u003cartifactId\u003emod-source-record-manager-client\u003c/artifactId\u003e\n      \u003cversion\u003ex.y.z\u003c/version\u003e\n      \u003ctype\u003ejar\u003c/type\u003e\n    \u003c/dependency\u003e\n```\nWhere x.y.z - version of mod-source-record-manager.\n\n### Usage\n\nChangeManagerClient is generated by RMB and provides methods for all endpoints described in the RAML file\n```\n    // create client object with okapi url, tenant id and token\n    ChangeManagerClient client = new ChangeManagerClient(\"localhost\", \"diku\", \"token\");\n```\nClients methods work with RMB generated data classes based on json schemas. \nmod-source-record-manager-client jar contains only generated by RMB DTOs and clients. \n\nExample of sending a request to the mod-source-record-manager\n```\n    // send request to mod-source-record-manager\n    client.getChangeManagerJobExecutionsById(\"334508c6-e85d-407b-971d-a59f790cba30\", null, response-\u003e{\n      // processing response\n      if (response.statusCode() == 200){\n        System.out.println(\"Call is successful\");\n      }\n    });\n```\n### Issue tracker\n\nSee project [MODSOURMAN](https://issues.folio.org/browse/MODSOURMAN)\nat the [FOLIO issue tracker](https://dev.folio.org/guidelines/issue-tracker/).\n\n\n## Data import workflow\nThere are two ways to import records into source-record-storage via source-record-manager.\n* Using UI application - user has to upload file and start file processing, mod-data-import provides API for this functionality, see [FileUploadApi](https://github.com/folio-org/mod-data-import/blob/master/FileUploadApi.md) and [File processing API](https://github.com/folio-org/mod-data-import/blob/master/FileProcessingApi.md).\n* Using CLI tools - Postman, curl, SoapUI. This option is preferable if user wants to process records directly without uploading files, and mod-source-record-manager provides API for this.\n\nTo import records using CLI tools one has to follow steps below:\n1. Create JobExecution containing: sourceType=\"ONLINE\" \"userId\".\n2. Set JobProfile to JobExecution to trigger building of the JobProfileSnapshot\n3. Send RawRecordsDto containing records list and field last=false.\n4. Complete data import by sending last RawRecordsDto containing empty records list, field last=true and total number of records in field \"counter\".\n\n**NOTE**: Jobs with imported records directly via API will show up in the Data Import log without a file name.\n\n### Create JobExecution\n\nParsing records starts from creating Job Execution. \nSend POST request with InitJobExecutionsRqDto.\n```\ncurl -w '\\n' -X POST -D -   \\\n   -H \"Content-type: application/json\"   \\\n   -H \"x-okapi-tenant: diku\"  \\\n   -H \"x-okapi-token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkaWt1X2FkbWluIiwidXNlcl9pZCI6IjQwZDFiZDcxLWVhN2QtNTk4Ny1iZTEwLTEyOGUzODJiZDMwNyIsImNhY2hlX2tleSI6IjMyYTJhNDQ3LWE4MzQtNDE1Ni1iYmZjLTk4YTEyZWVhNzliMyIsImlhdCI6MTU1NzkyMzI2NSwidGVuYW50IjoiZGlrdSJ9.AgPDmXIOsudFB_ugWYvJCdyqq-1AQpsRWLNt9EvzCy0\" \\\n   -d @initJobExecutionsRqDto.json \\\n   https://folio-testing-okapi.dev.folio.org:443/change-manager/jobExecutions\n```\n\n##### initJobExecutionsRqDto.json\n\n```\n{\n  \"sourceType\": \"ONLINE\",\n  \"userId\": \"a0086f7e-61b6-5c2d-9e1b-b268063a44b3\"\n}\n```\n\n##### Response with JobExecution entity\n\n```\n{\n  \"parentJobExecutionId\": \"647c2dee-70a8-4ae8-aba4-81579ee17e58\",\n  \"jobExecutions\": [\n    {\n      \"id\": \"647c2dee-70a8-4ae8-aba4-81579ee17e58\",\n      \"hrId\": 88,\n      \"parentJobId\": \"647c2dee-70a8-4ae8-aba4-81579ee17e58\",\n      \"subordinationType\": \"PARENT_SINGLE\",\n      \"jobProfileInfo\": {\n        \"id\": \"e34d7b92-9b83-11eb-a8b3-0242ac130003\",\n        \"name\": \"Default - Create instance and SRS MARC Bib\",\n        \"dataType\": \"MARC_BIB\"\n      },\n      \"runBy\": {\n        \"firstName\": \"DIKU\",\n        \"lastName\": \"ADMINISTRATOR\"\n      },\n      \"progress\": {\n        \"current\": 1,\n        \"total\": 100\n      },\n      \"startedDate\": \"2021-02-24T08:30:08.709+0000\",\n      \"status\": \"NEW\",\n      \"uiStatus\": \"INITIALIZATION\",\n      \"userId\": \"a0086f7e-61b6-5c2d-9e1b-b268063a44b3\"\n    }\n  ]\n}\n```\n\n### Set JobProfile to JobExecution\n\nSend PUT request with JobProfile info to **/change-manager/jobExecutions/{jobExecutionId}/jobProfile**\n\n```\ncurl -w '\\n' -X PUT -D -   \\\n   -H \"Content-type: application/json\"   \\\n   -H \"x-okapi-tenant: diku\"  \\\n   -H \"x-okapi-token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkaWt1X2FkbWluIiwidXNlcl9pZCI6IjQwZDFiZDcxLWVhN2QtNTk4Ny1iZTEwLTEyOGUzODJiZDMwNyIsImNhY2hlX2tleSI6IjMyYTJhNDQ3LWE4MzQtNDE1Ni1iYmZjLTk4YTEyZWVhNzliMyIsImlhdCI6MTU1NzkyMzI2NSwidGVuYW50IjoiZGlrdSJ9.AgPDmXIOsudFB_ugWYvJCdyqq-1AQpsRWLNt9EvzCy0\" \\\n   -d @jobProfileInfo.json \\\n   https://folio-testing-okapi.dev.folio.org:443/change-manager/jobExecutions/647c2dee-70a8-4ae8-aba4-81579ee17e58/jobProfile\n```\n\n##### JobProfileInfo.json \n\n```\n{\n  \"id\": \"e34d7b92-9b83-11eb-a8b3-0242ac130003\",\n  \"name\": \"Default - Create instance and SRS MARC Bib\",\n  \"dataType\": \"MARC\"\n}\n```\n\nResponse body will contain jobProfileSnapshotWrapper \n\n### Post records to parsing\n\nTo initiate records parsing one should send POST request containing RawRecordsDto, which contains raw records list (\"initialRecords\" field)\nto **/change-manager/jobExecutions/{jobExecutionId}/records** \nThe list of records can contain records in different formats for example:  \"MARC_RAW\", \"MARC_JSON\", \"MARC_XML\". \\\n{jobExecutionId} - JobExecution id, which can be retrieved from response of previous request.\n```\ncurl -w '\\n' -X POST -D -   \\\n   -H \"Content-type: application/json\"   \\\n   -H \"Accept: text/plain, application/json\"   \\\n   -H \"x-okapi-tenant: diku\"  \\\n   -H \"x-okapi-token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkaWt1X2FkbWluIiwidXNlcl9pZCI6IjQwZDFiZDcxLWVhN2QtNTk4Ny1iZTEwLTEyOGUzODJiZDMwNyIsImNhY2hlX2tleSI6IjMyYTJhNDQ3LWE4MzQtNDE1Ni1iYmZjLTk4YTEyZWVhNzliMyIsImlhdCI6MTU1NzkyMzI2NSwidGVuYW50IjoiZGlrdSJ9.AgPDmXIOsudFB_ugWYvJCdyqq-1AQpsRWLNt9EvzCy0\" \\\n   -d @rawRecordsDto.json \\\n   https://folio-testing-okapi.dev.folio.org:443/change-manager/jobExecutions/647c2dee-70a8-4ae8-aba4-81579ee17e58/records\n```\n\n##### example of rawRecordsDto.json to parse marc records in raw format\n\n```\n{\n  \"id\": \"22fafcc3-f582-493d-88b0-3c538480cd83\" // for each chunk we need to have and unique uuid\n  \"recordsMetadata\": {\n    \"last\": false,\n    \"counter\": 3,\n    \"contentType\":\"MARC_RAW\",\n    \"total\": 3\n  },\n  \"initialRecords\": [ \n    {\n    \"record\": \"01240cas a2200397   4500001000700000005001700007008004100024010001700065022001400082035002600096035002200122035001100144035001900155040004400174050001500218082001100233222004200244245004300286260004700329265003800376300001500414310002200429321002500451362002300476570002900499650003300528650004500561655004200606700004500648853001800693863002300711902001600734905002100750948003700771950003400808\\u001E366832\\u001E20141106221425.0\\u001E750907c19509999enkqr p       0   a0eng d\\u001E  \\u001Fa   58020553 \\u001E  \\u001Fa0022-0469\\u001E  \\u001Fa(CStRLIN)NYCX1604275S\\u001E  \\u001Fa(NIC)notisABP6388\\u001E  \\u001Fa366832\\u001E  \\u001Fa(OCoLC)1604275\\u001E  \\u001FdCtY\\u001FdMBTI\\u001FdCtY\\u001FdMBTI\\u001FdNIC\\u001FdCStRLIN\\u001FdNIC\\u001E0 \\u001FaBR140\\u001Fb.J6\\u001E  \\u001Fa270.05\\u001E04\\u001FaThe Journal of ecclesiastical history\\u001E04\\u001FaThe Journal of ecclesiastical history.\\u001E  \\u001FaLondon,\\u001FbCambridge University Press [etc.]\\u001E  \\u001Fa32 East 57th St., New York, 10022\\u001E  \\u001Fav.\\u001Fb25 cm.\\u001E  \\u001FaQuarterly,\\u001Fb1970-\\u001E  \\u001FaSemiannual,\\u001Fb1950-69\\u001E0 \\u001Fav. 1-   Apr. 1950-\\u001E  \\u001FaEditor:   C. W. Dugmore.\\u001E 0\\u001FaChurch history\\u001FxPeriodicals.\\u001E 7\\u001FaChurch history\\u001F2fast\\u001F0(OCoLC)fst00860740\\u001E 7\\u001FaPeriodicals\\u001F2fast\\u001F0(OCoLC)fst01411641\\u001E1 \\u001FaDugmore, C. W.\\u001Fq(Clifford William),\\u001Feed.\\u001E03\\u001F81\\u001Fav.\\u001Fi(year)\\u001E40\\u001F81\\u001Fa1-49\\u001Fi1950-1998\\u001E  \\u001Fapfnd\\u001FbLintz\\u001E  \\u001Fa19890510120000.0\\u001E2 \\u001Fa20141106\\u001Fbm\\u001Fdbatch\\u001Felts\\u001Fxaddfast\\u001E  \\u001FlOLIN\\u001FaBR140\\u001Fb.J86\\u001Fh01/01/01 N\\u001E\\u001D01542ccm a2200361   \"\n    },\n    {\n    \"record\": \"01240cas a2200397   4500001000700000005001700007008004100024010001700065022001400082035002600096035002200122035001100144035001900155040004400174050001500218082001100233222004200244245004300286260004700329265003800376300001500414310002200429321002500451362002300476570002900499650003300528650004500561655004200606700004500648853001800693863002300711902001600734905002100750948003700771950003400808\\u001E366832\\u001E20141106221425.0\\u001E750907c19509999enkqr p       0   a0eng d\\u001E  \\u001Fa   58020553 \\u001E  \\u001Fa0022-0469\\u001E  \\u001Fa(CStRLIN)NYCX1604275S\\u001E  \\u001Fa(NIC)notisABP6388\\u001E  \\u001Fa366832\\u001E  \\u001Fa(OCoLC)1604275\\u001E  \\u001FdCtY\\u001FdMBTI\\u001FdCtY\\u001FdMBTI\\u001FdNIC\\u001FdCStRLIN\\u001FdNIC\\u001E0 \\u001FaBR140\\u001Fb.J6\\u001E  \\u001Fa270.05\\u001E04\\u001FaThe Journal of ecclesiastical history\\u001E04\\u001FaThe Journal of ecclesiastical history.\\u001E  \\u001FaLondon,\\u001FbCambridge University Press [etc.]\\u001E  \\u001Fa32 East 57th St., New York, 10022\\u001E  \\u001Fav.\\u001Fb25 cm.\\u001E  \\u001FaQuarterly,\\u001Fb1970-\\u001E  \\u001FaSemiannual,\\u001Fb1950-69\\u001E0 \\u001Fav. 1-   Apr. 1950-\\u001E  \\u001FaEditor:   C. W. Dugmore.\\u001E 0\\u001FaChurch history\\u001FxPeriodicals.\\u001E 7\\u001FaChurch history\\u001F2fast\\u001F0(OCoLC)fst00860740\\u001E 7\\u001FaPeriodicals\\u001F2fast\\u001F0(OCoLC)fst01411641\\u001E1 \\u001FaDugmore, C. W.\\u001Fq(Clifford William),\\u001Feed.\\u001E03\\u001F81\\u001Fav.\\u001Fi(year)\\u001E40\\u001F81\\u001Fa1-49\\u001Fi1950-1998\\u001E  \\u001Fapfnd\\u001FbLintz\\u001E  \\u001Fa19890510120000.0\\u001E2 \\u001Fa20141106\\u001Fbm\\u001Fdbatch\\u001Felts\\u001Fxaddfast\\u001E  \\u001FlOLIN\\u001FaBR140\\u001Fb.J86\\u001Fh01/01/01 N\\u001E\\u001D01542ccm a2200361   \"\n    },\n    {\n    \"record\": \"01240cas a2200397   4500001000700000005001700007008004100024010001700065022001400082035002600096035002200122035001100144035001900155040004400174050001500218082001100233222004200244245004300286260004700329265003800376300001500414310002200429321002500451362002300476570002900499650003300528650004500561655004200606700004500648853001800693863002300711902001600734905002100750948003700771950003400808\\u001E366832\\u001E20141106221425.0\\u001E750907c19509999enkqr p       0   a0eng d\\u001E  \\u001Fa   58020553 \\u001E  \\u001Fa0022-0469\\u001E  \\u001Fa(CStRLIN)NYCX1604275S\\u001E  \\u001Fa(NIC)notisABP6388\\u001E  \\u001Fa366832\\u001E  \\u001Fa(OCoLC)1604275\\u001E  \\u001FdCtY\\u001FdMBTI\\u001FdCtY\\u001FdMBTI\\u001FdNIC\\u001FdCStRLIN\\u001FdNIC\\u001E0 \\u001FaBR140\\u001Fb.J6\\u001E  \\u001Fa270.05\\u001E04\\u001FaThe Journal of ecclesiastical history\\u001E04\\u001FaThe Journal of ecclesiastical history.\\u001E  \\u001FaLondon,\\u001FbCambridge University Press [etc.]\\u001E  \\u001Fa32 East 57th St., New York, 10022\\u001E  \\u001Fav.\\u001Fb25 cm.\\u001E  \\u001FaQuarterly,\\u001Fb1970-\\u001E  \\u001FaSemiannual,\\u001Fb1950-69\\u001E0 \\u001Fav. 1-   Apr. 1950-\\u001E  \\u001FaEditor:   C. W. Dugmore.\\u001E 0\\u001FaChurch history\\u001FxPeriodicals.\\u001E 7\\u001FaChurch history\\u001F2fast\\u001F0(OCoLC)fst00860740\\u001E 7\\u001FaPeriodicals\\u001F2fast\\u001F0(OCoLC)fst01411641\\u001E1 \\u001FaDugmore, C. W.\\u001Fq(Clifford William),\\u001Feed.\\u001E03\\u001F81\\u001Fav.\\u001Fi(year)\\u001E40\\u001F81\\u001Fa1-49\\u001Fi1950-1998\\u001E  \\u001Fapfnd\\u001FbLintz\\u001E  \\u001Fa19890510120000.0\\u001E2 \\u001Fa20141106\\u001Fbm\\u001Fdbatch\\u001Felts\\u001Fxaddfast\\u001E  \\u001FlOLIN\\u001FaBR140\\u001Fb.J86\\u001Fh01/01/01 N\\u001E\\u001D01542ccm a2200361   \" \n    }    \n  ]\n}\n```\n\n##### example of rawRecordsDto.json to parse marc records in json format\n\n```\n{\n \"id\": \"22fafcc3-f582-493d-88b0-3c538480cd83\" // for each chunk we need to have and unique uuid\n  \"recordsMetadata\": {\n    \"last\": false,\n    \"counter\": 1,\n    \"total\": 1,\n    \"contentType\":\"MARC_JSON\"\n  },\n  \"initialRecords\": [\n  {\n    \"record\": \"{\\\"leader\\\": \\\"00648cam a2200193 a 4500\\\",\\r\\n    \\\"fields\\\": [\\r\\n      {\\r\\n        \\\"001\\\": \\\"FOLIOstorage\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"008\\\": \\\"960521s1972\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\se\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\0\\\\\\\\\\\\\\\\\\\\\\\\swe\\\\\\\\\\\\\\\\\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"041\\\": {\\r\\n          \\\"ind1\\\": \\\"1\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"a\\\": \\\"swe\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"096\\\": {\\r\\n          \\\"ind1\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"y\\\": \\\"Z\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"b\\\": \\\"TAp Chalmers tekniska h\\u00F6gskola. Inst. f\\u00F6r byggnadsstatik. Skrift. 1972:4\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"s\\\": \\\"g\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"100\\\": {\\r\\n          \\\"ind1\\\": \\\"1\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"a\\\": \\\"Sahlin, Sven\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"245\\\": {\\r\\n          \\\"ind1\\\": \\\"0\\\",\\r\\n          \\\"ind2\\\": \\\"0\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"a\\\": \\\"P\\u00E5lslagning\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"260\\\": {\\r\\n          \\\"ind1\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"c\\\": \\\"1972\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"300\\\": {\\r\\n          \\\"ind1\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"a\\\": \\\"19 bl.\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"440\\\": {\\r\\n          \\\"ind1\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"a\\\": \\\"Skrift, Chalmers tekniska h\\u00F6gskola, Institutionen f\\u00F6r byggnadsstatik\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"x\\\": \\\"9903909802 ;\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"v\\\": \\\"72:4\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"907\\\": {\\r\\n          \\\"ind1\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"a\\\": \\\".b11154585\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"b\\\": \\\"hbib \\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"c\\\": \\\"s\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"902\\\": {\\r\\n          \\\"ind1\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"a\\\": \\\"190206\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"998\\\": {\\r\\n          \\\"ind1\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"b\\\": \\\"0\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"c\\\": \\\"990511\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"d\\\": \\\"m\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"e\\\": \\\"b  \\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"f\\\": \\\"s\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"g\\\": \\\"0\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"909\\\": {\\r\\n          \\\"ind1\\\": \\\"0\\\",\\r\\n          \\\"ind2\\\": \\\"0\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"a\\\": \\\"m\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"c\\\": \\\"a\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"d\\\": \\\"b\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      },\\r\\n      {\\r\\n        \\\"945\\\": {\\r\\n          \\\"ind1\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"ind2\\\": \\\"\\\\\\\\\\\",\\r\\n          \\\"subfields\\\": [\\r\\n            {\\r\\n              \\\"l\\\": \\\"hbib3\\\"\\r\\n            },\\r\\n            {\\r\\n              \\\"a\\\": \\\"TAp Chalmers tekniska h\\u00F6gskola.Inst. f\\u00F6r byggnadsstatik. Skrift 72:4\\\"\\r\\n            }\\r\\n          ]\\r\\n        }\\r\\n      }\\r\\n    ]\\r\\n  }\"\n    }\n  ]\n}\n```\n\n##### example of rawRecordsDto.json to parse marc records in xml format\n\n```\n{\n \"id\": \"22fafcc3-f582-493d-88b0-3c538480cd83\" // for each chunk we need to have and unique uuid\n  \"recordsMetadata\": {\n    \"last\": false,\n    \"counter\": 2,\n    \"total\": 2,\n    \"contentType\":\"MARC_XML\"\n  },\n  \"initialRecords\": [     \n  {\n    \"record\":\t\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e \u003crecord xmlns=\\\"http:\\/\\/www.loc.gov\\/MARC21\\/slim\\\"\u003e\\r\\n    \u003cleader\u003e01731cas a2200469 a 4500\u003c\\/leader\u003e\\r\\n    \u003ccontrolfield tag=\\\"001\\\"\u003e2672432\u003c\\/controlfield\u003e\\r\\n    \u003ccontrolfield tag=\\\"005\\\"\u003e20151103060938.0\u003c\\/controlfield\u003e\\r\\n    \u003ccontrolfield tag=\\\"006\\\"\u003em        d        \u003c\\/controlfield\u003e\\r\\n    \u003ccontrolfield tag=\\\"007\\\"\u003ecf mn---------\u003c\\/controlfield\u003e\\r\\n    \u003ccontrolfield tag=\\\"008\\\"\u003e060411c19919999cautr pss     0    0eng d\u003c\\/controlfield\u003e\\r\\n    \u003cdatafield tag=\\\"010\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003e  2006263262\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"022\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"y\\\"\u003e1071-0892\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"035\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003e(OCoLC)ocm72550951\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"037\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003eConservation, Getty Conservation Institute, 4503 Glencoe Ave., Marina del Rey, CA 90292\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"040\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eTXA\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"c\\\"\u003eTXA\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003eUtOrBLW\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"042\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003elcd\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"043\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003en-us-ca\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"049\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eTXAM\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"050\\\" ind1=\\\"1\\\" ind2=\\\"4\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eCC135\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003e.C577 Electronic\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"130\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eConservation (Marina del Rey, Calif. : Online)\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"245\\\" ind1=\\\"1\\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eConservation :\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003ethe GCI newsletter.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"246\\\" ind1=\\\"3\\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eGCI newsletter\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"264\\\" ind1=\\\" \\\" ind2=\\\"1\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eMarina del Rey, Calif. :\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003eGetty Conservation Institute,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"c\\\"\u003e[1991]-\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"310\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eThree no. a year\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"336\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003etext\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003etxt\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"2\\\"\u003erdacontent\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"337\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003ecomputer\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003ec\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"2\\\"\u003erdamedia\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"338\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003ecomputer tape cassette\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003ecf\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"2\\\"\u003erdacarrier\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"362\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eVol. 6, no. 1 (fall 1991)-\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"500\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eTitle from issue cover image (publisher's site, viewed Oct. 11, 2006).\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"500\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eLatest issue consulted: Volume 21, number 2 (2006) (viewed Oct. 11, 2006).\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"500\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eElectronic resource.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"515\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eVol. 6 complete in one issue.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"530\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eAlso issued in print.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"538\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eMode of access: World Wide Web.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"610\\\" ind1=\\\"2\\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eGetty Conservation Institute\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"v\\\"\u003ePeriodicals.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"650\\\" ind1=\\\" \\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eHistoric preservation\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"v\\\"\u003ePeriodicals.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"650\\\" ind1=\\\" \\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eArt\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"x\\\"\u003eConservation and restoration\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"v\\\"\u003ePeriodicals.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"710\\\" ind1=\\\"2\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eGetty Conservation Institute.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"776\\\" ind1=\\\"1\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eConservation (Marina del Rey, Calif.)\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"x\\\"\u003e1071-0892\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"w\\\"\u003e(OCoLC)25038844\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"w\\\"\u003e(DLC)   93660871\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"948\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003ecataloged\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003eh\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"c\\\"\u003e2006\\/12\\/21\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003eo\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"e\\\"\u003ekyu\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"f\\\"\u003e9:58:29 am\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"g\\\"\u003eCO\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"994\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eC0\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003eTXA\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"999\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eMARS\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n  \u003c\\/record\u003e\"\n    },\n    {\n    \"record\": \"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e \u003crecord xmlns=\\\"http:\\/\\/www.loc.gov\\/MARC21\\/slim\\\"\u003e\\r\\n    \u003cleader\u003e03551cjm a2200577 a 4500\u003c\\/leader\u003e\\r\\n    \u003ccontrolfield tag=\\\"001\\\"\u003e1520848\u003c\\/controlfield\u003e\\r\\n    \u003ccontrolfield tag=\\\"005\\\"\u003e20151004060535.0\u003c\\/controlfield\u003e\\r\\n    \u003ccontrolfield tag=\\\"007\\\"\u003esd fsngnn|||e|\u003c\\/controlfield\u003e\\r\\n    \u003ccontrolfield tag=\\\"008\\\"\u003e941026s1991    xxumun   ei         N\\/A d\u003c\\/controlfield\u003e\\r\\n    \u003cdatafield tag=\\\"028\\\" ind1=\\\"0\\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003e15 679\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003eLaserLight\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"035\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003e(OCoLC)31357838\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"035\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"9\\\"\u003eAGX0747AM\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"040\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eFBP\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"c\\\"\u003eFBP\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003eTXA\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003eUtOrBLW\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"041\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"g\\\"\u003eger\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"g\\\"\u003eeng\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"049\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eTXAV\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"090\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eM5\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003e.H67 1991 v. 4\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"245\\\" ind1=\\\"0\\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eHot 100.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eVol. 4,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003e1788-1810.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"264\\\" ind1=\\\" \\\" ind2=\\\"1\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003e[United States] :\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003eLaserLight,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"c\\\"\u003e[1991]\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"264\\\" ind1=\\\" \\\" ind2=\\\"4\\\"\u003e\\r\\n      \u003csubfield code=\\\"c\\\"\u003e\\u21171991\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"300\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003e1 sound disc (59:06) :\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003edigital, stereo. ;\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"c\\\"\u003e4 3\\/4 in. +\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"e\\\"\u003e1 pamphlet.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"336\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eperformed music\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003eprm\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"2\\\"\u003erdacontent\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"337\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eaudio\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003es\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"2\\\"\u003erdamedia\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"338\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eaudio disc\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"b\\\"\u003esd\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"2\\\"\u003erdacarrier\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"500\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eCompact disc.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"500\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eTitle on container insert: 100 masterpieces, the top 10 of classical music, 1788-1810.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"500\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eProgram notes by Uwe Kraemer in German and English on container insert.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"500\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eSound recording.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"505\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eSymphony no. 40, 1st movement \\/ Mozart -- Moonlight sonata, 1st movement \\/ Beethoven -- Symphony no. 94, \\\"Surprise\\\", 2nd movement -- The magic flute - Overture \\/ Mozart -- Fu\\u0308r elise \\/ Beethoven -- Emperor's hymn, from String Quartet in C \\/ Haydn -- Symphony no. 5, 1st movement \\/ Beethoven -- Clarinet concerto in A, 2nd movement \\/ Mozart -- Minuet in G \\/ Beethoven -- Trumpet concerto in E flat, 3rd movement \\/ Haydn.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"511\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eSalzburg Mozarteum Orchestra, Hans Graf, conductor (1st work) ; Evelyne Dubourg, piano (2nd, 5th works) ; Hungarian State Orchestra, Janos Ferencsik, conductor (3rd work) ; Staatskapelle Dresden, Hans Vonk, conductor (4th work) ; Kodaly Quartet (6th work) ; Dresden Philharmonic, Herbert Kegel, conductor (7th work); Bela Kovacs, clarinet, Franz Liszt Chamber Orchestra, Janos Rolla, conductor (8th work) ; Budapest Strings (9th work) ; Ludwig Guttler, trumpet, New Leipzig Bach Collegium Musicum.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"650\\\" ind1=\\\" \\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eSymphonies\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"v\\\"\u003eExcerpts.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"650\\\" ind1=\\\" \\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eConcertos\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"v\\\"\u003eExcerpts.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"650\\\" ind1=\\\" \\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eInstrumental music.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"650\\\" ind1=\\\" \\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003ePiano music.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"650\\\" ind1=\\\" \\\" ind2=\\\"0\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eString quartets\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"v\\\"\u003eExcerpts.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eMozart, Wolfgang Amadeus,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1756-1791.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eSymphonies,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eK. 550,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eG minor.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003eMolto allegro.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eBeethoven, Ludwig van,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1770-1827.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eSonatas,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"m\\\"\u003epiano,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eno. 14, op. 27, no. 2,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eC\\u266F minor.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003eAdagio sostenuto.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eHaydn, Joseph,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1732-1809.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eSymphonies,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eH. I, 94,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eG major.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003eAndante.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eMozart, Wolfgang Amadeus,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1756-1791.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eZauberflo\\u0308te.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003eOuverture.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eBeethoven, Ludwig van,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1770-1827.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eBagatelles,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"m\\\"\u003epiano,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eWoO 59,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eA minor.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eHaydn, Joseph,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1732-1809.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eQuartets,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"m\\\"\u003eviolins (2), viola, cello,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eH. III, 77,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eC major.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003ePoco adagio cantabile.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eBeethoven, Ludwig van,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1770-1827.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eSymphonies,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eno. 5, op. 67,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eC minor.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003eAllegro con brio.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eMozart, Wolfgang Amadeus,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1756-1791.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eConcertos,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"m\\\"\u003eclarinet, orchestra,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eK. 622,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eA major.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003eAdagio.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eBeethoven, Ludwig van,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1770-1827.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eMinuets,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"m\\\"\u003eorchestra,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eWoO 10, no. 2,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eG major.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\"2\\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eHaydn, Joseph,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"d\\\"\u003e1732-1809.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"t\\\"\u003eConcertos,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"m\\\"\u003etrumpet, orchestra,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"n\\\"\u003eH. VIIe, 1,\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"r\\\"\u003eE\\u266D major.\u003c\\/subfield\u003e\\r\\n      \u003csubfield code=\\\"p\\\"\u003eAllegro.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"700\\\" ind1=\\\"1\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eKraemer, Uwe.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"740\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eHot one hundred.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"740\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003e100 masterpieces, the top 10 of classical music, 1788-1810.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"740\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003e100 masterpieces, the top ten of classical music, 1788-1810.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"740\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eOne hundred masterpieces, the top 10 of classical music, 1788-1810.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"740\\\" ind1=\\\"0\\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eOne hundred masterpieces, the top ten of classical music, 1788-1810.\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n    \u003cdatafield tag=\\\"999\\\" ind1=\\\" \\\" ind2=\\\" \\\"\u003e\\r\\n      \u003csubfield code=\\\"a\\\"\u003eMARS\u003c\\/subfield\u003e\\r\\n    \u003c\\/datafield\u003e\\r\\n  \u003c\\/record\u003e\"\t\n    }\n  ]\n}\n```\n\n##### Response\nIf records parsing was successfully initiated, there won't be any content in the response (HTTP status 204).\n\nJobExecution state will be updated\n```\n{\n  \"id\": \"647c2dee-70a8-4ae8-aba4-81579ee17e58\",\n  \"hrId\": 88,\n  \"parentJobId\": \"647c2dee-70a8-4ae8-aba4-81579ee17e58\",\n  \"subordinationType\": \"PARENT_SINGLE\",\n  \"jobProfileInfo\": {\n    \"id\": \"e34d7b92-9b83-11eb-a8b3-0242ac130003\",\n    \"name\": \"Default - Create instance and SRS MARC Bib\",\n    \"dataType\": \"MARC_BIB\"\n  },\n  \"runBy\" : {\n    \"firstName\" : \"DIKU\",\n    \"lastName\" : \"ADMINISTRATOR\"\n  },\n  \"progress\" : {\n    \"current\" : 1000,\n    \"total\" : 1000\n  },\n  \"startedDate\" : \"2019-05-15T14:36:00.776+0000\",\n  \"status\" : \"PARSING_IN_PROGRESS\",\n  \"uiStatus\" : \"PREPARING_FOR_PREVIEW\",\n  \"userId\" : \"a0086f7e-61b6-5c2d-9e1b-b268063a44b3\"\n}\n```\n\n### Finishing raw records parsing\nTo indicate the end of raw records transferring for parsing one should send POST request containing last RawRecordsDto\nto **/change-manager/jobExecutions/{jobExecutionId}/records**. \\\n{jobExecutionId} - JobExecution id, which can be retrieved from response of JobExecution creation request.\nThe last RawRecordsDto should contain empty records list (\"initialRecords\" field), appropriate record format value \nin \"contentType\" field (for example MARC_RAW) and field \"last\" = true.\n\n```\ncurl -w '\\n' -X POST -D -   \\\n   -H \"Content-type: application/json\"   \\\n   -H \"Accept: text/plain, application/json\"   \\\n   -H \"x-okapi-tenant: diku\"  \\\n   -H \"x-okapi-token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkaWt1X2FkbWluIiwidXNlcl9pZCI6IjQwZDFiZDcxLWVhN2QtNTk4Ny1iZTEwLTEyOGUzODJiZDMwNyIsImNhY2hlX2tleSI6IjMyYTJhNDQ3LWE4MzQtNDE1Ni1iYmZjLTk4YTEyZWVhNzliMyIsImlhdCI6MTU1NzkyMzI2NSwidGVuYW50IjoiZGlrdSJ9.AgPDmXIOsudFB_ugWYvJCdyqq-1AQpsRWLNt9EvzCy0\" \\\n   -d @lastRawRecordsDto.json \\\n   https://folio-testing-okapi.dev.folio.org:443/change-manager/jobExecutions/647c2dee-70a8-4ae8-aba4-81579ee17e58/records\n```\n\n##### lastRawRecordsDto.json\n\n```\n{\n \"id\": \"22fafcc3-f582-493d-88b0-3c538480cd83\" // for each chunk we need to have and unique uuid\n  \"recordsMetadata\": {\n    \"last\": true,\n    \"counter\": 3,\n    \"total\": 3,\n    \"contentType\":\"MARC_RAW\"\n  },\n  \"initialRecords\": []\n}\n```\n\n##### Response\nSuccessful response won't have any content (HTTP status 204).\n\nJobExecution state will be changed\n```\n  \"id\": \"647c2dee-70a8-4ae8-aba4-81579ee17e58\",\n  \"hrId\": 88,\n  \"parentJobId\": \"647c2dee-70a8-4ae8-aba4-81579ee17e58\",\n  \"subordinationType\": \"PARENT_SINGLE\",\n  \"jobProfileInfo\": {\n    \"id\": \"e34d7b92-9b83-11eb-a8b3-0242ac130003\",\n    \"name\": \"Default - Create instance and SRS MARC Bib\",\n    \"dataType\": \"MARC_BIB\"\n  }, \n  \"runBy\" : {\n    \"firstName\" : \"DIKU\",\n    \"lastName\" : \"ADMINISTRATOR\"\n  },\n  \"progress\" : {\n    \"current\" : 1000,\n    \"total\" : 1000\n  },\n  \"startedDate\" : \"2019-05-15T14:36:00.776+0000\",\n  \"completedDate\" : \"2019-05-15T14:56:23.387+0000\",\n  \"status\" : \"COMMITTED\",\n  \"uiStatus\" : \"RUNNING_COMPLETE\",\n  \"userId\" : \"a0086f7e-61b6-5c2d-9e1b-b268063a44b3\"\n}\n```\n\n### Delete records associated with JobExecution\n\nTo delete JobExecution and all associated records send a delete request on /change-manager/jobExecutions/{jobExecutionId}/records.\n\n```\ncurl -w '\\n' -X DELETE -D -   \\\n   -H \"Content-type: application/json\"   \\\n   -H \"Accept: */*\"   \\\n   -H \"x-okapi-tenant: diku\"  \\\n   -H \"x-okapi-token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkaWt1X2FkbWluIiwidXNlcl9pZCI6IjQwZDFiZDcxLWVhN2QtNTk4Ny1iZTEwLTEyOGUzODJiZDMwNyIsImNhY2hlX2tleSI6IjMyYTJhNDQ3LWE4MzQtNDE1Ni1iYmZjLTk4YTEyZWVhNzliMyIsImlhdCI6MTU1NzkyMzI2NSwidGVuYW50IjoiZGlrdSJ9.AgPDmXIOsudFB_ugWYvJCdyqq-1AQpsRWLNt9EvzCy0\" \\\n   https://folio-testing-okapi.dev.folio.org:443/change-manager/jobExecutions/647c2dee-70a8-4ae8-aba4-81579ee17e58/records\n```\n\nSuccessful response contains no content (HTTP status 204).\n\n## MARC-to-Instance mapping workflow\n### When the Data import Action = *Create*:\n#### 1. HRID-001 field logic:\n* Always removes the 001 from the incoming MARC record (Note that there may be field mapping to move the existing 001 to a different field, e.g. move from 001 to 035)\n* Inventory will assign next FOLIO HRID based on the Instance sequential number generator in Inventory and the starting number in Settings\n* Inventory will assign the Instance prefix based on the optional prefix defined in Settings\n* Once the FOLIO HRID is assigned, Inventory will return the HRID to SRS\n* SRS puts the HRID into the 001 field of the SRS record\n* Map that number to the HRID of the corresponding Instance record\n\n#### 2. 999-field logic:\n* After instance was created, to the record will be added 2 values:\n  1. To the \"*999ff$s*\" field - will be added matchedId.\n  2. To the \"*999ff$i*\" field - will be added instanceId.\n#### NOTE - when Data Import started using Kafka as a transport (R1 2021 Iris release) the deduplication of events logic was based on assigning same 999ff$s and 999ff$i UUIDs, the approach for deduplication changed (R1 2022 Lotus release), however records imported meanwhile could still have the same 999ff$s and 999ff$i UUIDs\n* MARC Bibs: same 999ff$s and 999ff$i UUIDs for records imported on Iris, Juniper, Kiwi; different UUIDs on pre-Iris HF3 and after Lotus\n* MARC Holdings: same 999ff$s and 999ff$i UUIDs on Kiwi; different UUIDs on Lotus and after\n* MARC Authorities: n/a (only SRS records exist in Kiwi; by the time Inventory Authority records exist in Lotus, it will have been changed)\n\n### When the Data import action = *Modify* or *Update*:\n### HRID-001 field logic:\n* If the incoming record's 001 matches the 001 in the existing SRS MARC record, then do not make any changes to the 001 or 003 fields of the incoming record\n* If the incoming record's 001 does not match the existing SRS MARC record, then update the 001, 003, and possibly 035 to match the previous version of the record in SRS (that is, move the 001 data to an 035, prefixed by 003 data in parentheses, and make sure the Instance HRID is in the 001 field)\n\n### When overlay (both overlays - via Instance = FOLIO or Instance = MARC):\nThe existing OCLC 001/003 are moved down (merged) to an 035 field, and the Instance HRID being placed in the 001 field.\n\n### When job profile contains any ActionProfile with `remove9Subfields` set to true\nRemove $9 subfield from all 'controllable' fields (Linking rules are queried to get list of 'controllable' tags)\n\n## Delete job executions with all related data\nUI allows to delete multiple job executions from Landing page and View All page.\nData import marks jobs as deleted after user hits the Delete button. Queries to get/update job executions filter out records, marked as deleted.\nThe new scheduled job has been introduced to make hard deletes of these records.\nBy default it triggers each 24 hours and finds records marked as deleted completed not less than 2 days ago.\n\nThese params are configurable:\n1. periodic.job.execution.permanent.delete.interval.ms - interval in milliseconds to trigger job for hard deletion.  \n   (By default it equals to 86400000 that is the same as 24 hours).  \n   Example of applying this property in JAVA_OPTS: ``` -Dperiodic.job.execution.permanent.delete.interval.ms=86400000```\n2. job.execution.difference.number.of.days - number of days from job execution completed date to consider that job execution eligible for deletion.  \n   (By default it equals to 2 days).  \n   Example of applying this property in JAVA_OPTS: ``` -Djob.execution.difference.number.of.days=2```\n\nThis scheduled job deletes data from tables:\n1. job_execution\n2. job_execution_progress\n3. job_execution_source_chunks\n4. journal_records\n5. job_monitoring\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolio-org%2Fmod-source-record-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffolio-org%2Fmod-source-record-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolio-org%2Fmod-source-record-manager/lists"}