Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
tomoko_sano
Partner - Contributor
Partner - Contributor

QMS API: DocumentMetaData.Authorization.Access

Hi,

We're runnnig QlikView Server 12.10 SR7.

In QMS,

Documents > User Documents > Authorization > Users Authorized to Access Document

We can add Named Users to access documets.

QMS.JPG

I want to execute the above process using QMSAPI, but it does not work.

To that end I have used the following script.

// Connect to the QMS API and handle the Service Key

QMSClient Client;

string QMS = "http://localhost:4799/QMS/Service";

Client = new QMSClient("BasicHttpBinding_IQMS", QMS);

string key = Client.GetTimeLimitedServiceKey();

ServiceKeyClientMessageInspector.ServiceKey = key;

// Create the ServiceInfo object so we can look at the settings of the QlikView Server

ServiceInfo[] MyQVS = Client.GetServices(ServiceTypes.QlikViewServer);

DocumentNode[] allDocs = Client.GetUserDocuments(MyQVS[0].ID);

DocumentMetaData Meta;

string targetDocument = "Document01.qvw";

for (int i = 0; i < allDocs.Length; i++)

{

    Console.WriteLine("documentName=" + allDocs.Name);

    if (allDocs.Name == targetDocument)

    {

        //Get the meta data for the current document

        Meta = Client.GetDocumentMetaData(allDocs, DocumentMetaDataScope.Authorization);

        //Extract the current list of Document CALs

        List<DocumentAccessEntry> documentAccess = Meta.Authorization.Access.ToList();

        documentAccess.Add(new DocumentAccessEntry { UserName = "AddUser01" });

        Client.SaveDocumentMetaData(Meta);

        //List of CALs

        for (int j = 0; j < documentAccess.Count; j++)

        {

            Console.WriteLine("  documentAccess UserName=" + documentAccess.UserName);

        }

    }

}

Running this script will get a list of documents and users.

For example, It is like this:

documentName=Document01.qvw

  documentAccess UserName=User01

  documentAccess UserName=User02

  documentAccess UserName=AddUser01

documentName=Document02.qvw

  documentAccess UserName=User01

documentName=Document03.qvw

  documentAccess UserName=User01

  documentAccess UserName=User03

From the output of the console, the user seems to be added, but it is not actually registered.

How can I use QMSAPI to add Users Authorized to Access Document?

Or can not we do that using QMSAPI?

0 Replies