Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Only at Qlik Connect! Guest keynote Jesse Cole shares his secrets for daring to be different. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

QMS API Bug

Hello,

I'm trying to add a Document Administrators via the QMS API with following code, which works if I add only 1 user.

                $myname="MyReport";

                $myuser='user1,user2'; //to be changed

                //var_dump($this->getQVSSettings()->Folders->UserDocumentAdministrators); //print possible properties

                $tmp=0;

                foreach (getArray($this->getQVSSettings()->Folders->UserDocumentMounts->QVSMount) as $mountedFolder)

                {

                    //print_r("___ ".$mountedFolder->Name."___ ");

                    $myfolderID=$mountedFolder->FolderID;

                    //var_dump($qlikviewUserDocumentFoldersTmp[0]->Administrators=array('user1','user2'));

                    if ($mountedFolder->Name == $myname)

                    {

                        //print_r("Mounted Folder name: ".$mountedFolder->Name);

                        //print_r("Folder ID: ".$myfolderID);

                        $myqlikviewQVSSettings = new stdClass();

                        $myqlikviewQVSSettings = $this->client->GetQVSSettings(array('qvsID' => $this->qlikviewServerInfo->ServiceInfo->ID, 'scope' => 'Logging'))->GetQVSSettingsResult;

                        $myqlikviewQVSSettings->Cluster = $this->getQVSSettings()->Cluster;

                        $myqlikviewQVSSettings->Distribution =$this->getQVSSettings()->Distribution;

                        $myqlikviewQVSSettings->Documents = $this->getQVSSettings()->Documents;

                        $myqlikviewQVSSettings->Folders = $this->getQVSSettings()->Folders;

                        foreach (getArray($myqlikviewQVSSettings->Folders->UserDocumentAdministrators->QVSFolderAdministrator) as $OneAdminFolder)

                        {

                            if($OneAdminFolder->FolderID==$myfolderID)

                               {

                                   print_r("Found correct folder ID : ".$OneAdminFolder->FolderID);

                                   $OneAdminFolder->UserName=$myuser;

                               }

                        }

                        $myqlikviewQVSSettings->General = $this->getQVSSettings()->General;

                        $myqlikviewQVSSettings->Logging = $this->getQVSSettings()->Logging;

                        $myqlikviewQVSSettings->Performance=$this->getQVSSettings()->Performance;

                        $myqlikviewQVSSettings->QVSID = $this->getQVSSettings()->QVSID;

                        $myqlikviewQVSSettings->Scope=$this->getQVSSettings()->Scope;

                        $myqlikviewQVSSettings->Security=$this->getQVSSettings()->Security;

                        $this->client->SaveQVSSettings(array('qvsSettings' => $myqlikviewQVSSettings)); //save the new QVS Settings into the QMC

                    }

                    $tmp++;

                }

               

Everything goes nice, no error. I open now my QMC and check at http://my-ip:4780/qmc/SystemSetup.htm# and want to check if it was done, nothing is there, but it tells me that 1 user is there. No, I didn't remove the user on the picture ....

Let's change a bit and put $myuser='user1';

This works great, only if there is already an administrator for a document folder, then I can assign him an user and it removes the old administrator from the document folder and sets the new one instead.

My question, how can I add a second user as document administrator without erasing the previous one(is it even possible) and why can I add : $myuser='user1,user2'; and it doesn't returns me an error?

Yours,

Mike

Labels (4)
1 Reply
s_uhlig
Partner - Creator
Partner - Creator

Hi Micael,

with C# the following  code-snippet adds "myuser" to all folders and works as expected.

using (QlikView.QMSClient c = new QlikView.QMSClient())

{

   

    QlikView.ServiceInfo server = c.GetServices(QlikView.ServiceTypes.QlikViewServer).First();

               

    QlikView.QVSSettings settings = c.GetQVSSettings(server.ID, QlikView.QVSSettingsScope.Folders);

    QlikView.QVSSettings.QVSFolders folders = settings.Folders;

                  

    c.GetUserDocumentFolders(server.ID,QlikView.DocumentFolderScope.All).ForEach(folder => {

        QlikView.QVSFolderAdministrator newadmin = new QlikView.QVSFolderAdministrator();

        newadmin.UserName = "myuser"

        newadmin.FolderType = QlikView.QVSUserDocumentFolderType.Root; //this is meaningless, but it's required for serialisation

        newadmin.FolderID = folder.ID;

        folders.UserDocumentAdministrators.Add(newadmin);

    });                   

                   

                   

    c.SaveQVSSettings(settings);

}

Therefore, I don't think it's a bug.

Maybe you could adapt it to your needs.

Regards Sven