Who may do what in the portal, who gets a licence, and who changed what · As of September 2026 (Server 1.0.31, Agent 1.0.36)

Users, permissions, licences and logs

This document describes who may sign in to the portal and what that person sees there, how devices without Active Directory get into the system, how ZeroPortal counts licences, and where you can look up who changed what and when. All pages are in the menu under Global Configuration. Related guides: Administration Handbook, Devices without a domain (API key), Distributing MSIX packages, Setting up high availability.

1. What is this?

ZeroPortal is divided into nine areas (table in the appendix). For each area you grant a level: None, Read or Administrate. Anyone with None does not see the menu item and cannot open the page through the address bar either. Levels are attached to AD groups (recommended), AD accounts, internal accounts with a password, enrolled devices and users without a domain, or to portal groups that bundle such members.

Above everything stand the full administrators: the AD group entered in the configuration tool and the optional emergency account. They may always do everything, and only they manage permissions, portal groups, internal accounts, agent enrollment, licensing, the audit trail, and backup and recovery.

Licences are counted, not enforced: 30 are included, more come with a licence file. The audit trail records who gave what to whom or took it away; entries are only appended, never changed or deleted.

2. What is this good for?

3. How do I use this?

Only full administrators see and open the pages Permissions, Portal groups, Internal accounts, Agent enrollment, Licensing and Audit trail.

3.1 Defining the full administrators

  1. Create a security group in Active Directory, for example ZeroAdmins, and add the administrators.

Creating the AD group ZeroAdmins

Members of the group ZeroAdmins

  1. Enter the group in the configuration tool in step 3 Admin Users under Full Admins (format DOMAIN\Group) and check it with Test in AD. Optionally, a second group under ReadOnly Admins gets Read on all areas.

Configuration tool, step 3: administrators

  1. Both values are stored in the server's appsettings.json (section AccessGroups). After a change there, restart the ZeroPortal service.
  2. From them the portal creates the portal groups Portal administrators (Administrate, all areas, with RootUser as a further member) and Portal read-only (Read, all areas). The administrators group is checked at every service start and recreated if needed. The read-only group is created only once; if you delete it, it does not come back.

Emergency account (root). For portals without Active Directory, or as a way out: create a password hash with New-ZPRootPasswordHash (PowerShell module ZeroPortal), enter it in appsettings.json and restart the service:

"RootUser": { "UserName": "root", "PasswordHash": "ZPH1:…" }

The account signs in at https://<portal>/Account/Login, bypasses all module permissions, and exists only on the nodes where it is entered. Every sign-in is recorded in the audit trail. Do not use it for daily work.

3.2 Creating a portal group

Grant rights and package assignments to portal groups, not to individual people.

  1. Open Global Configuration → Portal groups, enter a name and description, and click Create.
  2. Click the group, then Add member. Sources: Active Directory (groups and users), Internal accounts, API clients (enrolled devices and users without a domain). A portal group cannot contain another portal group.
  3. Grant rights under Permissions (section 3.3) or directly on the MSIX package (see Distributing MSIX packages).

Disable suspends the group's package assignments; the members stay. Delete removes the group and its memberships; rights that came only through it end.

Portal group Rights Members
Portal administrators everything (full administrators) Company\ZeroAdmins
Package management MSIX: Administrate · App-V: Administrate · Reporting: Read Company\SW-Packagers
Service desk MSIX: Read · App-V: Read · Reporting: Read Company\Helpdesk

3.3 Granting areas and levels

  1. Open Global Configuration → Permissions, click Add, and choose the source (AD, Internal, API client, Portal group) and the principal.
  2. Click the new row. In the Rights of … dialog, set None, Read or Administrate per area (or under All modules) and click Save. The higher level wins.
  3. Remove all rights deletes the row.
  4. Check the result with a test account that is only in this group.

3.4 Creating an internal account

For people without a domain account; domain users sign in with Windows authentication.

  1. Open Global Configuration → Internal accounts, enter a user name, optionally a display name, and a password (at least 8 characters), and click Create account.
  2. Add the account to a portal group or grant it rights under Permissions (source Internal).
  3. The person signs in at https://<portal>/Account/Login. The form only appears if an emergency account or an active internal account exists.

Per account: Set password, enable/disable, delete (also removes memberships and permissions). An internal account never becomes a full administrator.

3.5 Adding a device or user without a domain

Without a domain, a computer gets a key of its own: you create a time-limited rollout token, and the device trades it for its permanent key at the first sync.

  1. Open Global Configuration → Agent enrollment and turn on Key-based access. While it is off, every enrollment and every existing key is rejected.
  2. On the Rollout tokens card, enter a name and Valid (days) (default 14, at most 365) and click Create. The dialog shows the token value and the installation command:

msiexec /i ZeroPortalAgent.msi SERVER=https://portal.firma.de:8080 ENROLLTOKEN=zpe_… APPVSYNC=1 MSIXSYNC=1 POLICYSYNC=1

