Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

License Error Event ID 1149

Event ID 1149 and 4778: counting live RDS sessions against the CALs you own

13 min read Updated October 5, 2026 Windows Server: RDS, Hyper-V & Clustering

Fix it now

The logs are the only honest record of who and what actually uses your Session Hosts. Count distinct named users, and separately distinct client devices, across a full month, then compare with what the licence server holds. Peak concurrent sessions is not the number, because RDS CALs are not concurrent-use licences.

Run on every Session Host, including standalone ones outside the deployment, then merge the files

$log = 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'
Get-WinEvent -FilterHashtable @{LogName=$log; StartTime=(Get-Date).AddDays(-30)} | Select-Object TimeCreated, Id, Message | Export-Csv C:\temp\rds-sessions.csv -NoTypeInformation
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624,4634,4778,4779; StartTime=(Get-Date).AddDays(-30)} | Select-Object TimeCreated, Id, Message | Export-Csv C:\temp\rds-security.csv -NoTypeInformation
  1. Deduplicate the merged data twice: once on account name for a user count, once on client name or address for a device count. Do it across the whole window, not per day.
  2. Open Remote Desktop Licensing Manager on the licence server and read the installed CAL count and version, then run the per-user CAL usage report.
  3. Compare the two numbers for whichever mode your hosts are set to. The mode is set at Computer Configuration, Administrative Templates, Windows Components, Remote Desktop Services, Remote Desktop Session Host, Licensing.
  4. Buy the shortfall in the correct mode and version before the next audit, not after users start being refused.

Per-user CALs can be over-allocated: the licence server will keep issuing them past the number you own, in breach of the licensing agreement. Nothing in the software stops you being non-compliant, which is exactly why this count has to come from the logs.

If the logs and the licence server agree and you are within what you own, you are done. If they do not agree, the next section explains what each log actually counts and where the arithmetic goes wrong.

Why it happens

Remote Desktop Services CALs are not concurrent-use licences. They are assigned per user or per device, and the assignment is what you are counting, not simultaneous sessions. If forty people connect over a month and never more than ten at once, you need forty user CALs, not ten. That single misunderstanding is the most expensive one in RDS licensing, and it is the reason an audit built from a session monitor always comes out too low.

The two models behave differently, and Microsoft publishes the difference. A per-device CAL is physically assigned to each device and tracked by the licence server, which works even outside Active Directory; you may revoke up to twenty per cent of them; temporary CALs are issued on a device’s first sign-in and last ninety days; and they cannot be over-allocated. A per-user CAL is assigned to a user in Active Directory, cannot be tracked in a workgroup at all, cannot be revoked, and can be over-allocated in breach of the agreement. That last point is why a per-user estate can be badly short without a single error appearing anywhere.

Three logs carry the data and each answers a different question. The Local Session Manager operational log gives the cleanest session boundaries, because logon, disconnect, reconnect and logoff are recorded against the same session identifier. The Security log fills in the shape with logons, logoffs, reconnections and disconnections, and Remote Desktop sessions show there as logon type 10. The Remote Connection Manager operational log carries the source address, which is what a device count needs and what the other two do not give you.

There is one more constraint that catches people at upgrade time. An RDS CAL reaches a session host of its own version or older, never a newer one. Microsoft’s own example: 2022 CALs connect to a 2022 host or earlier, and cannot be used against a 2025 host. So the audit has two outputs, not one: how many, and of what version.

You counted concurrent sessions and bought to that

You have this one if Your CAL count matches the busiest hour of the day, and it came from a session monitor rather than from the logs.

  1. Rebuild the count from distinct users or distinct devices across a full month, not from a snapshot.
  2. Include everyone who connects at all, including occasional users, seasonal staff, contractors and the service desk.
  3. Treat peak concurrency as the minimum plausible answer and expect the real number to be considerably higher.

This is the single most expensive misunderstanding in RDS licensing, and it is almost always the reason a deployment turns out to be short.

Reconnections have inflated the numbers

