TLR - data migration

Planned changes in Circulation request DB schema

Current DB record structure (segments to be removed are in orange)Proposed DB record structure (segments to be added are in green)

{

  "id": "9c8583f1-8631-4194-a477-572d342cdd4d",
  "item": {
    "title": "A semantic web primer",
    "barcode": "10101",
    "identifiers": [
      {
        "value": "0262012103",
        "identifierTypeId": "8261054f-be78-422d-bd51-4ed9f33c3422"
      },
      {
        "value": "9780262012102",
        "identifierTypeId": "8261054f-be78-422d-bd51-4ed9f33c3422"
      },
      {
        "value": "2003065165",
        "identifierTypeId": "c858e4f2-2b6b-4385-842b-60732ee14abb"
      }
    ]
  },
  "itemId": "7212ba6a-8dcf-45a1-be9a-ffaa847c4423",
  "status": "Open - Not yet filled",
  "metadata": {
    "createdDate": "2021-09-09T13:14:43.756",
    "updatedDate": "2021-09-09T13:14:43.756+00:00",
    "createdByUserId": "c2d3902a-3454-50ea-998f-42897e32ac5f",
    "updatedByUserId": "c2d3902a-3454-50ea-998f-42897e32ac5f"
  },
  "position": 1,
  "requester": {
    "barcode": "10001",
    "lastName": "Kurash",
    "firstName": "Alexander"
  },
  "requestDate": "2021-09-09T13:14:41.000+00:00",
  "requestType": "Hold",
  "requesterId": "27bc1f87-8c08-437a-be09-1df885262497",
  "fulfilmentPreference": "Hold Shelf",
  "pickupServicePointId": "3a40852d-49fd-4df2-a1f9-6e2641a6e91f"
}

{
  "id": "9c8583f1-8631-4194-a477-572d342cdd4d",
  "requestLevel": "Item",
  "instanceId": "5bf370e0-8cca-4d9c-82e4-5170ab2a0a39",
  "instance": {
    "title": "A semantic web primer",
    "identifiers": [
      {
        "value": "0262012103",
        "identifierTypeId": "8261054f-be78-422d-bd51-4ed9f33c3422"
      },
      {
        "value": "9780262012102",
        "identifierTypeId": "8261054f-be78-422d-bd51-4ed9f33c3422"
      },
      {
        "value": "2003065165",
        "identifierTypeId": "c858e4f2-2b6b-4385-842b-60732ee14abb"
      }
    ]
  },
  "holdingsRecordId": "dc8ff78d-6bf0-406a-95e2-be3782357535",
  "itemId": "7212ba6a-8dcf-45a1-be9a-ffaa847c4423",
  "item": {
    "barcode": "10101"
  },
  "status": "Open - Not yet filled",
  "metadata": {
    "createdDate": "2021-09-09T13:14:43.756",
    "updatedDate": "2021-09-09T13:14:43.756+00:00",
    "createdByUserId": "c2d3902a-3454-50ea-998f-42897e32ac5f",
    "updatedByUserId": "c2d3902a-3454-50ea-998f-42897e32ac5f"
  },
  "position": 1,
  "requester": {
    "barcode": "10001",
    "lastName": "Kurash",
    "firstName": "Alexander"
  },
  "requestDate": "2021-09-09T13:14:41.000+00:00",
  "requestType": "Hold",
  "requesterId": "27bc1f87-8c08-437a-be09-1df885262497",
  "fulfilmentPreference": "Hold Shelf",
  "pickupServicePointId": "3a40852d-49fd-4df2-a1f9-6e2641a6e91f"
}

Planned API changes

API endpoint: /circulation/requests

Note that item field has some additional instance-related values that will also be moved to the instance field.

Current JSON structure (segments to be removed are in orange)Proposed JSON structure (segments to be added are in green)


{
  "id": "d0f032db-9579-443e-a2ac-6add937f4aa2",
  "requestType": "Hold",
  "requestDate": "2021-09-06T15:37:55.000+00:00",
  "requesterId": "bec20636-fb68-41fd-84ea-2cf910673599",
  "itemId": "100d10bf-2f06-4aa0-be15-0b95b2d9f9e3",
  "status": "Open - Not yet filled",
  "item": {
    "title": "A semantic web primer",
    "barcode": "90000",
    "identifiers": [
      {
        "value": "0262012103",
        "identifierTypeId": "8261054f-be78-422d-bd51-4ed9f33c3422"
      },
      {
        "value": "9780262012102",
        "identifierTypeId": "8261054f-be78-422d-bd51-4ed9f33c3422"
      },
      {
        "value": "2003065165",
        "identifierTypeId": "c858e4f2-2b6b-4385-842b-60732ee14abb"
      }
    ],
    "holdingsRecordId": "e3ff6133-b9a2-4d4c-a1c9-dc1867d4df19",
    "instanceId": "5bf370e0-8cca-4d9c-82e4-5170ab2a0a39",
    "location": {
      "name": "Annex",
      "libraryName": "Datalogisk Institut",
      "code": "KU/CC/DI/A"
    },
    "contributorNames": [
      {
        "name": "Antoniou, Grigoris"
      },
      {
        "name": "Van Harmelen, Frank"
      }
    ],
    "enumeration": "",
    "status": "Checked out",
    "callNumber": "TK5105.88815 . A58 2004 FT MEADE",
    "callNumberComponents": {
      "callNumber": "TK5105.88815 . A58 2004 FT MEADE"
    }
  },
  "requester": {
    "lastName": "morty",
    "firstName": "panic",
    "barcode": "456",
    "patronGroupId": "3684a786-6671-4268-8ed0-9db82ebca60b"
  },
  "fulfilmentPreference": "Hold Shelf",
  "pickupServicePointId": "c4c90014-c8c9-4ade-8f24-b5e313319f4b",
  "metadata": {
    "createdDate": "2021-09-06T15:37:56.188+00:00",
    "createdByUserId": "226dfeeb-0264-57fc-afcd-d5df2d705dd5",
    "updatedDate": "2021-09-06T15:37:56.188+00:00",
    "updatedByUserId": "226dfeeb-0264-57fc-afcd-d5df2d705dd5"
  },
  "position": 1,
  "loan": {
    "dueDate": "2021-09-06T16:36:56.029Z"
  },
  "pickupServicePoint": {
    "name": "Circ Desk 2",
    "code": "cd2",
    "discoveryDisplayName": "Circulation Desk -- Back Entrance",
    "description": null,
    "shelvingLagTime": null,
    "pickupLocation": true
  }
}


