Loading
Assicurazioni
InsCensusServiceStd:updateMembersWithPlans

InsCensusServiceStd:updateMembersWithPlans

Utilizzare questo servizio per compilare un censimento del gruppo con i membri principali, le persone a carico e il piano preiscritto. Questo servizio aggiorna i GroupCensusMember esistenti in base al memberKey e crea record GroupCensusMemberPlan per i record GroupCensusMember esistenti. Utilizza le ContractGroupPlans specificate nel JSON di input per aggiornare i piani per ogni GroupCensusMember.

Classe: InsCensusService​​Std

Metodo: updateMembersWithPlans

Funzionamento

  1. Il servizio passa censusId e JSON di input del censimento per aggiornare i membri con i piani.

  2. JSON censimento è costituito da due elenchi - headers e members.

    1. headers è l'elenco dei metadati dei campi composto da fieldId, type, label e name. Qui name è il Nome API del campo (con lo spazio dei nomi per i pacchetti gestiti e i campi personalizzati). Il headers deve contenere ContactGroupPlanId.

    2. members è l'elenco dei membri da aggiornare nel censimento. Il members deve contenere ContactGroupPlanId separati da punto e virgola(;) per più piani.

  3. Il servizio chiama updateMembers by MemberKey per salvare i dati sui membri, analizzandoli nell'oggetto JSON.

  4. Il servizio aggiunge isNewMember come true per tutti i nuovi membri. Compila anche l'ID per ogni GroupCensusMember.

  5. Il servizio chiama quindi InsCensusServiceStd: addPlanSelections per creare GroupCensusMemberPlan per ogni membro. Accetta anche coperture facoltative per membro in modo che i membri principali e le persone a carico siano iscritti a coperture diverse nell'ambito dello stesso piano.

updateMembers by MemberKey

  1. Il servizio analizza i dati dei membri con i campi forniti in headers. I headers devono contenere tutti i metadati dei campi utilizzati nell'elenco dei membri.

  2. Il servizio separa i membri principali dai membri dipendenti in base alle RelationshipToPrimaryMember.

    1. Se l'elenco dei membri contiene membri principali e dipendenti, l'input deve avere SourceSystemIdentifier per tutti i membri. Tutti i membri devono avere un SourceSystemIdentifier univoco. Inoltre, tutte le persone a carico devono avere PrimaryMemberSource o PrimaryGroupCensusMemberId (se il membro principale è già presente nel censimento).

    2. Se l'elenco è una combinazione di membri principali e dipendenti, assicurarsi che ogni membro dipendente e membro principale esista nell'elenco dei membri.

  3. Il servizio elabora i nuovi GroupClass. Se il servizio ha GroupClass.Name anziché GroupClassId, recupera i GroupClass con il nome e crea un nuovo GroupClass con lo stesso nome se non viene trovato.

    1. Se il servizio dispone di GroupClass.Name, includere anche AccountId nei dati dei membri.
    2. header per GroupClass.Name: {"type":"STRING","label":"Group Class Name","fieldId":"","name":"GroupClass.Name"}.

    3. Se il GroupClass fornito non è valido, viene restituito un errore. Il GroupClass è considerato valido se:

      • GroupClass è collegato all'account del gruppo del membro.

      • Il periodo di validità del contratto è compreso tra StartDate e EndDate di GroupClass.

      • Il StartDate e il EndDate del contratto vengono recuperati utilizzando i ContractId forniti come input per il servizio

  4. I servizi elaborano le PrimaryMemberSource per le persone a carico con PrimaryGroupCensusMemberId.

    1. Se il servizio ha sia PrimaryMemberSource che PrimaryGroupCensusMemberId, il servizio considera PrimaryGroupCensusMemberId come origine e aggiorna i PrimaryMemberSource dei dipendenti in modo che contengano SourceSystemIdentifier dei principali.

  5. Il servizio salva per primi tutti i membri principali.

  6. Analizza le persone a carico per identificare le persone a carico orfane (Persone a carico senza PrimaryMemberSource).

  7. Salva tutti i dipendenti validi.

  8. Il servizio aggiorna i DependentCount di tutti i membri principali nell'elenco dei membri.

Opzioni remote

Opzione

Descrizione

censusId 

Obbligatorio

ID del censimento con i membri da aggiornare.

Verifica che il contractId appartenga all'account/censimento.

census

Obbligatorio.

JSON di input con i dettagli per i membri da aggiornare.

contractId 

Obbligatorio

ID del contratto corrente dell'account.

Verifica che i piani di ogni membro facciano parte del contratto.

onlySaveMembersWithValidProducts

Booleano

Se true, i nuovi membri senza voci in GroupCensusMemberPlan vengono eliminati.

duplicateKeys

Facoltativo

Elenco di campi per la generazione di MemberKey per identificare i membri esistenti.