You have this one if The session count is implausibly high next to headcount, and the same accounts appear repeatedly through the day.

  1. Deduplicate on the account name for a user count and on the client name or address for a device count.
  2. Work from the Local Session Manager log, where a session identifier lets you group a disconnect with its later reconnect.
  3. Sanity-check the result against payroll or the asset list before acting on it.

The device list is missing shared and roaming endpoints

You have this one if You are in per-device mode and the source addresses show far more distinct clients than you have desktops.

  1. Check whether people connect from home machines and personal laptops as well as office desktops. Each distinct device consumes a device CAL.
  2. If the pattern is several devices per person, price per-user against per-device and change mode deliberately rather than by accident.
  3. Watch for addresses behind a gateway or NAT collapsing several devices into one, which under-counts.

The licence server’s figures do not reflect reality

You have this one if The issued count is far below your log-derived count, or the per-user usage report is empty.

  1. Confirm per-user tracking is working. Per-user CALs are tracked against accounts in Active Directory, so if the licence server cannot write there the report understates consumption and proves nothing.
  2. In a workgroup deployment, stop looking for a user report at all: per-user CALs are not permitted there and only per-device applies.
  3. Check whether device CALs are still held by machines that were retired, which overstates consumption in the other direction.
  4. Reconcile both figures before deciding which to trust. They answer slightly different questions.

Some hosts were never in the audit

You have this one if Your numbers come from two hosts in a collection of several, or a standalone Session Host has been quietly serving one department for years.

  1. List every machine carrying the Remote Desktop Session Host role, including standalone servers outside any deployment.
  2. Collect the same logs from all of them before deduplicating, or the deduplication is meaningless.
  3. Point every host at one licence server so future counts come from a single place.

Full reference

Which log answers which question

Log Path What to take from it
Local Session Manager operational Applications and Services Logs, Microsoft, Windows, TerminalServices-LocalSessionManager, Operational Session boundaries against a single session identifier
Remote Connection Manager operational The same branch, TerminalServices-RemoteConnectionManager, Operational Account, domain and source address, which is what a device count needs
Security Windows Logs, Security Logon and logoff records; Remote Desktop sessions carry logon type 10
Gateway operational Applications and Services Logs, Microsoft, Windows, TerminalServices-Gateway, Operational Who arrived from outside, if sessions come through a gateway

Microsoft does not publish meanings for the Remote Desktop connection and session event numbers, so do not build an audit on a number you looked up. The security audit events are published and are safe to count on: a successful logon, a logoff, a session reconnected to a window station and a session disconnected from one. Everything else, take from the entry’s own text.

What the two models actually commit you to

Per device Per user
Assigned to A device, physically A user in Active Directory
Works in a workgroup Yes; this is the only permitted mode there No; user CALs cannot be tracked in a workgroup
Revocation Up to twenty per cent may be revoked None
Temporary CALs Issued on first sign-in, valid ninety days Not available
Over-allocation Not possible Possible, and in breach of the agreement

Read the last row twice. A per-user deployment that is fifty CALs short behaves exactly like one that is fully licensed. Nothing warns you, nothing refuses a connection, and the first sign is an audit. A per-device deployment that runs out stops issuing, which is unpleasant on the day and honest for the year.

Version, not just quantity

A CAL reaches a session host of its own version or older, and never a newer one. Microsoft’s published example is that 2022 CALs connect to a 2022 host or earlier but not to a 2025 host. So the audit has to record the Windows Server version of every Session Host as well as the head count. A collection being upgraded is the moment this bites: the hosts move, the CALs do not, and the licence server starts refusing on a Monday morning.

Setting and reading the mode

  • The licensing mode and the licence server list are set at Computer Configuration, Administrative Templates, Windows Components, Remote Desktop Services, Remote Desktop Session Host, Licensing.
  • Two policies matter there: Use the specified Remote Desktop license servers, and Set the Remote Desktop licensing mode.
  • Set both from one Group Policy object scoped to the collection, not per host. A rebuilt host that inherits neither will behave differently from its neighbours and skew the next audit.
  • In a workgroup deployment there is no choice to make: per-device is the only permitted mode.

