<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article QMS API remove a Named CAL in Official Support Articles</title>
    <link>https://community.qlik.com/t5/Official-Support-Articles/QMS-API-remove-a-Named-CAL/ta-p/1714108</link>
    <description>&lt;P&gt;The below is an example on how to use the QMS API to remove Named CALs.&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;Modifying the QlikView CAL assignments outside of the license agreement is considered a license breach. Ensure that modifications are done within the agreed license terms and conditions.&lt;/STRONG&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;The examples are provided &lt;STRONG&gt;AS IS&lt;/STRONG&gt;&amp;nbsp;and no support or customization can be provided by Qlik Support.&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;&amp;nbsp;Environment:&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;LI-PRODUCT title="QlikView" id="qlikView"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="qlik-migrated-tkb-headings"&gt;Resolution:&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;For Named User CAL:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;PRE class="ckeditor_codeblock"&gt;{
ServiceInfo[] QVS = apiClient.GetServices(ServiceTypes.QlikViewServer);
CALConfiguration CALConfig = apiClient.GetCALConfiguration(QVS[0].ID, CALConfigurationScope.NamedCALs);
CALConfig.NamedCALs.RemovedAssignedCALs.Add(NamedCalToBeRemoved)

CALConfig.NamedCALs.AssignedCALs = CALConfig.NamedCALs.AssignedCALs(AllCalsExceptNamedCalToBeRemoved)
apiClient.SaveCALConfiguration(CALConfig);
}&lt;/PRE&gt;
&lt;H5&gt;&amp;nbsp;&lt;/H5&gt;
&lt;H5&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;For Named Doc CAL:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;DIV&gt;
&lt;PRE class="ckeditor_codeblock"&gt;{
metaData.Licensing.RemovedAssignedCALs.Add(c);
metaData.Licensing.AssignedCALs.Remove(c)

backendClient.SaveDocumentMetaData(metaData);
}
catch (Exception ex)
{
Console.WriteLine("Removal failed. Reason: {0}",ex.Message);
}&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Attached is an example VBS file, and an example C# solution. To&amp;nbsp;access the attachments, log on to the Qlik Support portal. This is provided as-is as an example, and should not be used in Production environments.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H3&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;With PowerShell&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;A Powershell script to remove a named User CAL:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;$url = "http://qlikserver1.domain.local:4799/QMS/Service"
 
function GetServiceKey
{
   param(
     [string]$url
   ) 
    $service = New-WebServiceProxy -Uri $url -Namespace QlikViewServer -UseDefaultCredential
    $serviceKey = $service.GetTimeLimitedServiceKey()
    return $serviceKey
}

$hdrs = @{}
$hdrs.Add("SOAPACTION","http://ws.qliktech.com/QMS/12/2/IQMS2/GetServices")
$hdrs.Add("Content-Type", "text/xml;charset=utf-8")
$hdrs.Add('X-Service-Key',$(GetServiceKey -url $url))

$body = @{}
$body = '&amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://ws.qliktech.com/QMS/12/2/"&amp;gt;
   &amp;lt;soapenv:Header/&amp;gt;
   &amp;lt;soapenv:Body&amp;gt;
      &amp;lt;ns:GetServices&amp;gt;
         &amp;lt;ns:serviceTypes&amp;gt;QlikViewServer&amp;lt;/ns:serviceTypes&amp;gt;
      &amp;lt;/ns:GetServices&amp;gt;
   &amp;lt;/soapenv:Body&amp;gt;
&amp;lt;/soapenv:Envelope&amp;gt;'

Write-host "Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $($hdrs.Values)"
$res = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $hdrs

#
[xml]$myXml = $res.Content
$QVSServerID = $myXml.Envelope.Body.GetServicesResponse.GetServicesResult.ServiceInfo.ID
$QVSServerID

