Overview
While attempting to work in Transaction Manager (integrated with Everest) or external order processing systems through the SDK API (e.g. EDI Order Processing, TrueCommerce, or eCommerce websites) customers have reported that certain core functions are failing and throwing the following error:
"The number of users that simultaneously access SDK cannot exceed the xx user(s) for this license xxx"
The xx
will generally be the number of users the customer has as part of their license.
When this happens Everest will stop sending orders to the external system for processing.
Solution
When the SDK is used by an external application, it logs in as if it were an Everest user and leaves the session in the system/database. If the external application is not logged out, then these sessions can add up and eventually exceed the number of licensed users, causing the error.
To resolve this, open SQL Server Management Studio on the Everest database server and execute the following steps:
1. Open SQL Server Management Studio on the server system.
2. In the left Object Explorer window, use the navigation tree to find the EVEREST_SYSTEM database
3. Right-click on the database name and select New Query.
4. Execute the following query:
SELECT * FROM EVEREST_SPM WHERE UID IN (SELECT UID FROM EVEREST_SPM WHERE ATTRIBUTE = 23 AND VALUE = 7)
5. Once the results are shown, execute the following query:
DELETE FROM EVEREST_SPM WHERE UID IN (SELECT UID FROM EVEREST_SPM WHERE ATTRIBUTE = 23 AND VALUE = 7)
6. Check the SQL Server Agent service is running and there is a job named EVEREST DEMON. This SQL Server job automatically executes the stored procedure called EVEREST_DEMON which clears the Everest semaphore table (EVEREST_SPM) every 15 minutes. You can check this by connecting to your database instance through SQL Server Management Studio as shown:
The green play icon as highlighted above confirms the SQL Server Agent service is running. Should it not be running, right-click and select the Start option as shown below:
The following SQL script can be customized (see inline script comment) and appended to the EVEREST_DEMON stored procedure to remove specific named SDK user sessions that are open longer than a day:
delete from everest_spm where uid in (
select uid from EVEREST_SPM with (nolock)
where attribute = 23 and value = 7
and uid in (
select uid from EVEREST_SPM
where attribute = 16
and value < dateadd(day, -1, getdate())
)
and uid in (
select uid from EVEREST_SPM
where attribute = 3
and value = 'apiuser' #Note: replace this with the SDK user created for your environment
)
)
Testing
Validate the fix by attempting to work within Transaction Manager or processing an API request. The process that was throwing the error before should now work as intended without the error message.
Comments
0 comments
Please sign in to leave a comment.