Good morning. I figured it was time for another post on Essentials. Some parts of this article also apply to Foundation edition.
Let’s start off with a little background on Essentials edition. Windows Server Essentials edition is designed for a small to medium sized business. It is a very good option for a small to medium sized business with less than 25 users/computers. Here are a few of the advantages to running Essentials.
- It is less expense than standard edition. Typically by $200-300.
- There are no additional CALs (Client Access Licenses) to purchase. Twenty five user CALs are included.
- Can be easily upgraded to standard edition with a single command.
- Client PC Backup is builtin. This feature automatically backs up client PCs to the server
- Anywhere access is available. This is a feature that was first introduced in SBS (Small Business Server) It allows a user to remotely access computers and file shares. It also allows the administrator to access the Dashboard from anywhere. Additionally the administrator can setup a SSTP (Secure Socket Tunneling Protocol) VPN (Virtual Private Network) via a wizard.
- Easy integration with Microsoft cloud solutions.
What’s the catch? There is always a catch. Windows Essentials edition is no exception. Below are the limitations imposed by running Essentials.
- The Essentials server MUST be a domain controller.
- The Essentials server must hold all the FSMO (Flexible Single Master Operation) roles. If you want to learn more about the FSMO roles here is a good article.
- Only one domain is permitted in the forest where the Windows Essentials edition server resides.
- No forest/domain trusts are permitted.
- The Remote Desktop Session Host role feature is not supported and typically will not function.
So what if the server is not a domain controller or violates one of the rules above? This is where the Server Infrastructure License Service comes into play. This service regularly checks the server to verify it is not violating the EULA (End User License Agreement). If a violation is found the server will shutdown every 27.67 days (27 days, 16 hours). Why Microsoft chose 27.67 days, I have no idea. Before it shuts down though it will warn you. The events will show up in the Server Infrastructure Licensing log.
The next question is how do we fix these errors. I have seen three causes for this issue. Let’s go over each one and how to fix it. After you believe you have fixed the issue, see the the next section for a way to confirm the issue is resolved.
- The first cause of this issue is also the most painful to fix. If the server is demoted, and put into a workgroup it will cause this issue. All checks will fail because the domain can no longer be contacted. Unfortunately the only fix is to reinstall Windows on the server.
- The second reason these errors might crop up is due to the check failing due to an issue with Active Directory. For instance, if the server is not advertising as a domain controller due a SYSVOL issue. If an Active Directory issue is suspected, the first place to start should be to run a dcdiag. Dcdiag will test the basic functionality and report any issues found. As stated above, if there are SYSVOL issues, then the server will likely fail the advertising test.
- The last reason I have seen on more than a few occasions is the following error:
Log Name: Microsoft-Windows-Server Infrastructure Licensing/Operational
Event ID: 2
Description:The Forest Trust Check in the Licensing component did not pass because error 0x80070008 occurred in function fe1 [YJBI].
Not enough storage is available to process this command.
This error seems to indicate that we are low on hard drive space. However this is not the case. This error is actually referring to a special pool in memory (RAM, Random Access Memory) called the heap. The heap is a finite size, regardless of how much RAM is in the system. Normally Windows will not experience a heap exhaustion, that is where this special pool of memory is completely depleted. However, if a program or driver is leaking memory, then the pool will eventually run out. In case you are wondering what a memory leak is, it occurs when a program or driver allocates memory, but does not free it when complete.
So in essence this error is caused by a malfunctioning program or driver. The good news is that every time I have seen this issue in Essentials or Foundation it was caused by a printer driver. There are 2 ways to fix this problem. The first way is to simply restart the printer spooler service. Restarting the printer spooler service unloads the printer drivers and frees all memory associated with them. This will temporarily eliminate the issue. A scheduled task could then be created to automatically do this on a regular basis. The optimal solution though is to find the problem driver and either remove or update it.
So to this point we have covered some of the pros and cons of running Essentials, what happens when the EULA is violated, and some common causes for the Server Infrastructure Licensing service shutting down the server. The last item I wanted to cover is how to force a new compliance check from the Server Infrastructure Licensing service. This process works for both Essentials and Foundation edition. This is useful if you are seeing compliance check errors, have taken measures to correct them, and now want to test if the issue is resolved. It is surprisingly easy to force a compliance check. Only one PowerShell command is required. Ensure you run PowerShell as administrator when running this command.
Stop-Process -ProcessName silsvc -Force
The above command forces the Server Infrastructure License service process to stop. The process will then immediately start again. The trick here is that the Server Infrastructure License does a compliance check every time it starts. You should see a compliance check within 2-3 minutes after the service stops.
Well, we covered a lot of ground with this post. If you have any questions, or any suggestions please add a comment below.
5 thoughts on “License compliance checking in Windows Essentials and Foundation”
A customer of mine was down the other morning. Long story short: a license compliance error like you described had shut down their Windows Server 2012 Essentials box. Luckily they powered it back on and all was well.
I’ve spent a lot of time trying to figure it out. Also lucky that I found this page. Their problem appears to be related to a printer driver too.
I forced a compliance check and saw that it failed. (There were a bunch of failed checks, but they didn’t start until about 4 days after they powered back on). So I “net stop spooler” and “net start spooler” and forced another check. THEY ALL PASSED!
Now I just gotta find what printing component is the culprit.
Thanks for your great article!
I’m so glad I found your article. I have been fighting this issue on a client’s server for 4 years now. About every 30 days this issue would happen, and restarting the server always fixed it for about 30 more days.
In my case, it wasn’t the print spooler causing the issue, but a different third party service. As soon as I restarted that service and forced the license check, it completed successfully. Since the software vendor isn’t interested in fixing their memory leak, I just created a batch file and scheduled it to restart the service once per week.
Thanks for posting your research!
On my 2019 Windows Essentials server I also had the ” Forest Trust Check in the Licensing component did not pass because error 0x80070008 occurred in function fe1 [YJBI]”. problem. Read several forums but could not find a solution until I read your article.
STop and start the print spooler and problem was over. Ofcourse the problem returns but scheduling the reset of the print spooler works for me for know.
Thank you very much for posting this solution
I am having the same issue and as most essential users are not advanced USERS I don’t know how to troubleshoot it. I followed the MS instructions https://docs.microsoft.com/en-us/windows-server-essentials/install/add-windows-server-essentials-as-a-member-server
and added it, but it shuts down weekly with error:
The process C:\Windows\system32\silsvc.exe (SERVER3) has initiated the shutdown of computer SERVER3 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Legacy API shutdown
The server shutdown issue is definitely an irritating one. As you have found, the system event log event showing why the server shutdown is not very useful. If you review the first picture in this article, of the event viewer, it shows the path down to the Server Infrastructure Service operational log. Look for errors in this log as to what is out of compliance. You must fix the component out of compliance to stop the server from shutting down. Your other option is pay for an upgraded license to give you more freedom with how the server is used.