<?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="KDH-156_moved_projects_p1:1" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> GlobalParticipant
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(:Track)<-[:PARTICIPATED_IN]-(lp:LabelParticipant)<-[gpToLp:REPRESENTS]-(gp:GlobalParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, gpToLp, gp
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:1'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:1'
                    WITH *
                    CALL apoc.merge.relationship(gp, type(gpToLp), null, gpToLp, nlp)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:3" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // Track LabelParticipant -> ArtistInfo
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lpToT]-(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, cf, ai
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:3'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:3'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, ai)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:4" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                // Delete old Track LP -> ArtistInfo
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(:Track)<-[:PARTICIPATED_IN]-(lp:LabelParticipant)-[cf:CREATED_FROM]->(:ArtistInfo)
                WHERE lp.subaccountId <> pr.subaccountId
                DELETE cf;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:5" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> Track
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)<-[lpToT:PARTICIPATED_IN]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, lpToT, t
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: pr.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:5'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:5'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(lpToT), {participated_as: lpToT.participated_as}, lpToT, t)
                    YIELD rel AS rel1
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:6" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> TrackArtist
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)<-[:PARTICIPATED_IN]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    MATCH (lp)-[cf:CREATED_FROM]->(ta:TrackArtist)<-[:HAS_SOURCE_ARTIST]-(t)
                    RETURN pr, lp, cf, ta
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:6'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:6'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, ta)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:7" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> TrackWriter
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)<-[:PARTICIPATED_IN]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    MATCH (lp)-[cf:CREATED_FROM]->(tw:TrackWriter)<-[:HAS_SOURCE_ARTIST]-(t)
                    RETURN pr, lp, cf, tw
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:7'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:7'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, tw)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:8" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                // Delete old LP -> Track/TrackArtist/TrackWriter
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)<-[lpToT:PARTICIPATED_IN]-(lp:LabelParticipant)
                WHERE lp.subaccountId <> pr.subaccountId
                OPTIONAL MATCH (lp)-[lpToTa:CREATED_FROM]->(:TrackArtist)<-[:HAS_SOURCE_ARTIST]-(t)
                OPTIONAL MATCH (lp)-[lpToTw:CREATED_FROM]->(:TrackWriter)<-[:HAS_SOURCE_ARTIST]-(t)
                DELETE lpToT, lpToTa, lpToTw;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:9" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> GlobalParticipant
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)<-[:PARTICIPATED_IN]-(lp:LabelParticipant)<-[gpToLp:REPRESENTS]-(gp:GlobalParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, gpToLp, gp
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:9'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:9'
                    WITH *
                    CALL apoc.merge.relationship(gp, type(gpToLp), null, gpToLp, nlp)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:11" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> Product
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(p:Product)<-[lpToP:PARTICIPATED_IN]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, lpToP, p
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:11'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:11'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(lpToP), {participated_as: lpToP.participated_as}, lpToP, p)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:12" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // Product LabelParticipant -> ArtistInfo
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)<-[:PARTICIPATED_IN]-(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, cf, ai
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:12'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:12'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, ai)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:13" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                // Delete old Product LP -> ArtistInfo
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[:INCLUDES]->(:Product)<-[:PARTICIPATED_IN]-(lp:LabelParticipant)-[cf:CREATED_FROM]->(:ArtistInfo)
                WHERE lp.subaccountId <> pr.subaccountId
                DELETE cf;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:14" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> ReleaseArtist
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(p:Product)<-[:PARTICIPATED_IN]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    MATCH (lp)-[lpToRa:CREATED_FROM]->(ra:ReleaseArtist {productId: p.id})
                    RETURN pr, lp, lpToRa, ra
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:14'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:14'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(lpToRa), null, lpToRa, ra)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:15" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                // Delete old LP -> Product/ReleaseArtist
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[:INCLUDES]->(p:Product)<-[lpToP:PARTICIPATED_IN]-(lp:LabelParticipant)
                WHERE lp.subaccountId <> pr.subaccountId
                OPTIONAL MATCH (lp)-[lpToRa:CREATED_FROM]->(:ReleaseArtist {productId: p.id})
                DELETE lpToP, lpToRa;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:16" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> ArtistInfo
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:CREATED_FOR_PARTICIPANT]->(lp:LabelParticipant)-[cf:CREATED_FROM]->(ai:ArtistInfo)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, cf, ai
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:16'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:16'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(cf), null, cf, ai)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:17" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                // Delete old LP -> ArtistInfo
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[:CREATED_FOR_PARTICIPANT]->(lp:LabelParticipant)-[cf:CREATED_FROM]->(:ArtistInfo)
                WHERE lp.subaccountId <> pr.subaccountId
                DELETE cf;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:18" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LabelParticipant -> Project
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[lpToP:CREATED_FOR_PARTICIPANT]->(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, lpToP
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:18'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:18'
                    WITH *
                    CALL apoc.merge.relationship(pr, type(lpToP), null, lpToP, nlp)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:19" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                // Delete old LP -> Project
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[lpToP:CREATED_FOR_PARTICIPANT]->(lp:LabelParticipant)
                WHERE lp.subaccountId <> pr.subaccountId
                DELETE lpToP;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:20" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LP -> LabelSoundRecordingParticipation
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(:Track)-[:IS_PLACEMENT_OF]->(:LabelSoundRecording)<-[:ON_LABEL_SOUND_RECORDING]-(lsrp:LabelSoundRecordingParticipation)<-[hlsrp:HAS_LABEL_SOUND_RECORDING_PARTICIPATION]-(lp:LabelParticipant)
                    WHERE lp.subaccountId <> pr.subaccountId
                    RETURN pr, lp, hlsrp, lsrp
                  ",
                  "
                    CALL apoc.util.sleep(1)
                    MERGE (nlp:LabelParticipant:Orchard {normalizedName: lp.normalizedName, vendorId: lp.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlp.id = datetime.realtime().epochMillis,
                            nlp.uuid = apoc.create.uuid(),
                            nlp.createdAt = datetime(),
                            nlp.createdBy = 'database/KDH-156_moved_projects_p1:20'
                        SET nlp += apoc.map.removeKeys(lp, ['id', 'uuid', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlp.lastModifiedAt = datetime(),
                            nlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:20'
                    WITH *
                    CALL apoc.merge.relationship(nlp, type(hlsrp), null, hlsrp, lsrp)
                    YIELD rel AS rel
                    RETURN nlp as labelParticipant;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:21" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                // Delete old LP -> LabelSoundRecordingParticipation
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[: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;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:22" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LSR -> LabelSoundRecordingParticipation
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lsrToT]-(lsr:LabelSoundRecording)<-[olsr:ON_LABEL_SOUND_RECORDING]-(lsrp:LabelSoundRecordingParticipation)
                    WHERE lsr.subaccountId <> pr.subaccountId
                    RETURN pr, lsr, olsr, lsrp
                  ",
                  "
                    MERGE (nlsr:LabelSoundRecording:Orchard {isrc: lsr.isrc, vendorId: pr.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlsr.id = apoc.create.uuid(),
                            nlsr.createdAt = datetime(),
                            nlsr.createdBy = 'database/KDH-156_moved_projects_p1:22'
                        SET nlsr += apoc.map.removeKeys(lsr, ['id', 'isrc', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlsr.lastModifiedAt = datetime(),
                            nlsr.lastModifiedBy = 'database/KDH-156_moved_projects_p1:22'
                    WITH *
                    CALL apoc.merge.relationship(lsrp, type(olsr), {}, olsr, nlsr)
                    YIELD rel
                    RETURN nlsr as labelSoundRecording;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:23" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lsrToT]-(lsr:LabelSoundRecording)<-[olsr:ON_LABEL_SOUND_RECORDING]-(lsrp:LabelSoundRecordingParticipation)
                WHERE lsr.subaccountId <> pr.subaccountId
                DELETE olsr;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:24" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LSR -> GlobalSoundRecording
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(:Track)-[:IS_PLACEMENT_OF]->(lsr:LabelSoundRecording)<-[lsrToGsr:REPRESENTS]-(gsr:GlobalSoundRecording)
                    WHERE lsr.subaccountId <> pr.subaccountId
                    RETURN pr, lsr, lsrToGsr, gsr
                  ",
                  "
                    MERGE (nlsr:LabelSoundRecording:Orchard {isrc: lsr.isrc, vendorId: pr.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlsr.id = apoc.create.uuid(),
                            nlsr.createdAt = datetime(),
                            nlsr.createdBy = 'database/KDH-156_moved_projects_p1:24'
                        SET nlsr += apoc.map.removeKeys(lsr, ['id', 'isrc', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlsr.lastModifiedAt = datetime(),
                            nlsr.lastModifiedBy = 'database/KDH-156_moved_projects_p1:24'
                    WITH *
                    CALL apoc.merge.relationship(gsr, type(lsrToGsr), null, lsrToGsr, nlsr)
                    YIELD rel
                    RETURN true;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:26" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                  "
                    // LSR -> Track
                    MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                    WHERE v.id IN [22223]
                    MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(t:Track)-[lsrToT:IS_PLACEMENT_OF]->(lsr:LabelSoundRecording)
                    WHERE lsr.subaccountId <> pr.subaccountId
                    RETURN pr, lsr, lsrToT, t
                  ",
                  "
                    MERGE (nlsr:LabelSoundRecording:Orchard {isrc: lsr.isrc, vendorId: pr.vendorId, subaccountId: pr.subaccountId})
                        ON CREATE SET
                            nlsr.id = apoc.create.uuid(),
                            nlsr.createdAt = datetime(),
                            nlsr.createdBy = 'database/KDH-156_moved_projects_p1:26'
                        SET nlsr += apoc.map.removeKeys(lsr, ['id', 'isrc', 'vendorId', 'subaccountId', 'createdAt', 'createdBy']),
                            nlsr.lastModifiedAt = datetime(),
                            nlsr.lastModifiedBy = 'database/KDH-156_moved_projects_p1:26'
                    WITH *
                    CALL apoc.merge.relationship(t, type(lsrToT), null, lsrToT, nlsr)
                    YIELD rel
                    RETURN nlsr as labelSoundRecording;
                  ",
                  {batchSize:1, iterateList:true, parallel:false}
                )
                YIELD total, failedOperations, errorMessages, failedBatches, batch
                RETURN total, failedOperations, errorMessages, failedBatches, batch;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:27" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                MATCH (v:Vendor)<-[:BELONGS_TO]-(pr:Project)
                WHERE v.id IN [22223]
                MATCH (pr)-[:INCLUDES]->(:Product)-[:INCLUDES]->(:Track)-[lsrToT:IS_PLACEMENT_OF]->(lsr:LabelSoundRecording)
                WHERE lsr.subaccountId <> pr.subaccountId
                DELETE lsrToT;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:28" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                MATCH (lp:LabelParticipant)<-[sahlp:HAS_LABEL_PARTICIPANT]-(sa:Subaccount)
                WHERE lp.vendorId in [22223] AND lp.subaccountId <> sa.id
                DELETE sahlp;
            ]]>
        </query>
    </changeset>
    <changeset id="KDH-156_moved_projects_p1:29" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                MATCH (lp:LabelParticipant)
                WHERE lp.vendorId in [22223] 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/KDH-156_moved_projects_p1:29',
                        vhlp.lastModifiedAt = datetime(),
                        vhlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:29'
                MERGE (sa)-[sahlp:HAS_LABEL_PARTICIPANT]->(lp)
                    ON CREATE SET
                        sahlp.createdAt = datetime(),
                        sahlp.createdBy = 'database/KDH-156_moved_projects_p1:29',
                        sahlp.lastModifiedAt = datetime(),
                        sahlp.lastModifiedBy = 'database/KDH-156_moved_projects_p1:29'
                RETURN true;
            ]]>
        </query>
    </changeset>
</changelog>
