nav2009-service-tier-admin — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited nav2009-service-tier-admin (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Targets Microsoft Dynamics NAV 2009 (incl. R2) Service Tiers (NST = NAV Server) and NAS (NAV Application Server / Job Queue) running as Windows services. The bundled scriptscripts/Get-NavServiceTier.ps1enumerates services, parses CustomSettings.config, and emits JSON; the agent (you) writes the narrative. Inventory is read-only; the-Restartaction stops/starts a service in the correct order and is opt-in — always confirm with the user before using it. The script never calls an LLM.
SCRIPT = this skill's scripts/Get-NavServiceTier.ps1. Requires PowerShell 7+ (pwsh). Reads the local machine by default; use -ComputerName for remote targets (requires admin + WinRM/CIM access on the target). Full parameter and schema reference in REFERENCE.md.
Reading CustomSettings.config in Program Files\Microsoft Dynamics NAV\...\Service usually requires local admin or membership in the local Administrators group.
-ComputerName): needs CIM/WinRM connectivity (Test-WSMan orwinrm quickconfig on the target) and an account with admin rights on the target machine.
SeServiceLogonRight-equivalent) on the machine hosting theservice. For remote restart the same WinRM/admin requirements apply.
readable; the instance will surface an error field rather than aborting the whole inventory.
Always run with pwsh. Parse the JSON it prints on stdout.
| Want | Pass |
|---|---|
| Inventory all instances on this server | _(no extra params)_ |
| Inventory a named instance | -Instance NAVPROD |
| Inventory a remote server | -ComputerName NAVSRV01 |
| Include every config key, not just curated ones | -IncludeFullConfig |
| Restart a named instance (opt-in) | -Instance NAVPROD -Restart |
| Save full JSON to file | -OutFile C:\ops\nav-tiers.json |
# Full inventory of all NAV service tiers on the local machine
pwsh -File SCRIPT -OutFile C:\ops\nav-tiers.json
# Check what database a specific instance is pointing at
pwsh -File SCRIPT -Instance NAVPROD
# Inventory all instances on a remote server
pwsh -File SCRIPT -ComputerName NAVSRV01 -OutFile C:\ops\navsrv01-tiers.json
# Restart the NAVTEST instance (confirm with user first — disconnects all clients)
pwsh -File SCRIPT -Instance NAVTEST -Restartstdout. Prefer -OutFile for multi-instance inventories so context stays small.
Top level: status (ok / partial / error), generated_at (UTC ISO-8601), computer, and instances — one entry per discovered service:
{
"status": "ok",
"generated_at": "2026-06-10T09:00:00.0000000Z",
"computer": "NAVSRV01",
"instances": [
{
"serviceName": "MicrosoftDynamicsNavServer$NAVPROD",
"instanceName": "NAVPROD",
"status": "Running",
"startMode": "Auto",
"account": "DOMAIN\\svc-nav",
"exePath": "C:\\Program Files\\Microsoft Dynamics NAV\\60\\Service\\Microsoft.Dynamics.Nav.Server.exe",
"configPath": "C:\\Program Files\\Microsoft Dynamics NAV\\60\\Service\\Instances\\NAVPROD\\CustomSettings.config",
"settings": {
"DatabaseServer": "SQLSRV01",
"DatabaseInstance": "",
"DatabaseName": "Navision_PROD",
"ServerInstance": "NAVPROD",
"ClientServicesPort": "7046",
"SOAPServicesPort": "7047",
"ManagementServicesPort": "7045",
"ClientServicesCredentialType": "Windows",
"SOAPServicesEnabled": "true",
"ServicesCertificateThumbprint": ""
},
"nas": {
"codeunit": "450",
"method": "JOBQUEUE",
"argument": "",
"enabled": true
},
"ports": {
"client": 7046,
"soap": 7047,
"management": 7045
},
"error": null
}
]
}When -Restart is passed the top level also contains:
"restart": {
"requested": "2026-06-10T09:05:00.0000000Z",
"instance": "NAVPROD",
"before": "Running",
"after": "Running",
"ok": true
}status is partial when at least one instance has a non-null error field. With -OutFile, stdout instead carries a compact object: { status, out_file, instances: [{ instanceName, status }] }.
(settings.DatabaseServer + settings.DatabaseName), and the three ports.
user's explicit consent, using -Restart).
nas.enabled = true and status != Running,the Job Queue is not processing — this is usually urgent.
status = Running, ClientServicesPort (must matchwhat the client profile has), and ClientServicesCredentialType. If status and port look correct, the issue may be network/firewall or Kerberos/SPN — point to nav2009-troubleshooting for the next step.
NAVPROD — proceed?") then run with -Restart. Verify restart.after.status = Running and restart.ok = true in the output.
that SQL Server instance using the DatabaseServer and DatabaseName values from the output.
MicrosoftDynamicsNavServer*; single-instanceNAV 2009 SP1 may be exactly MicrosoftDynamicsNavServer (no $ suffix). Default config path: C:\Program Files\Microsoft Dynamics NAV\60\Service\CustomSettings.config.
error fieldwith the message; settings, nas, and ports will be null. Suggest locating the config manually in the Service folder next to the NAV Server executable.
winrm quickconfig) andthat the running account has admin rights there.
-RestartTimeoutSec (default 60) elapsed before the service reachedRunning; restart.ok will be false and restart.after will show the actual state. Check Windows Event Log on the target for service start failures.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.