Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
I'm trying to delete named CALs via an API for users that have left the business but struggling.
Fully aware of the license agreement that licenses can't be reallocated around the business whilst the employee still works here. To be clear, these licenses are assigned to people who have left the business so I am fully with the terms of agreement to reassign them (This always seems to be the response when I've been searching the community on this subject).
After several days, I have a list of Named User CALS along with a list of all users in Active Directory. I've compared the lists and now have my list of Named User CALS that are not in AD and therefore left the business.
I am using QV12.10 and my list of leavers is stored in a variable list called resultsLeavers. I've only started looking at C# language three weeks ago so very much at basic level!
Any help out there? Somethings I've read state that the removal of user CALS in QV12 is not available via an API.
If all else fails, at least I have the list of leavers and we can manually go through and delete them. I just wanted an automated monthly process to make it easier.
Thanks
Hello ,
Sorry for the short answer.
1. Using Google chrome you can capture the function via the developers tools
2. capture the delete via Network / Headers (meaning you can capture the Delete command in the Network> Headers section of the developer tool )
Example of a deletion of an assigned Name Cal:
< update mark="c128bfa3-e6e2-4499-9531-643b422e94c4" stamp="637021808117353903" csrf="TilsJSF5Ik1OOEVDRGp6" cookie="true" scope="EntLicenses" ident="63d9443d-442e-4615-ae4d-2c3c91766f85" kind="EntLicenses" >< set name="EntLicenses.Properties.CalInfo.AssignedList.List" cell="1:Delete" / >< /update >
Note: the trick will be getting the script to pull in the list of names
Please note the following license information:
https://www.qlik.com/us/-/media/files/legal/license-agreements/qlikview/qlikview-license-metrics-en....
The section in question is the following:
C. Identified Users
To use a Named User CAL or Document CAL, the user must be identified via an authenticated user name (Windows Active
Directory or through a ticket exchange between the web server and QlikView Server). The two methods of identification cannot be mixed on the same QlikView Server. An IP address is not a valid form of user identification. Note that the user name identification requires Windows authentication on AJAX clients, since machine name identification cannot be used for these clients.
Named and Document CALs are assigned to an identified user and may not be transferred to another user unless the transfer is due to a i) termination of employment, or ii) a transfer of the user to a new business unit or group resulting in no access to the Qlik Software. When a Named User or Document CAL is transferred, there is a 7-day quarantine before the CAL can be used by another user.
As you can see, the only times you are allowed to remove Named or Document CAL assignments is if the users have left the company or changed roles, removing users from these CAL types just because they have not used the product for a period of time is a violation of the license agreement...
Hopefully that helps
Keith, your best bet is going to be to look at the code in the QMC pages and the associated JavaScripts doing the actions, that is the only sure way of which I know for you to try to figure things out and write your own code at that point.
Regards,
Brett
Hello Use the API call found via this information listed below.
1. Using Google chrome you can capture the function via the developers tools
2. capture the delete via Network / Headers
Note: Qlikview 12.10 track is going end of support in November 2019
Resources:
https://www.mkyong.com/computer-tips/how-to-view-http-headers-in-google-chrome/
Example of a deletion of an assigned Name Cal:
Hi Ray,
I'm not sure that's answering my questions. I'm aware of the Qlik site showing the properties for the QMS API but I can't get the right command to update the user list or remove individuals.
Not sure what you mean by point 2?
Was there meant to be some text after your final line?
Hello ,
Sorry for the short answer.
1. Using Google chrome you can capture the function via the developers tools
2. capture the delete via Network / Headers (meaning you can capture the Delete command in the Network> Headers section of the developer tool )
Example of a deletion of an assigned Name Cal:
< update mark="c128bfa3-e6e2-4499-9531-643b422e94c4" stamp="637021808117353903" csrf="TilsJSF5Ik1OOEVDRGp6" cookie="true" scope="EntLicenses" ident="63d9443d-442e-4615-ae4d-2c3c91766f85" kind="EntLicenses" >< set name="EntLicenses.Properties.CalInfo.AssignedList.List" cell="1:Delete" / >< /update >
Note: the trick will be getting the script to pull in the list of names
Please note the following license information:
https://www.qlik.com/us/-/media/files/legal/license-agreements/qlikview/qlikview-license-metrics-en....
The section in question is the following:
C. Identified Users
To use a Named User CAL or Document CAL, the user must be identified via an authenticated user name (Windows Active
Directory or through a ticket exchange between the web server and QlikView Server). The two methods of identification cannot be mixed on the same QlikView Server. An IP address is not a valid form of user identification. Note that the user name identification requires Windows authentication on AJAX clients, since machine name identification cannot be used for these clients.
Named and Document CALs are assigned to an identified user and may not be transferred to another user unless the transfer is due to a i) termination of employment, or ii) a transfer of the user to a new business unit or group resulting in no access to the Qlik Software. When a Named User or Document CAL is transferred, there is a 7-day quarantine before the CAL can be used by another user.
As you can see, the only times you are allowed to remove Named or Document CAL assignments is if the users have left the company or changed roles, removing users from these CAL types just because they have not used the product for a period of time is a violation of the license agreement...
Hopefully that helps
Keith, your best bet is going to be to look at the code in the QMC pages and the associated JavaScripts doing the actions, that is the only sure way of which I know for you to try to figure things out and write your own code at that point.
Regards,
Brett
Thanks Brett.
I think it's clear that this task is way beyond my skill set. I don't have any knowledge of Java or C# so it feels like a huge amount of effort for little benefit. I think we'll need to revert to our manual process.
Thank anyway
Hi All,
I'm heartened to see that this is a relatively new thread - since I'm having the same issue.
Again, as has been noted, I'll stress that our requirement is to remove Document CALs which have previously been automatically assigned to a named user who has now left the business.
I have two different examples of C# code - one from an original post by a Qlik author, and the latest from a Qlik Knowedge Article (https://support.qlik.com/articles/000017163 ).
In each case, all of the supporting code - to connect and collect document and CAL details from the server - works correctly. However, the final API call to 'save' the changes to the Document Meta Data appears to have no effect. That is, when I review the Document CALs tab in QMC after the code is executed, the Document CAL has neither been removed nor quarantined.
I did find a reference on Community suggesting that there was a bug in the QV Server - but I can't find this again! I will keep looking, and I'll check the Release Notes for versions after 12.20, to see if I can find anything.
In the meantime, any further support or suggestions would be appreciated.
Best Regards
Neil
There is a PowerShell example here, it should be easier than doing it via C# or Java for a beginner:
Hi @Damien_V ,
Many thanks for the reference - I will take a look at this, but my feeling is that it is not the implementation method that is the issue. The issue is that the Server does not seem to respond to the API call as expected. Remember that I'm using example code provided, so it is not really a case of experience.
I will try to replicate this using the Powershell approach and post the results.
Best Regards
Neil