{
  "id": "d0f032db-9579-443e-a2ac-6add937f4aa2",
  "requestLevel": "Item",
  "requestType": "Hold",
  "requestDate": "2021-09-06T15:37:55.000+00:00",
  "requesterId": "bec20636-fb68-41fd-84ea-2cf910673599",
  "status": "Open - Not yet filled",
  "instanceId": "5bf370e0-8cca-4d9c-82e4-5170ab2a0a39",
  "instance": {
    "title": "A semantic web primer",
    "identifiers": [
      {
        "value": "0262012103",
        "identifierTypeId": "8261054f-be78-422d-bd51-4ed9f33c3422"
      },
      {
        "value": "9780262012102",
        "identifierTypeId": "8261054f-be78-422d-bd51-4ed9f33c3422"
      },
      {
        "value": "2003065165",
        "identifierTypeId": "c858e4f2-2b6b-4385-842b-60732ee14abb"
      }
    ],
    "contributorNames": [
      {
        "name": "Antoniou, Grigoris"
      },
      {
        "name": "Van Harmelen, Frank"
      }
    ],

    "publication":  [ 
      {
        "publisher": "Shaker Verlag",

        "place": "Aachen",

        "dateOfPublication": "2017",

        "role": null
      } 
     ],

     "editions":  [ 
        "First edition", "Revised edition, 2005" 
     ]

  },
  "holdingsRecordId": "dc8ff78d-6bf0-406a-95e2-be3782357535",
  "itemId": "100d10bf-2f06-4aa0-be15-0b95b2d9f9e3",
  "item": {
    "barcode": "90000",
    "holdingsRecordId": "e3ff6133-b9a2-4d4c-a1c9-dc1867d4df19",
    "location": {
      "name": "Annex",
      "libraryName": "Datalogisk Institut",
      "code": "KU/CC/DI/A"
    },
    "enumeration": "",
    "status": "Checked out",
    "callNumber": "TK5105.88815 . A58 2004 FT MEADE",
    "callNumberComponents": {
      "callNumber": "TK5105.88815 . A58 2004 FT MEADE"
    }
  },
  "requester": {
    "lastName": "morty",
    "firstName": "panic",
    "barcode": "456",
    "patronGroupId": "3684a786-6671-4268-8ed0-9db82ebca60b"
  },
  "fulfilmentPreference": "Hold Shelf",
  "pickupServicePointId": "c4c90014-c8c9-4ade-8f24-b5e313319f4b",
  "metadata": {
    "createdDate": "2021-09-06T15:37:56.188+00:00",
    "createdByUserId": "226dfeeb-0264-57fc-afcd-d5df2d705dd5",
    "updatedDate": "2021-09-06T15:37:56.188+00:00",
    "updatedByUserId": "226dfeeb-0264-57fc-afcd-d5df2d705dd5"
  },
  "position": 1,
  "loan": {
    "dueDate": "2021-09-06T16:36:56.029Z"
  },
  "pickupServicePoint": {
    "name": "Circ Desk 2",
    "code": "cd2",
    "discoveryDisplayName": "Circulation Desk -- Back Entrance",
    "description": null,
    "shelvingLagTime": null,
    "pickupLocation": true
  }
}


Proposed JSON structure for request from UI side

{
    "id": "df45dc97-32c9-458f-9b32-2c1ea8e73159",
    "requestLevel": "Item",
    "requestType": "Hold",
    "fulfilmentPreference": "Hold Shelf",
    "item": {
        "barcode": "90000"
    },
    "itemId": "100d10bf-2f06-4aa0-be15-0b95b2d9f9e3",
    "requester": {
        "barcode": "11111"
    },
    "requestDate": "2021-10-19T12:54:47Z",
    "requesterId": "503ea8a5-fdd0-4c7a-b38d-9bdf2368f869",
    "pickupServicePointId": "3a40852d-49fd-4df2-a1f9-6e2641a6e91f",
    "instanceId": "5bf370e0-8cca-4d9c-82e4-5170ab2a0a39"
}