Running the audit so it is worth running

  1. Raise the maximum size of the operational logs on every host now, before you need the history. A week of data captures the regulars and misses precisely the people who make your count wrong.
  2. Collect for at least a month, longer if you have seasonal or quarterly users.
  3. Collect from every host with the role, including standalone servers nobody lists on the architecture diagram.
  4. Merge, then deduplicate twice: once on account, once on client.
  5. Record the Windows Server version of each host alongside the counts.
  6. Reconcile with the licence server, and where the two disagree, work out which question each was answering before you trust either.

The administrative connection allowance

Windows Server includes an allowance of remote sessions for administering the server itself, separate from Remote Desktop Services. The number and the conditions attached to it come from your Windows Server licensing terms rather than from anything the software reports, so read those terms rather than a figure quoted in a forum. What is clear either way is the boundary: using those sessions to run applications or do ordinary work is not administration, and it is not covered by that allowance.

When a licence is the actual fix

If the honest count is higher than the CALs you own, that is a licensing shortfall and there is no technical fix for it. RDS User CALs are usually the right shape for a modern estate, because staff connect from a work desktop, a laptop and sometimes a home machine, and one user CAL covers all of them. Remember two published constraints when sizing: RDS CALs sit on top of Windows Server CALs, and the CAL version must be at least as new as the Windows Server version on your hosts. Send us the deduplicated user count from your audit together with the Windows Server version of each host, and we will confirm the shortfall and supply RDS User CAL 2025 packs to cover it rather than rounding up.

Every code this article covers

Code What it points at Source
Event ID 1149 Not published by Microsoft. It appears in the Remote Connection Manager operational log carrying the account, domain and source address, before the session itself exists not published by the vendor
Event ID 4778 A session was reconnected to a Window Station, which is why raw counts overstate the number of distinct sessions Microsoft Learn
Event ID 4779 A session was disconnected from a Window Station, so the session persists and can be reconnected later Microsoft Learn
Event ID 4624 An account was successfully logged on. Remote Desktop sessions carry logon type 10 Microsoft Learn
Event ID 4634 An account was logged off, closing the session a matching logon record opened Microsoft Learn
Event ID 23 Not published by Microsoft. It appears in the Local Session Manager operational log; pair it with the matching session start in the same log rather than relying on the number not published by the vendor

Confirm the fix worked

  1. The deduplicated user and device counts were built from every Session Host with the role, not a sample.
  2. The installed CAL count on the licence server meets or exceeds the count for the mode your hosts are actually set to.
  3. The CAL version on the licence server is at least as new as the Windows Server version of every host.
  4. The per-user CAL usage report reconciles with the log-derived figure, or you know why it cannot.
  5. A calendar reminder exists to repeat the audit before the next Windows Server upgrade.

Questions people ask about this

Do I need a CAL for every user, or only for the ones connected at once?

Every user, or every device, depending on your mode. RDS CALs are not concurrent-use licences. Forty people connecting over a month with never more than ten at once still needs forty user CALs.

Why did nothing warn us that we were short?

Because per-user CALs can be over-allocated. Microsoft documents that the licence server will keep issuing past the number you own, in breach of the agreement. Per-device CALs cannot be over-allocated, which is why a device estate finds out and a user estate does not.

Does an administrator connecting for maintenance need a CAL?

Windows Server includes an allowance of remote sessions for administering the server itself, and the number and conditions come from your Windows Server licensing terms. Using those sessions to run applications or do ordinary work is outside it.

How long should I audit for?

At least a month, longer if you have seasonal users. A week captures the regulars and misses exactly the people who make your count wrong.

We are moving to newer hosts. Do the CALs move with us?

Only forwards. A CAL reaches a session host of its own version or older, never a newer one, so 2022 CALs will not cover a 2025 host. Audit the version alongside the count before you upgrade, not after.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

License Error Event ID 4096 and 0x800705B4: integration services time out during VM tasks License Error Event ID 1177 and 1564: quorum is lost and the cluster service shuts down Free Fix Event ID 364 and 10032: WSUS cannot download update content to the server License Error Event ID 1511 and 1515: RDS users land in a temporary profile every logon
โ† Back to Knowledge Base