$body = @{}
$body = '&amp;lt;s:Envelope
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;
    &amp;lt;s:Body&amp;gt;
        &amp;lt;SaveCALConfiguration
            xmlns="http://ws.qliktech.com/QMS/12/2/"&amp;gt;
            &amp;lt;calConfiguration
                xmlns:a="http://schemas.datacontract.org/2004/07/PIX.QMSAPI.DataObjects.CALs"
                xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&amp;gt;
                &amp;lt;a:DocumentCALs
                    i:nil="true"/&amp;gt;
                &amp;lt;a:NamedCALs&amp;gt;
                    &amp;lt;a:AllowDynamicAssignment&amp;gt;
                        true
                        &amp;lt;/a:AllowDynamicAssignment&amp;gt;
                    &amp;lt;a:AllowLicenseLease&amp;gt;
                        true
                        &amp;lt;/a:AllowLicenseLease&amp;gt;
                    &amp;lt;a:Assigned&amp;gt;
                        2
                        &amp;lt;/a:Assigned&amp;gt;
                    &amp;lt;a:AssignedCALs&amp;gt;
                        &amp;lt;a:AssignedNamedCAL&amp;gt;
                            &amp;lt;a:UserName&amp;gt;DOMAIN\ADMINISTRATOR&amp;lt;/a:UserName&amp;gt;
                            &amp;lt;/a:AssignedNamedCAL&amp;gt;
                        &amp;lt;a:AssignedNamedCAL&amp;gt;
                            &amp;lt;a:UserName&amp;gt;DOMAIN\USER2&amp;lt;/a:UserName&amp;gt;
                            &amp;lt;/a:AssignedNamedCAL&amp;gt;
                        &amp;lt;/a:AssignedCALs&amp;gt;
                        &amp;lt;a:IdentificationMode&amp;gt;UserName&amp;lt;/a:IdentificationMode&amp;gt;
                    &amp;lt;a:InLicense&amp;gt;
                        5
                        &amp;lt;/a:InLicense&amp;gt;
                    &amp;lt;a:LeasedCALs&amp;gt;
                        &amp;lt;a:LeasedNamedCAL&amp;gt;
                            &amp;lt;/a:LeasedNamedCAL&amp;gt;
                        &amp;lt;/a:LeasedCALs&amp;gt;
                    &amp;lt;a:Limit&amp;gt;
                        5
                        &amp;lt;/a:Limit&amp;gt;
                    &amp;lt;a:RemovedAssignedCALs&amp;gt;
                    &amp;lt;a:AssignedNamedCAL&amp;gt;
                            &amp;lt;a:UserName&amp;gt;DOMAIN\USER1&amp;lt;/a:UserName&amp;gt;
                            &amp;lt;/a:AssignedNamedCAL&amp;gt;
                        &amp;lt;/a:RemovedAssignedCALs&amp;gt;
                    &amp;lt;/a:NamedCALs&amp;gt;
                &amp;lt;a:QVSID&amp;gt;'
            $body = $body + $QVSServerID
            $body = $body + '&amp;lt;/a:QVSID&amp;gt;
            &amp;lt;a:Scope&amp;gt;NamedCALs&amp;lt;/a:Scope&amp;gt;
          &amp;lt;/calConfiguration&amp;gt;
      &amp;lt;/SaveCALConfiguration&amp;gt;
   &amp;lt;/s:Body&amp;gt;
&amp;lt;/s:Envelope&amp;gt;'

$hdrs = @{}
$hdrs.Add("SOAPACTION","http://ws.qliktech.com/QMS/12/2/IQMS2/SaveCALConfiguration")
$hdrs.Add("Content-Type", "text/xml;charset=utf-8")
$hdrs.Add('X-Service-Key',$(GetServiceKey -url $url))
$res = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $hdrs

#
$res.content
[xml]$myXml = $res.Content &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Both Named User CALs that you want to keep and the ones you want to remove must be specified.&lt;/P&gt;
&lt;P&gt;If you are unsure of the full list of Named User CALs currently assigned, you can request it with the GetCALConfiguration API call, see below:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;$url = "http://qlikserver1.domain.local:4799/QMS/Service"
 
function GetServiceKey
{
   param(
     [string]$url
   ) 
    $service = New-WebServiceProxy -Uri $url -Namespace QlikViewServer -UseDefaultCredential
    $serviceKey = $service.GetTimeLimitedServiceKey()
    return $serviceKey
}

$hdrs = @{}
$hdrs.Add("SOAPACTION","http://ws.qliktech.com/QMS/12/2/IQMS2/GetServices")
$hdrs.Add("Content-Type", "text/xml;charset=utf-8")
$hdrs.Add('X-Service-Key',$(GetServiceKey -url $url))

