FUNCTION JBM-CRM-SetState {
PARAM(
[string][ValidateSet("crmserver.company.com", "dev-crmserver.company.com")]$ServerName="crm.sardverb.com",
[string][ValidateSet("CRMOrganizationName")]$OrganizationName="SardVerbinnen",
[string][parameter(Mandatory=$true)][ValidateSet("email", "phonecall", "appointment")]$EntityType,
[string][parameter(Mandatory=$true)][ValidateScript({ $_ -match("^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$")})]$TargetGUID,
$State=1,$Status=3,[switch]$MyDebug
)
$requestMain = ""
$requestMain += "<s:Envelope xmlns:s=`"http://schemas.xmlsoap.org/soap/envelope/`">";
$requestMain += " <s:Body>";
$requestMain += " <Execute xmlns=`"http://schemas.microsoft.com/xrm/2011/Contracts/Services`" xmlns:i=`"http://www.w3.org/2001/XMLSchema-instance`">";
$requestMain += " <request i:type=`"b:SetStateRequest`" xmlns:a=`"http://schemas.microsoft.com/xrm/2011/Contracts`" xmlns:b=`"http://schemas.microsoft.com/crm/2011/Contracts`">";
$requestMain += " <a:Parameters xmlns:c=`"http://schemas.datacontract.org/2004/07/System.Collections.Generic`">";
$requestMain += " <a:KeyValuePairOfstringanyType>";
$requestMain += " <c:key>EntityMoniker</c:key>";
$requestMain += " <c:value i:type=`"a:EntityReference`">";
$requestMain += " <a:Id>$TargetGUID</a:Id>";
$requestMain += " <a:LogicalName>$EntityType</a:LogicalName>";
$requestMain += " <a:Name i:nil=`"true`" />";
$requestMain += " </c:value>";
$requestMain += " </a:KeyValuePairOfstringanyType>";
$requestMain += " <a:KeyValuePairOfstringanyType>";
$requestMain += " <c:key>State</c:key>";
$requestMain += " <c:value i:type=`"a:OptionSetValue`">";
$requestMain += " <a:Value>$State</a:Value>";
$requestMain += " </c:value>";
$requestMain += " </a:KeyValuePairOfstringanyType>";
$requestMain += " <a:KeyValuePairOfstringanyType>";
$requestMain += " <c:key>Status</c:key>";
$requestMain += " <c:value i:type=`"a:OptionSetValue`">";
$requestMain += " <a:Value>$Status</a:Value>";
$requestMain += " </c:value>";
$requestMain += " </a:KeyValuePairOfstringanyType>";
$requestMain += " </a:Parameters>";
$requestMain += " <a:RequestId i:nil=`"true`" />";
$requestMain += " <a:RequestName>SetState</a:RequestName>";
$requestMain += " </request>";
$requestMain += " </Execute>";
$requestMain += " </s:Body>";
$requestMain += "</s:Envelope>";
if ($MyDebug){write-host $requestMain}
$url="http://$ServerName/$OrganizationName/XRMServices/2011/Organization.svc/web"
$http_request = New-Object -ComObject Msxml2.XMLHTTP
$http_request.Open('POST', $url, $false)
$http_request.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
$http_request.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
$http_request.setRequestHeader("Content-Length", $xml.length);
$http_request.send($requestMain);
if ($MyDebug){$http_request.responseText}
}