<?xml version="1.0" encoding="UTF-8"?>
<changelog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://www.liquigraph.org/schema/1.0/liquigraph.xsd">
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:1" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> GlobalParticipant
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)<-[gpToLp]-(gp:GlobalParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, lp: lp, gpToLp: gpToLp, gp: gp}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lp AS lp, row.gpToLp AS gpToLp, row.gp AS gp
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(gp, type(gpToLp), null, gpToLp, nlp)
                    YIELD rel AS rel
                    // Delete LabelParticipant -> GlobalParticipant
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)<-[gpToLp]-(gp:GlobalParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    DELETE gpToLp
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:2" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // Track LabelParticipant -> ArtistInfo
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, lp: lp, cf: cf, ai: ai}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lp AS lp, row.cf AS cf, row.ai AS ai
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, ai)
                    YIELD rel AS rel
                    // Delete old Product LP -> ArtistInfo
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    DELETE cf
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:3" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> Track
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, t: t, lpToT: lpToT, lp: lp}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.t AS t, row.lpToT AS lpToT, row.lp AS lp
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: pr.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(lpToT), {participated_as: lpToT.participated_as}, lpToT, t)
                    YIELD rel AS rel1
                    RETURN true
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:4" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> TrackArtist
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    MATCH (lp)-[cf:CREATED_FROM]->(ta:TrackArtist)<-[:HAS_SOURCE_ARTIST]-(t)
                    WITH COLLECT({pr: pr, lp: lp, cf: cf, ta: ta}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lp AS lp, row.cf AS cf, row.ta AS ta
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, ta)
                    YIELD rel AS rel
                    RETURN true
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:5" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> TrackWriter
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    MATCH (lp)-[cf:CREATED_FROM]->(tw:TrackWriter)<-[:HAS_SOURCE_ARTIST]-(t)
                    WITH COLLECT({pr: pr, lp: lp, cf: cf, tw: tw}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lp AS lp, row.cf AS cf, row.tw AS tw
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, tw)
                    YIELD rel AS rel
                    // Delete old LP -> Track/TrackArtist/TrackWriter
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    OPTIONAL MATCH (lp)-[lpToTa]->(ta:TrackArtist)<-[:HAS_SOURCE_ARTIST]-(t)
                    OPTIONAL MATCH (lp)-[lpToTw]->(tw:TrackWriter)<-[:HAS_SOURCE_ARTIST]-(t)
                    DELETE lpToT, lpToTa, lpToTw
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:6" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // Delete old LP -> Track/TrackArtist/TrackWriter
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    OPTIONAL MATCH (lp)-[lpToTa]->(ta:TrackArtist)<-[:HAS_SOURCE_ARTIST]-(t)
                    OPTIONAL MATCH (lp)-[lpToTw]->(tw:TrackWriter)<-[:HAS_SOURCE_ARTIST]-(t)
                    DELETE lpToT, lpToTa, lpToTw
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:7" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> GlobalParticipant
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(p:Product)<-[lpToP]-(lp:LabelParticipant)<-[gpToLp]-(gp:GlobalParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, lp: lp, gpToLp: gpToLp, gp: gp}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lp AS lp, row.gpToLp AS gpToLp, row.gp AS gp
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(gp, type(gpToLp), null, gpToLp, nlp)
                    YIELD rel AS rel
                    // Delete LabelParticipant -> GlobalParticipant
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(p:Product)<-[lpToP]-(lp:LabelParticipant)<-[gpToLp]-(gp:GlobalParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    DELETE gpToLp
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:8" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> Product
                    match (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(p:Product)<-[lpToP]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, p: p, lpToP: lpToP, lp: lp}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.p AS p, row.lpToP AS lpToP, row.lp AS lp
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(lpToP), {participated_as: lpToP.participated_as}, lpToP, p)
                    YIELD rel AS rel
                    RETURN true
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:9" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> ArtistInfo
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(p:Product)<-[lpToP]-(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, lp: lp, cf: cf, ai: ai}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lp AS lp, row.cf AS cf, row.ai AS ai
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, ai)
                    YIELD rel AS rel
                    // Delete old Product LP -> ArtistInfo
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(p:Product)<-[lpToP]-(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    DELETE cf
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:10" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> ReleaseArtist
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(p:Product)<-[lpToP]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    MATCH (lp)-[lpToRa]-(ra:ReleaseArtist {productId: p.id})
                    WITH COLLECT({pr: pr, lp: lp, lpToRa: lpToRa, ra: ra}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lp AS lp, row.lpToRa AS lpToRa, row.ra AS ra
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(lpToRa), null, lpToRa, ra)
                    YIELD rel AS rel
                    // Delete old LP -> Product/ReleaseArtist
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(p:Product)<-[lpToP]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    OPTIONAL MATCH (lp)-[lpToRa]-(ra:ReleaseArtist {productId: p.id})
                    DELETE lpToP, lpToRa
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:11" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> ArtistInfo
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:CREATED_FOR_PARTICIPANT]->(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, lp: lp, cf: cf, ai: ai}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lp AS lp, row.cf AS cf, row.ai AS ai
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, ai)
                    YIELD rel AS rel
                    // Delete old LP -> ArtistInfo
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:CREATED_FOR_PARTICIPANT]->(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    DELETE cf
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:12" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LabelParticipant -> Project
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[lpToP]->(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, lpToP: lpToP, lp: lp}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lpToP AS lpToP, row.lp AS lp
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(pr, type(lpToP), null, lpToP, nlp)
                    YIELD rel AS rel
                    // Delete old LP -> Project
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[lpToP]->(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    DELETE lpToP
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:13" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LP -> LabelSoundRecordingParticipation
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lsrToT]->(lsr:LabelSoundRecording)<-[:ON_LABEL_SOUND_RECORDING]-(lsrp:LabelSoundRecordingParticipation)<-[hlsrp:HAS_LABEL_SOUND_RECORDING_PARTICIPATION]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    WITH COLLECT({pr: pr, lsrp: lsrp, hlsrp: hlsrp, lp: lp}) AS rows
                    UNWIND range(0, size(rows) - 1) AS rowNumber
                    WITH rowNumber, size(rows) AS totalRows, rows[rowNumber] AS row
                    WITH *, row.pr AS pr, row.lsrp AS lsrp, row.hlsrp AS hlsrp, row.lp AS lp
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    MERGE (i:IncrementId {nodeName: 'LabelParticipant'})
                        ON CREATE SET i.id = 1
                        ON MATCH SET i.id = i.id + 1
                    SET nlp.id = COALESCE(nlp.id, i.id - totalRows + rowNumber + 1)
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(hlsrp), null, hlsrp, lsrp)
                    YIELD rel AS rel
                    // delete old LP -> LabelSoundRecordingParticipation
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lsrToT]->(lsr:LabelSoundRecording)<-[:ON_LABEL_SOUND_RECORDING]-(lsrp:LabelSoundRecordingParticipation)<-[hlsrp:HAS_LABEL_SOUND_RECORDING_PARTICIPATION]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    DELETE hlsrp
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:14" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [35374]
                CALL apoc.cypher.doIt(
                "
                    // LSR -> LabelSoundRecordingParticipation
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lsrToT]-(lsr:LabelSoundRecording)<-[olsr:ON_LABEL_SOUND_RECORDING]-(lsrp:LabelSoundRecordingParticipation)
                    WHERE lsr.subaccountId <> pr.subaccountId
                    MERGE (vhlp:LabelSoundRecording:Orchard {isrc: lsr.isrc, vendorId: pr.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            vhlp.id = apoc.create.uuid(),
                            vhlp.createdAt = datetime(),
                            vhlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                            vhlp.lastModifiedAt = datetime(),
                            vhlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                        SET vhlp += apoc.map.removeKeys(lsr, ['id', 'isrc', 'vendorId', 'subaccountId', 'createdAt'])
                        SET
                            vhlp.lastModifiedAt = datetime(),
                            vhlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                    WITH *
                    CALL apoc.merge.relationship(lsrp, type(olsr), {}, olsr, vhlp)
                    YIELD rel
                    MATCH (v:Vendor {id: $vendorId})<-[:BELONGS_TO]-(pr:Project {id: $projectId})-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lsrToT]-(lsr:LabelSoundRecording)<-[olsr:ON_LABEL_SOUND_RECORDING]-(lsrp:LabelSoundRecordingParticipation)
                    WHERE lsr.subaccountId <> pr.subaccountId
                    DELETE olsr
                ",
                {vendorId: pr.vendorId, projectId: pr.id})
                YIELD value
                RETURN true
            ]]>
        </query>
    </changeset>
    <changeset id="INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374:15" author="nlichtenstein" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (lp:LabelParticipant)
                WHERE lp.vendorId in [35374] AND lp.subaccountId <> 0
                MATCH (v:Vendor)
                WHERE v.id = lp.vendorId
                MATCH (sa:Subaccount)
                WHERE sa.id = lp.subaccountId
                MERGE (v)-[vhlp:HAS_LABEL_PARTICIPANT]->(lp)
                    ON CREATE SET
                        vhlp.createdAt = datetime(),
                        vhlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                        vhlp.lastModifiedAt = datetime(),
                        vhlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                MERGE (sa)-[sahlp:HAS_LABEL_PARTICIPANT]->(lp)
                    ON CREATE SET
                        sahlp.createdAt = datetime(),
                        sahlp.createdBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374',
                        sahlp.lastModifiedAt = datetime(),
                        sahlp.lastModifiedBy = 'database/INT-1658-neo4j-link-artist-profiles-after-d3-conversion-for-label_id=35374'
                RETURN true
            ]]>
        </query>
    </changeset>
</changelog>