$body = @{}
$body = '&amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://ws.qliktech.com/QMS/12/2/"&amp;gt;
   &amp;lt;soapenv:Header/&amp;gt;
   &amp;lt;soapenv:Body&amp;gt;
      &amp;lt;ns:GetServices&amp;gt;
         &amp;lt;ns:serviceTypes&amp;gt;QlikViewServer&amp;lt;/ns:serviceTypes&amp;gt;
      &amp;lt;/ns:GetServices&amp;gt;
   &amp;lt;/soapenv:Body&amp;gt;
&amp;lt;/soapenv:Envelope&amp;gt;'

Write-host "Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $($hdrs.Values)"
$res = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $hdrs

#
[xml]$myXml = $res.Content
$QVSServerID = $myXml.Envelope.Body.GetServicesResponse.GetServicesResult.ServiceInfo.ID
$QVSServerID

$body = @{}
$body = '&amp;lt;s:Envelope
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;
    &amp;lt;s:Body&amp;gt;
        &amp;lt;GetCALConfiguration
            xmlns="http://ws.qliktech.com/QMS/12/2/"&amp;gt;
            &amp;lt;qvsID&amp;gt;'
            $body = $body + $QVSServerID
            $body = $body + '&amp;lt;/qvsID&amp;gt;
            &amp;lt;scope&amp;gt;NamedCALs&amp;lt;/scope&amp;gt;
            &amp;lt;/GetCALConfiguration&amp;gt;
        &amp;lt;/s:Body&amp;gt;
    &amp;lt;/s:Envelope&amp;gt;'

$hdrs = @{}
$hdrs.Add("SOAPACTION","http://ws.qliktech.com/QMS/12/2/IQMS2/GetCALConfiguration")
$hdrs.Add("Content-Type", "text/xml;charset=utf-8")
$hdrs.Add('X-Service-Key',$(GetServiceKey -url $url))
$res = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $hdrs

#
$res.content
[xml]$myXml = $res.Content&lt;/LI-CODE&gt;</description>
    <pubDate>Tue, 06 Jul 2021 12:43:12 GMT</pubDate>
    <dc:creator>Sonja_Bauernfeind</dc:creator>
    <dc:date>2021-07-06T12:43:12Z</dc:date>
    <item>
      <title>QMS API remove a Named CAL</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/QMS-API-remove-a-Named-CAL/ta-p/1714108</link>
      <description>&lt;P&gt;The below is an example on how to use the QMS API to remove Named CALs.&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;Modifying the QlikView CAL assignments outside of the license agreement is considered a license breach. Ensure that modifications are done within the agreed license terms and conditions.&lt;/STRONG&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;The examples are provided &lt;STRONG&gt;AS IS&lt;/STRONG&gt;&amp;nbsp;and no support or customization can be provided by Qlik Support.&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;&amp;nbsp;Environment:&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;LI-PRODUCT title="QlikView" id="qlikView"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 class="qlik-migrated-tkb-headings"&gt;Resolution:&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;For Named User CAL:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;PRE class="ckeditor_codeblock"&gt;{
ServiceInfo[] QVS = apiClient.GetServices(ServiceTypes.QlikViewServer);
CALConfiguration CALConfig = apiClient.GetCALConfiguration(QVS[0].ID, CALConfigurationScope.NamedCALs);
CALConfig.NamedCALs.RemovedAssignedCALs.Add(NamedCalToBeRemoved)

CALConfig.NamedCALs.AssignedCALs = CALConfig.NamedCALs.AssignedCALs(AllCalsExceptNamedCalToBeRemoved)
apiClient.SaveCALConfiguration(CALConfig);
}&lt;/PRE&gt;
&lt;H5&gt;&amp;nbsp;&lt;/H5&gt;
&lt;H5&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;For Named Doc CAL:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H5&gt;
&lt;DIV&gt;
&lt;PRE class="ckeditor_codeblock"&gt;{
metaData.Licensing.RemovedAssignedCALs.Add(c);
metaData.Licensing.AssignedCALs.Remove(c)

backendClient.SaveDocumentMetaData(metaData);
}
catch (Exception ex)
{
Console.WriteLine("Removal failed. Reason: {0}",ex.Message);
}&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Attached is an example VBS file, and an example C# solution. To&amp;nbsp;access the attachments, log on to the Qlik Support portal. This is provided as-is as an example, and should not be used in Production environments.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H3&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;With PowerShell&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;A Powershell script to remove a named User CAL:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;$url = "http://qlikserver1.domain.local:4799/QMS/Service"
 
