Crashing on max licenses reached

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

Any ideas what could be going on here?

7 Likes

Does this actually consume one of your pool? I think the type changes and it is based on the DefaultUser license?

image

3 Likes

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.

That may be true, but its not the main issue.

True, but it would affect your license counts if you are getting duplicate assignments.

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.

2 Likes

So I finally heard back from support on this and according to them, this is not the right way to calculate the number of licenses being used:
https://www.epiusers.help/t/log-active-licenses-function/125986

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.

5 Likes

I agree with their comments. I did not know this.
All of our users are using the browser, so we have never had problems with this approach.

1 Like

I don’t understand it, can you explain it?

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.

1 Like

Would be interesting to capture both methods and see if/when they vary.

I am capturing both.

2 Likes

I’ll have to modify our copy of @mbayley’s function too. Just too busy today with post 25.1 upgrade stuff.

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

1 Like

I did add the session ID as well.

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.

This simply doesn’t make sense to me.

1 Like

I was under the influence that EntepriseProcessing licenses were also used when users had more than one Site or Company open. Is that not the case?

2 Likes

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.

2 Likes

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.

2 Likes

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

2 Likes