WITH event, 'kc-neo-cdc-sink-released-ct' as by WITH event.payload.LSR_ID AS LSR_ID, event.payload.LSR_ISRC AS LSR_ISRC, event.payload.LSR_NAME AS LSR_NAME, event.payload.LSR_VERSION AS LSR_VERSION, date(event.payload.RELEASE_DATE) AS RELEASE_DATE, apoc.convert.fromJsonList(event.payload.TRACK_TYPES) AS TRACK_TYPES, { createdAt: datetime(), createdBy: by } AS createdData, { lastModifiedAt: datetime(), lastModifiedBy: by } AS updatedData, { deletedAt: datetime(), deletedBy: by } AS deletedData, by MATCH (lsr:LabelSoundRecording {id: LSR_ID}) MERGE (gsr:GlobalSoundRecording {isrc: toUpper(LSR_ISRC)}) ON CREATE SET gsr.id = randomUUID(), gsr.name = CASE WHEN COALESCE(LSR_VERSION, '') = '' THEN LSR_NAME ELSE LSR_NAME + ' - ' + LSR_VERSION END, gsr.types = TRACK_TYPES, gsr.releaseDate = RELEASE_DATE, gsr += createdData, gsr += updatedData ON MATCH SET gsr.name = CASE WHEN COALESCE(LSR_VERSION, '') = '' THEN LSR_NAME ELSE LSR_NAME + ' - ' + LSR_VERSION END, gsr.types = apoc.coll.sort(apoc.coll.union(gsr.types, TRACK_TYPES)), gsr += updatedData MERGE (gsr)-[r:REPRESENTS]->(lsr) ON CREATE SET r += createdData, r += updatedData ON MATCH SET r += updatedData WITH lsr, gsr, by MATCH (pc:PublishingComposition)-[h:HAS_SOUND_RECORDING]->(lsr) WITH DISTINCT pc, h, lsr, gsr, by CREATE (pc)-[has:HAS_SOUND_RECORDING]->(gsr) SET has.createdAt = datetime(), has.lastModifiedAt = datetime(), has.lastModifiedBy = by, has.createdBy = by CREATE (pc)-[dhas:DELETED_HAS_SOUND_RECORDING]->(lsr) SET dhas.deletedAt = datetime(), dhas.deletedBy = by DELETE h