function GetServiceKey
{
   param(
     [string]$url
   ) 
    $service = New-WebServiceProxy -Uri $url -Namespace QlikViewServer -UseDefaultCredential
    $serviceKey = $service.GetTimeLimitedServiceKey()
    return $serviceKey
}

$hdrs = @{}
$hdrs.Add("SOAPACTION","http://ws.qliktech.com/QMS/12/2/IQMS2/GetServices")
$hdrs.Add("Content-Type", "text/xml;charset=utf-8")
$hdrs.Add('X-Service-Key',$(GetServiceKey -url $url))

$body = @{}
$body = '&amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://ws.qliktech.com/QMS/12/2/"&amp;gt;
   &amp;lt;soapenv:Header/&amp;gt;
   &amp;lt;soapenv:Body&amp;gt;
      &amp;lt;ns:GetServices&amp;gt;
         &amp;lt;ns:serviceTypes&amp;gt;QlikViewServer&amp;lt;/ns:serviceTypes&amp;gt;
      &amp;lt;/ns:GetServices&amp;gt;
   &amp;lt;/soapenv:Body&amp;gt;
&amp;lt;/soapenv:Envelope&amp;gt;'

Write-host "Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $($hdrs.Values)"
$res = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $hdrs

#
[xml]$myXml = $res.Content
$QVSServerID = $myXml.Envelope.Body.GetServicesResponse.GetServicesResult.ServiceInfo.ID
$QVSServerID

$body = @{}
$body = '&amp;lt;s:Envelope
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;
    &amp;lt;s:Body&amp;gt;
        &amp;lt;SaveCALConfiguration
            xmlns="http://ws.qliktech.com/QMS/12/2/"&amp;gt;
            &amp;lt;calConfiguration
                xmlns:a="http://schemas.datacontract.org/2004/07/PIX.QMSAPI.DataObjects.CALs"
                xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&amp;gt;
                &amp;lt;a:DocumentCALs
                    i:nil="true"/&amp;gt;
                &amp;lt;a:NamedCALs&amp;gt;
                    &amp;lt;a:AllowDynamicAssignment&amp;gt;
                        true
                        &amp;lt;/a:AllowDynamicAssignment&amp;gt;
                    &amp;lt;a:AllowLicenseLease&amp;gt;
                        true
                        &amp;lt;/a:AllowLicenseLease&amp;gt;
                    &amp;lt;a:Assigned&amp;gt;
                        2
                        &amp;lt;/a:Assigned&amp;gt;
                    &amp;lt;a:AssignedCALs&amp;gt;
                        &amp;lt;a:AssignedNamedCAL&amp;gt;
                            &amp;lt;a:UserName&amp;gt;DOMAIN\ADMINISTRATOR&amp;lt;/a:UserName&amp;gt;
                            &amp;lt;/a:AssignedNamedCAL&amp;gt;
                        &amp;lt;a:AssignedNamedCAL&amp;gt;
                            &amp;lt;a:UserName&amp;gt;DOMAIN\USER2&amp;lt;/a:UserName&amp;gt;
                            &amp;lt;/a:AssignedNamedCAL&amp;gt;
                        &amp;lt;/a:AssignedCALs&amp;gt;
                        &amp;lt;a:IdentificationMode&amp;gt;UserName&amp;lt;/a:IdentificationMode&amp;gt;
                    &amp;lt;a:InLicense&amp;gt;
                        5
                        &amp;lt;/a:InLicense&amp;gt;
                    &amp;lt;a:LeasedCALs&amp;gt;
                        &amp;lt;a:LeasedNamedCAL&amp;gt;
                            &amp;lt;/a:LeasedNamedCAL&amp;gt;
                        &amp;lt;/a:LeasedCALs&amp;gt;
                    &amp;lt;a:Limit&amp;gt;
                        5
                        &amp;lt;/a:Limit&amp;gt;
                    &amp;lt;a:RemovedAssignedCALs&amp;gt;
                    &amp;lt;a:AssignedNamedCAL&amp;gt;
                            &amp;lt;a:UserName&amp;gt;DOMAIN\USER1&amp;lt;/a:UserName&amp;gt;
                            &amp;lt;/a:AssignedNamedCAL&amp;gt;
                        &amp;lt;/a:RemovedAssignedCALs&amp;gt;
                    &amp;lt;/a:NamedCALs&amp;gt;
                &amp;lt;a:QVSID&amp;gt;'
            $body = $body + $QVSServerID
            $body = $body + '&amp;lt;/a:QVSID&amp;gt;
            &amp;lt;a:Scope&amp;gt;NamedCALs&amp;lt;/a:Scope&amp;gt;
          &amp;lt;/calConfiguration&amp;gt;
      &amp;lt;/SaveCALConfiguration&amp;gt;
   &amp;lt;/s:Body&amp;gt;
