Remove License users for a specific product.

on my AS/400, i want to reduce the Usage count for a specific Product (WRKLICINF). For this, I have to delete some License users. A lot of this as has been deteted ( DLTUSRPRF) but the user is still registred as License User.
I tried to use the QLZARLS API but nothing happend.

Have anyone an idea:
- how to reduce the Usage count value for a product using "normal" AS/400 commands ?
- an example of a correct usage auf the QLZARLS API (if it could be a possible solution)

Patrick:
I haven't needed to create *KEYED/*REGISTERED licenses, so I can't be certain. However, I haven't seen any documentation that indicates that *REGISTERED is handled differently from *CONCURRENT.

For one of your own products? or is this an attempt to release a license that was requested for an IBM or 3rd-party product?

If you didn't code the initial call to the associated Request License (QLZAREQ) API, you might not be able to code the appropriate Release. The Request and Release must match. The "License user handle" would be a critical element for example. Multiple requests can be made from a single user.

Before anything else, be aware that IBM's documentation for the Software Product APIs has many errors. These are not APIs that are used by many programmers, so there haven't been a lot of people reporting errors. Much of the documentation hasn't changed since the APIs were first made public.

And IBM itself doesn't actually use the APIs directly much -- like many companies who package products, IBM uses Systems Manager or similar to do the work. So, their support staff isn't familiar with the APIs. That can make support take a lot more time than expected.

If you haven't looked at Systems Manager, I recommend that you read through the product manual. Not to learn how to use the product, but because it teaches a lot about how products can be packaged and distributed.

With Systems Manager being important documentation, the API documentation has continued to suffer. In addition to actual errors, the documentation is inadequate in showing how the APIs and the values passed into and returned from the APIs should be used. That causes a lot of guesswork.

What that means is that I will be guessing too. I've done enough with the APIs to know a lot of the problems, but I haven't tried everything. With that in mind...

Without seeing the License Request, there might be a number of possibilities. The first question would simply be... Are you getting an error returned? You don't indicate any.

Beyond that, the first thing I see is that you have this line:

C MOVEL'V1 ' #REL

I haven't tried that, so this is a guess. The documentation states : "The release level must be a valid special value, or the release level must be in the format VxRyMz." I suspect that you defined your license term to be for the entire Version 1. I have created licenses by version, but I have always made my license requests specifically for the full VRM or for the allowed special value of '*ONLY'.

The first suggestion would be to change your code to always specify '*ONLY' unless you expect to have multiple releases on the same system at one time. If you can't use '*ONLY' then try to specify the full VxRyMz of your product.

You also show this:

Usage type . . . . . . . . . : *REGISTERED

The display then shows only the <5=Display Detail> option. It doesn't show an option to release licenses through WRKLICINF. That implies that you created your license information as [0=A use of the license cannot be released with the WRKLICINF command] for the "Allow a license to be released" attribute. That's also something I haven't tried, but it might be significant.

Next, you didn't initialize your BYTPRV field in the ERROR DS. That will make it tough to know what errors might be returned.

Finally, this is purely a suggestion... You coded your program in RPG/400. I would make sure that it was coded in RPG IV and probably ILE RPG. The APIs should work the same, but there are too many documentation bugs and you will want to create re-usable procedures for all of your license handling. You won't want to be making external calls for long. And minor differences can make trouble. It'll go better if all such coding stays in one location that isn't external.

CPF9E11 indicates that other possible problems would be noted in the joblog or there was a problem in the license itself. Without knowing if other messages were returned, the CPF9E14 would say that the original license request had a handle assigned that also needs to be supplied here.

I haven't needed to create *KEYED/*REGISTERED licenses, so I can't be certain. However, I haven't seen any documentation that indicates that *REGISTERED is handled differently from *CONCURRENT. That is, in order for a user to gain a license, the product must call the QLZAREQ API for that user.

You show that there are users who have been granted license requests and you are trying to release them. The QLZAREQ API would have been called when the requests were originally granted. The call to QLZARLS must match the original call to QLZAREQ. You won't need QLZAREQ in your short program, but you probably need to know how the original QLZAREQ calls were made. For example, if the original calls assigned handles, you must specify the same handles to grant the releases.

Are you unable to connect or configure Hotmail email account in Microsoft Outlook 2010, 2007? Or Outlook.com emails are not downloading to Outlook? Lets’ see the problem and resolve Outlook Connector error syncing folder hierarchy (0x8004102A).

For cloud, the “train has left the station” and in the Microsoft ERP & CRM world, that means the next generation of enterprise software from Microsoft is here: Dynamics 365 is Microsoft’s new integrated business solution that unifies CRM and ERP fun…

This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg).
If you're looking for how to monitor bandwidth using netflow or packet s…

This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…