Has anybody else ran into this problem where, when max licenses are reached, the server appears to kick everyone out and many people not able able to log back in for a period of 30-45 minutes despite licenses being available?
I have only ever seen before where the next person who wants to log in gets a message that max licenses are exceeded. I have never seen where that causes other people to then get booted out. This has happened to us twice now. We are on cloud. Yes I have opened 3 support cases, escalated, and emailed my CAM and everyone else at Epicor. Nothing but crickets as usual. So I am trying to figure out what can be causing this because its obviously very disruptive (essentially an hour of downtime out of our day and dozens of support cases to deal with).
What I know:
-I am tracking active licenses every 10 minutes so I know for a fact that its a true license limit and not runaway sessions
-There are a few people using more than one license but that is because we are multi-company and when they open a program in a second company in the client, it grabs another license. We don’t have anything crazy happening with license usage though
-When the problem starts, people first get server offline/retrying/503 messages.
-Then after refreshing they start getting the max license exceeded message. Without access to the server I don’t know how to figure out what is really going on but based on support tickets a majority of active users are unable to log in at this point, despite license tracking data showing we are below license max
-Eventually (30-45 minutes later) everyone is able to get back in and continue working
Yes I am looking at the user data by license type and we do have some people consuming multiple default user licenses because we are multi-company. When you open another program in a different company that pulls another license.
That picture above is what I understand is supposed to happen. Once you go into a new company, the EnterpriseProcessing “license” kicks in because you already have a DefaultUser in the initial company. If you have multiple DefaultUser sessions listed, then it looks like they aren’t accounting for access correctly.
Yes, it is increasing our used license by a few, like maybe 4-5 licenses. But the system should not be crashing when we run out of licenses regardless.
They made a lot of comments I don’t fully understand but posting them here in case anybody else wants to chime in.
Currently, the data collected via the Epicor Function LicenseTracking.LogActiveLicenses does not log expired (inactive) sessions. As a result, the current logic used by this function does not provide visibility into the potential of these reactivations. Additionally, the method used to calculate the number of active DefaultUser licenses is under reporting the actual usage.
The current approach would only be accurate if:
all DefaultUser sessions were logged in via an external browser instead of the Kinetic smart client.
OR
all DefaultUser sessions were associated with Kinetic userIDs that only had access to one company within user account security.
If there was a ACTIVE EnterpriseProcessing spawned from an existing DefaultUser session, that would count as an ACTIVE DefaultUser license even if the underlying DefaultUser session is not ACTIVE during sample period.
To accurately determine the number of Active DefaultUser User sessions at a moment in time:
One would want to use the Ice.BO.AdminLicensingSvc.GetLicense service. This is the API that gets called when retrieving Licensed Modules, CSF Modules, and User Licenses from the Company Configuration app within Kinetic. This takes into account the active EnterpriseProcessing sessions which do not use a separate user license type, but does count against the Active User count for the User License type that it was spawned from.
One would want to include Expired Default user sessions in the LicenseTracking.LogActiveLicenses function as well. Any session that is Expired could immediately be elevated to ACTIVE if the end user in question completes some action within their open Kinetic session.
One would want to use the Ice.BO.AdminLicensingSvc.GetLicense API to retrieve the actual active DefaultUser, DataCollection, etc user licenses in use at a moment in time and use that information when reacting to in use user licenses.
One may want to consider some proactive measure that terminates Kinetic sessions that have been Expired where it was Last Active more than X time span to reduce the potential of live but inactive DefaultUser sessions from becoming active in a short period of time. This would effectively require the end users who had sessions proactively terminated to log back into Kinetic if/when they need to access the system again.
The SessionID of the Sessions should be logged to UD39 as well which is the unique value associated with a given Session. The SessionID would allow for the possibility of investigating an issue associated with X session. Without the SessionID, any such investigation would not be possible.
I modified the function to capture the total active users as they suggested, I just still can’t grasp why counting the individual default users is not correct.
EnterpriseProcessing license would be pulled when your user sends a process to the task agent to be processed impersonated as them. If your user does not have a default license active, then the EnterpriseProcessing license would be counted.
Honestly, I don’t think this would happen very often for us where a task runs long enough to be reflected in the license counts when it is polled, but for a complete picture, you would have to include it.
The function I provided filters out expired sessions. Expired sessions should not be included in the license count returned by AdminLicensingSvc.GetLicense. If you need that information for whatever you are tracking, then modify the function to include them. I do like the idea of recording the session ID as well. Sounds like it would be good to have for what you are trying to diagnose.
At the end of the day, if it’s off by one or two users, I’m ok with that for my purposes. It’s really just to show the trend over time. This reporting was critical when I identified the problem with Elevated License Usage Between Version 2023.2.25 and 2023.2.26 last year
For enterprise processing, the scenario where a user would click print preview/submit, and then walk away, and then whatever they submitted takes more than 15 minutes to run, so that the enterprise processing task would be consuming a license even though the user session is inactive, would happen almost never.
Support says:
There were 46 LicenseTracking.LogActiveLicenses data points logged to UD39 where the sum of ACTIVE DefaultUser and EnterpriseProcessing licenses was at least 95.
NOTE: Based on the existing UD39 data/logging approach, the DefaultUserCount would be the lower bound and SumOfDefaultUserAndEnterpriseProcessingCount would be the upper bound of what the actual concurrent ACTIVE DefaultUser license count was at the given date and time.
Just continue to be absolutely amazing at Epicor’s unwillingness to just provide this info out of the box. I have wasted so many hours on this and its still clear as mud.
What’s odd is that for users who do not have allow multiple sessions checked, if they are in the browser, they can still open apps in multiple companies at once. But in the client they can’t.
TIL… yes it looks like it does use an EnterpriseProcessing license with multiple sessions in different companies. Still should just be the one default license consumed though