Campi predefiniti dell'elenco: FirstName, Lastname, Email, GroupCensusId.

Input Output del servizio
No censusId Il servizio restituisce un errore: Specify a censusId.

Nessun input JSON del censimento

Il servizio restituisce un errore: The census input is missing.

Valore di PrimaryMemberSource fornito al membro principale Il servizio restituisce un errore: The PrimaryMemberSource must be null for primary members.
headers manca nel censimento degli input Il servizio restituisce un errore: The header node is missing in the census input.
members manca nel censimento degli input Il servizio restituisce un errore: The members node is missing in the census input.
Per le persone orfane dipendenti (Le persone a carico senza PrimaryMemberSource o PrimaryGroupCensusMemberId) Il servizio restituisce un errore: Dependent has no primary member.

Nessun contractId o contractId non valido

Il servizio non aggiorna alcun piano membro.

ContractGroupPlanId non valido per il contratto specificato

Il servizio non crea alcun piano membro.

Se onlySaveMembersWithValidProducts è true e il membro è nuovo, il servizio esegue le seguenti operazioni:

  • Elimina il membro senza piani validi.
  • Crea un membro se ha almeno un piano valido.
ContractGroupPlanId non valido per il membro (a causa del rifiuto esplicito)

Il piano membro non viene creato

Se onlySaveMembersWithValidProducts è true e il membro è nuovo, il servizio esegue le seguenti operazioni:

  • Elimina il membro senza piani validi.
  • Crea un membro se ha almeno un piano valido.
Il membro principale sceglie di non utilizzare un tipo di prodotto

IsOptOutAllPlans ha la precedenza, seguito da OptOutPlanTypes

  • Se IsOptOutAllPlans = true, il servizio non crea un piano membro anche se si specifica un prodotto per l'iscrizione.
  • Se IsOptOutAllPlans = false e viene specificato un prodotto per l'iscrizione dei membri, ma il tipo di prodotto corrisponde alla voce di rifiuto esplicito, il servizio non crea un piano per i membri.

Se il membro principale sceglie di non utilizzare un tipo di prodotto, anche i dipendenti scelgono di non utilizzare quel tipo di prodotto.

Membro dipendente sceglie di non utilizzare un tipo di prodotto

IsOptOutAllPlans ha la precedenza, seguito da OptOutPlanTypes

  • Se IsOptOutAllPlans = true, il servizio non crea un piano membro anche se si specifica un prodotto per l'iscrizione.
  • Se IsOptOutAllPlans = false e viene specificato un prodotto per l'iscrizione dei membri, ma il tipo di prodotto corrisponde alla voce di rifiuto esplicito, il servizio non crea un piano per i membri.

Se il membro principale sceglie di non utilizzare un tipo di prodotto, anche i dipendenti scelgono di non utilizzare quel tipo di prodotto.

Se IsOptOutAllPlans = true per un membro principale, lo stesso output è applicabile per i dipendenti associati.

Input JSON

Ecco come si presenta il formato per il JSON di input:

{
  "census": {
    "headers": [
      {
        "type": "STRING",
        "label": "Last Name",
        "fieldId": "",
        "name": "Lastname"
      },
      {
        "type": "STRING",
        "label": "First Name",
        "fieldId": "",
        "name": "FirstName"
      },
      {
        "type": "DOUBLE",
        "label": "FTE",
        "fieldId": "",
        "name": "FullTimeEquivalent"
      },
      {
        "type": "PICKLIST",
        "label": "Gender",
        "fieldId": "",
        "name": "Gender"
      },
      {
        "type": "DATE",
        "label": "Birthday",
        "fieldId": "",
        "name": "Birthdate"
      },
      {
        "type": "PICKLIST",
        "label": "Relationship To Primary",
        "fieldId": "",
        "name": "RelationshipToPrimaryMember"
      },
      {
        "type": "BOOLEAN",
        "label": "Is Opt-out All Plans",
        "fieldId": "",
        "name": "IsOptOutAllPlans"
      },
      {
        "type": "MULTIPICKLIST",
        "label": "Opt-Out Plan Types",
        "fieldId": "",
        "name": "OptOutPlanTypes"
      },
      {
        "type": "ENTITYID",
        "label": "Account",
        "fieldId": "",
        "name": "AccountId"
      },
      {
        "type": "EMAIL",
        "label": "Email",
        "fieldId": "",
        "name": "Email"
      },
      {
        "type": "STRING",
        "label": "Primary Member Identifier",
        "fieldId": "",
        "name": "PrimaryMemberSource"
      },
      {
        "type": "STRING",
        "label": "Member Identifier",
        "fieldId": "",
        "name": "SourceSystemIdentifier"
      },
      {
        "type": "ENTITYID",
        "label": "Contract Group Plan",
        "fieldId": "",
        "name": "ContractGroupPlanId"
      }    
    ],
    "members": [
      {
        "MemberKey": "cd64a62573825ee11b87ce91110aa576",
        "Lastname": "KoffinsUpdated",
        "FirstName": "RajUpdated",
        "FullTimeEquivalent": 1,
        "Gender": "Male",
        "Birthdate": "1965-10-13",
        "SourceSystemIdentifier": "1.primary",
        "PrimaryMemberSource": null,
        "Email": "testrajUpdated@mail.com",
        "ContractGroupPlanId":"a4D4P000000hbjSUAQ;a4D4P000000hbjSUAQ"      
      },
      {
        "MemberKey": "f2f8735bbb66b3f7d7b2bae794c00650",
        "Lastname": "Koffins",
        "FirstName": "KrisUpdated",
        "Gender": "Male",
        "Birthdate": "2010-05-13",
        "RelationshipToPrimaryMember": "Child",
        "SourceSystemIdentifier": "1.child",
        "PrimaryMemberSource": "1.primary",
        "Email": "testkrisUpdated@mail.com",
        "ContractGroupPlanId":"a4D4P000000hbjSUAQ;a4D4P000000hbjSUAQ"      
      },
      {
        "Lastname": "WarnerUpdated",
        "MemberKey": "5a5bc4e3c05cf461a65a2d7fdc0ab8e0",
        "FirstName": "Christopher",
        "FullTimeEquivalent": 0.75,
        "Gender": "Male",
        "Birthdate": "1985-10-13",
        "SourceSystemIdentifier": "2.primary",
        "PrimaryMemberSource": null,
        "Email": "testchristopherUpdated@mail.com",
        "ContractGroupPlanId":"a4D4P000000hbjSUAQ;a4D4P000000hbjSUAQ"
      },
      {
        "Lastname": "WarnerUpdated",
        "MemberKey": "157b2052fc732d8261984c2922a3261b",
        "FirstName": "Steph",
        "Gender": "Male",
        "Birthdate": "1985-10-13",
        "RelationshipToPrimaryMember": "Spouse",
        "SourceSystemIdentifier": "2.spouse",
        "PrimaryMemberSource": "2.primary",
        "Email": "teststephUpdated.com",
        "ContractGroupPlanId":"a4D4P000000hbjSUAQ;a4D4P000000hbjSUAQ"
      }
    ]
  }
}

JSON di output

Il servizio restituisce un messaggio di esito positivo se il flusso è completato, altrimenti restituisce l'errore in caso di eccezioni.

  • censusMemberIds: L'elenco dei GroupCensusMemberIds dei membri salvati.

  • errori: L'elenco dei membri con errori. Ogni voce di elenco è costituita dai dati dei membri di input e dall'errore.

  • ​ ​ ​ relatedFieldsUpdateSuccessCount: Numero di membri principali per cui il DependentCount viene aggiornato in base al servizio.

  • ​ ​ ​ relatedFieldsUpdateErrorCount: Numero di membri principali per cui l'aggiornamento del DependentCount restituisce errori.

  • relatedFieldsUpdateErrors: Elenco degli errori restituiti durante l'aggiornamento dei DependentCount dei membri principali.

  • memberPlanIds: L'elenco dei GroupCensusMemberPlanIds inseriti correttamente.

{
  "result": "success",
  "relatedFieldsUpdateErrors": [],
  "relatedFieldsUpdateErrorCount": 0,
  "relatedFieldsUpdateSuccessCount": 2,
  "errors": [
    {
      "error": "[Email]: INVALID_EMAIL_ADDRESS - Email: invalid email address: teststephUpdated.com",
      "Birthdate": "1985-10-13",
      "Gender": "Male",
      "Lastname": "WarnerUpdated",
      "RelationshipToPrimaryMember": "Spouse",
      "MemberKey": "157b2052fc732d8261984c2922a3261b",
      "SourceSystemIdentifier": "2.spouse",
      "FirstName": "Steph",
      "Email": "teststephUpdated.com",
      "PrimaryMemberSource": "2.primary",
      "ContractGroupPlanId":"a4D4P000000hbjSUAQ;a4D4P000000hbjSUAQ"
    }
  ],
  "censusMemberIds": [
    "0r6RO00000005pZYAQ",
    "0r6RO00000005paYAA",
    "0r6RO00000005pbYAA"
  ],
  "memberPlanIds":[
    "a4B4P000006jKsMUAU",
    "a4B4P000006jKsNUAU",
    "a4B4P000006jKsOUAU",
    "a4B4P000006jKsPUAU",
    "a4B4P000006jKsQUAU",
    "a4B4P000006jKsRUAU"
  ],
  "errorCode": "INVOKE-200",
  "error": "OK"
}
 
Caricamento
Salesforce Help | Article