CALL apoc.trigger.add('gp-full-search-path',
    '
    UNWIND apoc.trigger.propertiesByKey({assignedNodeProperties},"gpTouched") AS gpMap
    WITH gpMap.node as gp
    OPTIONAL MATCH (ss: AggregatedParticipantSocialStat)<-[:HAS_AGGREGATED_PARTICIPANT_SOCIAL_STAT]-(pp:PublicParticipant)<-[:REPRESENTS]-(gp)
    OPTIONAL MATCH (lp: LabelParticipant)<-[:REPRESENTS]-(gp)
    OPTIONAL MATCH (v: Vendor)-[:HAS_LABEL_PARTICIPANT]->(lp)
    OPTIONAL MATCH (sa: Subaccount)-[:HAS_LABEL_PARTICIPANT]->(lp)
    WITH gp {
    .id,
    .name,
    .countryCode,
    .imageUrl,
    hasPublicData: pp is not null,
    labelParticipants: COLLECT( DISTINCT lp {
        .id,
        .name,
        .vendorId,
        .subaccountId,
        vendorName: v.name,
        subaccountName: sa.name
    }),
    socialAccountIds: {
        spotify: gp.spotifyId,
        appleMusic: gp.appleMusicId,
        chartmetric: gp.chartmetricId
    },
    stats: ss {
        .followers, 
        .monthlyListeners, 
        .views, 
        .popularity
    }
    } as nestedDoc
    CALL streams.publish("topic.musicGraph.globalParticipant.elasticSearch", nestedDoc) return nestedDoc
    '
    , {phase:'after'});