Skip to content
InvardiaInvardia
Why InvardiaProductsFeaturesPricingCommunity
Docs
All documentation
Product documentationPIM ManagerSecurityInsight
SettingsPIM Manager settingsSecurityInsight settingsEntra Policy Suite settings
ScriptsPIM Manager scriptsSecurityInsight scriptsEntra Policy Suite scriptsInvardia scripts
Error codesPIM Manager error codesSecurityInsight error codes
API and MCPPIM Manager APIPIM Manager MCP toolsSecurityInsight APISecurityInsight MCP tools
SecurityPIM Manager security packSecurityInsight security packEntra Policy Suite security pack
Network and designPIM Manager network guidesPIM Manager command wizardNetwork egressDesign your installationCalculate your cost
SupportSetup scriptsRemote support access
Search the docs
SupportAboutContactBook a demoCustomer portalDesign your installationFree Pro trial

PIM Manager scripts

Confirm-PimInstall

Verify a PIM Manager installation

Part of the PIM Manager release - not a standalone download; it runs via the product's own install command or the updater.

Purpose

Verifies a PIM Manager installation at the end of the install (and any time later): it reads every result an install must leave behind, repairs what can be repaired, prints one table with the fix for each line, and refuses "done" when a required line fails.

When to run it

Every install path runs it as its last step. Run it yourself after a private installation (from inside the network: the store has no public endpoint), after an interrupted install, or whenever you want to know the installation is complete. It is part of the PIM Manager release package, not a separate download: run it from the package folder that Install-Invardia (or the guided install) downloaded and verified (.\tools\setup\Confirm-PimInstall.ps1). It reads over REST (browser sign-in or the Invardia Support app session; no Azure CLI).

Who may run it

KindRoleScopeWhy
azureRbacReaderthe PIM resource group (Contributor for the updater repair; Owner or User Access Administrator for the role repairs)Reads the Manager app, the engine and updater jobs, their identities, role assignments and the SQL firewall rules. A repair (updater re-install, the Manager's Reader on the resource group, removing this run's 'AllowSetupHost' rule) needs the matching write right; without it the line stays failed or a warning, with its fix.
otherMember of the environment's SQL admin group (grp-pim-sql-admins), signed in through the browser or the Invardia Support app session (-UseSignedInAccount), or an admin application with a certificate (-ClientId + -CertThumbprint)the environment's SQL databaseReads ManagerAccess, the licence, the mail sender and the alert recipients from pim.Settings; the SuperAdmin and alert-recipient repairs write them (Set-PimManagerAccess / Set-PimAlertRecipients).
entraRoleGlobal Reader (or any role that can read service principals and their application permission assignments)the tenantChecks that the engine identity holds every required Microsoft Graph application permission (appRoleAssignments) and that every SuperAdmin may sign in to the Manager (Easy Auth assignments).
entraRoleGlobal Administrator (only for the tenant-root Reader repair)the tenant root management groupThe one grant attempt of the engine's Reader at the tenant root. Without it the line is a warning carrying the Global Administrator's command; the install is still done. Missing Graph permissions are granted by a Privileged Role Administrator with Grant-PimEnginePermissions.ps1 (printed as the fix).
exchangeExchange Administrator (optional)Exchange OnlineTests that each sending identity holds the scoped 'Application Mail.Send' right (Test-ServicePrincipalAuthorization). Without it the mail line is a warning; mail is optional.

What it changes