With a self-signed certificate, append TRUSTCERT=1 or import the portal certificate on the device. For domain-joined devices there is also the group policy ZeroPortal Agent → Authentication → Enrollment token. 3. At the first sync the device receives a machine key, and the signed-in person receives a user key at the user sync (user@devicename). The device appears under Known clients, the person under Known users; these lists contain every device and person that has checked in, and they are the basis of licence counting. 4. Grant rights to both like any other member: in a portal group (source API clients) or directly on the MSIX package. App-V assignments accept AD groups only. What comes next is described in Devices without a domain (API key).

What happens
Close / reopen token / Reopen for 14 days The value stays the same, distributed installation commands keep working. Show token value only works on the node that created the token
Delete token Keys already issued stay valid
Rename client Your display name is no longer overwritten by the device
Disable key Access blocked immediately, permissions stay
Delete client and key Entry, key and permissions gone; with a valid token the device enrolls again at the next sync, without the old assignments

3.6 Choosing the licence mode and uploading a licence file

Open Global Configuration → Licensing. At the top are Counted, Users (last 90 days) and Devices (last 90 days); the counting mode decides which number counts.

  1. Choose the counting mode: Per user (default, intended for terminal servers) or Per device. The change takes effect immediately on all nodes.
  2. Click Upload licence and select the vendor's licence file. The portal checks the signature; a rejected file is not stored, and the message gives the reason. A file with a known licence number replaces the existing entry.
  3. The Licence files list shows quantity, mode, validity and state (Active, Expired, Not yet valid, Not counted (other mode)). Remove deletes the file from the portal; keep the original.

3.7 Reading the audit trail

Open Global Configuration → Audit trail. The table shows When, Who, Action, Target, Detail and Node, newest entries first; at the top you filter by action and period (7, 30, 90 days, all). Recorded are all changes to rights, portal groups, memberships, MSIX assignments, internal accounts, agent enrollment, licences and counting mode, sign-ins of the emergency account, backups, the audit settings themselves, and every alert raised. The target is stored with the name it had at the time of the change. Main switch and retention: see the appendix.

3.8 Setting up e-mail notifications

Under Global Configuration → Configuration, section E-Mail Notifications: turn on Enable E-Mail Notifications, enter the SMTP server, port, sender and recipient addresses (if needed user, password, SSL), save, and click Send Test E-Mail. In the Alerts table you switch off individual alerts. Cooldowns: Repeat warnings after (hours) (default 168), Repeat critical alerts after (hours) (default 1); 0 removes the cooldown.

4. Rules: when does what apply

Permissions

Licences

Audit and notifications

5. Operations and troubleshooting

Logs. Portal: C:\ProgramData\NickIT\ZPServer\Logs\ZeroPortalLogs.log (ROOT LOGON, License upload refused, Enrollment:); who changed what in the portal is in the audit trail, not in the log. Agent: C:\ProgramData\NickIT\ZeroPortalAgent\Logs (agent-<date>.log, usersync-<user>-<date>.log); event 2511 = enrollment failed, 2530/2531 = licence refused or booking failed, the sync ran anyway.

Nobody can get in any more. A repeated password prompt is a sign-in problem (intranet zone, SPN; see Known issues); the Access denied page means signed in, but not permitted. Then: is the right group under AccessGroups:FullAdmins in appsettings.json, and are you a member? This entry always applies, even if every permission was removed in the portal; when the service restarts, the portal repairs the group Portal administrators and its right on all areas. Otherwise use the emergency account at /Account/Login or set one up (section 3.1).

Symptom Cause Fix
Menu item missing, address bar returns Access denied Level None for this area Check the level under Permissions, including the account's portal groups
Sign-in form missing or rejects everyone No emergency account and no active internal account, or PasswordHash faulty Enter RootUser with a hash from New-ZPRootPasswordHash, restart the service
Device does not enroll (agent log 2511) or is suddenly rejected Key-based access off, token closed or expired, key disabled, certificate not trusted Check the switch, token and key under Agent enrollment; TRUSTCERT=1 or import the certificate
Alert API key used from another machine Machine key copied (image clone, registry export) Disable the key or delete the client; enroll the device again with a token
User sees "No licence is free for you" Count above the quota Check the licensing page, let old devices or users drop out of the window, buy more licences; nothing is blocked
No e-mails although alerts are switched on Outbox incomplete, cooldown active, or node is a Replica Send Test E-Mail; alerts are recorded in the audit trail anyway

6. Appendix

Areas and levels

One level per area: None (menu item invisible, call refused), Read, Administrate.

Area Content
App-V App-V packages and connection groups
Reporting App-V reporting
MSIX MSIX packages and App Attach
Policies Policy sets and policies
Download Download area with the agent MSI
Configuration Repositories, e-mail, proxy, audit settings (not: backup)
High Availability Cluster and replication
Node Settings Settings of the individual server
Permissions Shown, but reserved for full administrators

Audit settings

Global Configuration → Configuration, section Audit trail: Record administrative changes (main switch) and Keep entries for (days) (0 = unlimited, at most 3650). With a period above 0, the Primary deletes older entries once a day and records the deletion itself in the log.

Licence alerts

Alert Severity When
Licence expires soon Warning 30 days before a licence file expires
More in use than the licence covers Warning a licence request was refused; once per cooldown