&amp;lt;/s:Envelope&amp;gt;'

$hdrs = @{}
$hdrs.Add("SOAPACTION","http://ws.qliktech.com/QMS/12/2/IQMS2/SaveCALConfiguration")
$hdrs.Add("Content-Type", "text/xml;charset=utf-8")
$hdrs.Add('X-Service-Key',$(GetServiceKey -url $url))
$res = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $hdrs

#
$res.content
[xml]$myXml = $res.Content &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Both Named User CALs that you want to keep and the ones you want to remove must be specified.&lt;/P&gt;
&lt;P&gt;If you are unsure of the full list of Named User CALs currently assigned, you can request it with the GetCALConfiguration API call, see below:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;$url = "http://qlikserver1.domain.local:4799/QMS/Service"
 
function GetServiceKey
{
   param(
     [string]$url
   ) 
    $service = New-WebServiceProxy -Uri $url -Namespace QlikViewServer -UseDefaultCredential
    $serviceKey = $service.GetTimeLimitedServiceKey()
    return $serviceKey
}

$hdrs = @{}
$hdrs.Add("SOAPACTION","http://ws.qliktech.com/QMS/12/2/IQMS2/GetServices")
$hdrs.Add("Content-Type", "text/xml;charset=utf-8")
$hdrs.Add('X-Service-Key',$(GetServiceKey -url $url))

$body = @{}
$body = '&amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://ws.qliktech.com/QMS/12/2/"&amp;gt;
   &amp;lt;soapenv:Header/&amp;gt;
   &amp;lt;soapenv:Body&amp;gt;
      &amp;lt;ns:GetServices&amp;gt;
         &amp;lt;ns:serviceTypes&amp;gt;QlikViewServer&amp;lt;/ns:serviceTypes&amp;gt;
      &amp;lt;/ns:GetServices&amp;gt;
   &amp;lt;/soapenv:Body&amp;gt;
&amp;lt;/soapenv:Envelope&amp;gt;'

Write-host "Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $($hdrs.Values)"
$res = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $hdrs

#
[xml]$myXml = $res.Content
$QVSServerID = $myXml.Envelope.Body.GetServicesResponse.GetServicesResult.ServiceInfo.ID
$QVSServerID

$body = @{}
$body = '&amp;lt;s:Envelope
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;
    &amp;lt;s:Body&amp;gt;
        &amp;lt;GetCALConfiguration
            xmlns="http://ws.qliktech.com/QMS/12/2/"&amp;gt;
            &amp;lt;qvsID&amp;gt;'
            $body = $body + $QVSServerID
            $body = $body + '&amp;lt;/qvsID&amp;gt;
            &amp;lt;scope&amp;gt;NamedCALs&amp;lt;/scope&amp;gt;
            &amp;lt;/GetCALConfiguration&amp;gt;
        &amp;lt;/s:Body&amp;gt;
    &amp;lt;/s:Envelope&amp;gt;'

$hdrs = @{}
$hdrs.Add("SOAPACTION","http://ws.qliktech.com/QMS/12/2/IQMS2/GetCALConfiguration")
$hdrs.Add("Content-Type", "text/xml;charset=utf-8")
$hdrs.Add('X-Service-Key',$(GetServiceKey -url $url))
$res = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseDefaultCredential -Headers $hdrs

#
$res.content
[xml]$myXml = $res.Content&lt;/LI-CODE&gt;</description>
      <pubDate>Tue, 06 Jul 2021 12:43:12 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/QMS-API-remove-a-Named-CAL/ta-p/1714108</guid>
      <dc:creator>Sonja_Bauernfeind</dc:creator>
      <dc:date>2021-07-06T12:43:12Z</dc:date>
    </item>
  </channel>
</rss>