WhereActionWhatPermission / roleScopeWhyUndo
Environment SQL databaseupdatepim.Settings ManagerAccess (a named SuperAdmin missing) -- repair, via Set-PimManagerAccessthis environmentEvery SuperAdmin of the install must be a SuperAdmin in the Manager. Never written when the store could not be read.Manager > Settings > Access: change the role back.
Environment SQL databaseupdatepim.Settings alert recipients (empty) -- repair, via Set-PimAlertRecipientsthis environmentAn install must not leave alerting without recipients.Manager > Settings > Alerting > Recipients.
PIM resource groupupdatethe updater job ca-pim-update (missing or wrong ring) -- repair, via Deploy-PimUpdateJob on the running imagethis installationA Pro installation must keep itself updated.Delete or change the updater job (its ring is PIM_UPDATE_RING).
Azure RBACgrantthe engine job's managed identity -- one attemptReader (plus User Access Administrator with -EngineAzureRootUserAccessAdmin)the tenant root management groupSo the engine sees every subscription. Refused = a warning with the command.Remove the role assignment at the tenant root.
Azure RBACgrantthe Manager's managed identity -- one attemptReaderthe PIM resource group onlyThe Manager's Environment report reads its own resources.Remove the role assignment on the resource group.
Azure RBACgrantthe engine job's managed identity -- only at a defined Azure scope it does not already hold it at (or above), read backUser Access Administrator (never Owner)each Azure scope the store defines (Azure resource assignments and definitions: management groups, subscriptions, resource groups); the tenant root only with -EngineAzureRootUserAccessAdminThe engine creates the Azure role assignments and role policies defined there. Refused = a warning with the command; nothing is ever removed.Remove the role assignment at that scope (its description says 'converge engine access').
SQL server firewallremovethe 'AllowSetupHost' rule this run opened (only with -CloseSetupHostRule and -SetupHostRuleOwner this)the environment's SQL serverNo setup-time firewall opening is left behind.None needed (an install opens it again when it needs it).
Local file (only with -OutFile)createthe result as JSON (done, failed, warnings, rows)this computerFor a caller that reads the outcome.Delete the file.

What it only reads

  • pim.Settings: ManagerAccess, License, the install key state, the mail sender, the alert recipients
  • pim.Rows: the Azure resource assignments and definitions (their Azure scopes only)
  • the Manager app, the engine / updater / downlink jobs and their executions, their identities and role assignments (management.azure.com)
  • the engine identity's Microsoft Graph application permissions (appRoleAssignments) and the Manager's sign-in app assignments
  • Exchange Online Test-ServicePrincipalAuthorization for each sending identity (when Exchange is reachable)
  • the SQL server's firewall rules; managed tenant: the managing tenant's store network rules

Parameters

