Hoe je MANAGER_NOT_DEFINED in Salesforce-deployments oplost

Een goedkeuringsproces of hiërarchieafhankelijke automatisering mislukt omdat het Manager-veld van de gebruiker niet is ingevuld.

Komt voor bij: runtime indiening van goedkeuringen, meestal tijdens de uitvoering van Apex-tests

Wat het betekent

MANAGER_NOT_DEFINED treedt op wanneer een bewerking die afhankelijk is van de gebruikersrol- of managementhiërarchie, meestal een goedkeuringsprocesstap die is ingesteld om naar de manager van een gebruiker te routeren, een User-record bereikt zonder waarde in het Manager-veld. Salesforce kan de goedkeuring niet routeren, of de hiërarchieafhankelijke logica die deze triggerde niet voltooien, zonder die keten.

Scratch orgs en verse sandboxes maken hun standaard adminGebruiker doorgaans aan zonder Manager, wat precies de reden is waarom deze fout onevenredig vaak opduikt in CI-testruns in plaats van in een volwassen productieomgeving waar de hiërarchie in de loop van de tijd is ingevuld.

Diagnose

Veelvoorkomende oorzaken

Test- of seedgebruikers zijn aangemaakt zonder manager
Fixture User-records zijn ingevoegd voor tests zonder het Manager-veld in te vullen dat het goedkeuringsproces nodig heeft.
Manager-veld is ingesteld nadat afhankelijke automatisering al was uitgevoerd
Een migratiescript heeft het Manager-veld van een gebruiker bijgewerkt in een latere stap dan het proces dat dit tijdens de setup nodig had.
Goedkeuringsproces bereikt een gebruiker zonder manager in de keten
Een goedkeuringsstap die "omhoog routeert via de managementketen" raakt een gebruiker op het hoogste niveau of een nieuw aangemaakte gebruiker wiens Manager-veld leeg is.

De oplossing

  1. Vul het Manager-veld in voor elke relevante gebruiker
    Zorg dat test- en seed User-records die worden gebruikt in goedkeurings- of hiërarchieafhankelijke flows een toegewezen Manager hebben.
    User approver = new User(/* ... */);
    insert approver;
    User submitter = new User(ManagerId = approver.Id, /* ... */);
    insert submitter;
  2. Orden gebruikersinstellingen vóór hiërarchieafhankelijke automatisering
    Wijs managers toe als een eerdere stap, voordat een goedkeuringsproces of trigger die afhankelijk is van de hiërarchie afgaat.
  3. Voeg een terugvalgoedkeurder toe voor gebruikers bovenaan de hiërarchie
    Configureer het goedkeuringsproces met een standaardgoedkeurder, zodat gebruikers zonder manager toch ergens naartoe worden gerouteerd.
In de praktijk

Hoe Serpent dit voorkomt

De taakinstellingen van Serpent kunnen testgebruikers voorzien van een volledige hiërarchie, zodat goedkeuringsproces-tests die afhankelijk zijn van een managerketen niet mislukken om een reden die niets te maken heeft met de geteste code. Zie de bibliotheek met Salesforce-deploymentfouten.

Metadata en data in één deploymentflow in Serpent

Preventie

Bouw een gedeelde testgebruikersfabriek die altijd een managerketen instelt
Centraliseer het aanmaken van test-User-records in één @TestSetup-vriendelijke utility die standaard een manager toewijst, zodat elke nieuwe test een geldige hiërarchie erft.
Voeg indien nodig features zoals Territory Management toe aan scratch org-definities
Zaai waar goedkeuringsprocessen afhankelijk zijn van de rolhiërarchie ten minste een gebruikershiërarchie van twee niveaus in scratch org-setupscripts, niet alleen de standaard adminGebruiker.
Configureer elke managergebaseerde goedkeuringsstap met een terugvalgoedkeurder
Behandel een ontbrekende terugvalgoedkeurder als een ontwerphiaat in het goedkeuringsproces zelf, om nieuwe medewerkers of gebruikers op het hoogste niveau op te vangen voordat ze vastlopen.
Veelgestelde vragen

MANAGER_NOT_DEFINED, uitgelegd

Moet elk goedkeuringsproces een managergebaseerde stap hebben om deze fout te krijgen?
Alleen processen die expliciet zijn ingesteld om te routeren op basis van de manager of rolhiërarchie van de indiener; goedkeuringsprocessen met vaste of wachtrijgebaseerde goedkeurders worden niet beïnvloed.
Kan een gebruiker zijn eigen manager zijn om dit te omzeilen?
Salesforce blokkeert dat een gebruiker als zijn eigen directe manager wordt ingesteld, dus dit is geen geldige workaround; gebruik in plaats daarvan een echte tweede gebruiker of een standaardgoedkeurderconfiguratie.
Geldt dit ook voor Flow-gebaseerde goedkeuringen naast klassieke Approval Processes?
Ja. Elke automatisering die dynamisch de "manager van de indiener" oplost, of het nu een klassieke Approval Process-stap is of een Flow met het Get Records/Manager-lookuppatroon, botst op hetzelfde onderliggende hiaat wanneer het veld leeg is.

Begin gratis. Geen creditcard, geen installatie, geen verplichtingen.

Binnen 15 minuten ingericht. Geen DevOps-specialist nodig.

Benieuwd naar sneller releasen voordat je instapt? Laten we praten

Vrijblijvend.