ParameterRequiredDefaultWhat it does
-RolenoSingleSingle, Master (managing tenant) or Slave (managed tenant: adds the registered / subnet / first-pull lines).
-TenantIdyesThe tenant id.
-SubscriptionIdyesThe PIM subscription.
-ResourceGroupyesThe PIM resource group.
-SqlServerFqdnyesThe store's SQL server FQDN.
-SqlDatabasenoPimPlatformThe database.
-SqlResourceGroupnothe PIM resource groupThe SQL server's resource group, when it differs.
-ManagerAppnoca-pim-managerThe Manager container app.
-TickJobNamenoca-pim-tickThe engine job.
-UpdateJobNamenoca-pim-updateThe updater job.
-DownlinkJobNamenoca-pim-downlink-s6Managed tenant: the job that pulls the managing tenant's bundle.
-EnvNamenoThe Container Apps environment (needed for the updater repair).
-AcrNamenoThe registry (needed for the updater repair).
-ImageReponopim-managerThe image repository.
-AcrAgentPoolNamenoThe registry's build pool (private registry).
-SuperAdminsnononeThe install's SuperAdmins (comma-separated or a list).
-AlertRecipientsnononeThe alert recipients to repair an empty list with.
-UpdateRingno-1The update ring you expect (0-3). Left out, the check reports the ring the installation runs.
-UpdateSourcenoThe update source of the updater repair (e.g. Invardia).
-NoUpdaternofalseA Community installation without a feed: there is no in-cloud updater by design (Update-PimCommunity.ps1 is its updater).
-LicenceExpectednofalsePro, trial or multi-tenant: a registered licence is required.
-LicenceLaternofalseA trial or Pro installed without a licence: the licence line reminds you to add it in PIM Manager > Settings > Licence, never a stop.
-MailDeferredReasonnoWhy the install could not set the mail sender (the line is then a warning with the Get Started follow-up).
-SetupHostRuleOwnernothisWho owns the 'AllowSetupHost' SQL firewall rule: this run, the caller (the multi-tenant build closes it in its last step) or none.
-ClosingStepnosqlhostcloseThe caller's step that closes the rule (shown in the line).
-CloseSetupHostRulenofalseRemove this run's 'AllowSetupHost' rule and read it back.
-EngineAzureRootUserAccessAdminnofalseThe root repair also grants the engine User Access Administrator (so it can assign Azure roles).
-SupportAppIdnoThe Invardia Support app's application (client) id, when the installation named one. The line 'Invardia support: database access' then reads whether a database user with that id is in the read role pim_support_read (and says so when it also holds db_owner from an earlier grant -- a warning, never ok). Without it the line says 'not checked'. Read only: nothing is created or repaired by this line.
-MasterSubscriptionIdnoManaged tenant: the managing tenant's subscription (for the lines it can read from here).
-MasterStorageAccountnoManaged tenant: the managing tenant's bundle store.
-ManagingTenantStepnoManaged tenant: the managing tenant's step shown when a line cannot be read from here.
-EnrollmentWaitnofalseEnrolled managed tenant: a network not allowed yet and a first pull not yet done show as WAITING (the managing tenant allows it within minutes), never as a failure.
-ResumeCommandnoThe command that re-runs this install's verify (shown as the fix of a repairable line).
-ClientIdnoAutomation: an admin application's client id (with -CertThumbprint) instead of the signed-in account.
-CertThumbprintnoAutomation: that application's certificate thumbprint (local machine store).
-UseSignedInAccountnofalseRead (and repair) as the signed-in person: the recommended way.
-NoRepairnofalseRead and report only; no repair runs.
-OutFilenoWrite the result as JSON to this file.
-SkipEngineAzureAccessnofalseDo not converge the engine's Azure rights to the Azure scopes the store defines (by default it does: User Access Administrator where missing, read back; -WhatIf / -NoRepair only plan it).

Preview with -WhatIf

Reads every line and prints the table with each fix; every repair it would make is previewed as 'What if: Performing the operation "repair" on target "install check '<line>'"' and not run, so a repairable line keeps its failed state. Nothing is written.

Undo

Nothing to undo for the check itself. A repair is undone the way its line says: the SuperAdmin / alert recipients in the Manager's Settings, the updater job, the two Reader role assignments.

Network

It connects to: login.microsoftonline.com (sign-in), management.azure.com, graph.microsoft.com, outlook.office365.com (Exchange admin API, mail line), <server>.database.windows.net:1433

How it runs

Part of the PIM Manager release - not a standalone download; it runs via the product's own install command or the updater.

Release 3.0.70

Every script, identity and permission for your security review: PIM Manager

InvardiaInvardia

See the risk. Control the access.

Products

PIM ManagerSecurityInsightEntra Policy SuiteAll featuresPricingFree 60-day Pro trialBook a demoWhy Invardia

Docs

DocumentationSearch the docsPIM Manager settingsSecurityInsight settingsPIM network guidesCommand wizardNetwork egressPIM Manager design configuratorSecurityInsight design configuratorDesign your installationCalculate your cost

Company

AboutContactCustomer portalSupportHow support worksHow updates reach youSupport in numbersSetup scriptsRemote support accessContact: info@invardia.com

Legal

Terms of saleLicence termsData processingPrivacyCookiesCompany information
© 2026 Invardia – a brand of 2LINKIT, founded and owned by Morten Knudsen · Strandvejen 21A, 6000 Kolding, Denmark · VAT DK39208032 · Contact: info@invardia.com