The following article shows how to update data in Salesforce with Strategy Transaction and XQuery report:
KB39222: How to configure MicroStrategy 9.x/10.x to write data back to Salesforce.com using Transaction Report
This article shows how to configure Strategy 9.x/10.x to change password for login of Salesforce.com using Transaction and XQuery Report with steps below:


<q2:changeOwnPassword xmlns:q2="urn:enterprise.soap.sforce.com"> <q2:oldPassword>Enter string Value</q2:oldPassword> <q2:newPassword>Enter string Value</q2:newPassword> </q2:changeOwnPassword>



<q1:changeOwnPasswordResponse xmlns:q1="urn:enterprise.soap.sforce.com"> <q1:result></q1:result></q1:changeOwnPasswordResponse>




declare namespace q1= 'urn:enterprise.soap.sforce.com';
import module namespace util = 'http://www.zorba-xquery.com/zorba/util-functions';
declare copy-namespaces no-preserve, no-inherit;
declare namespace mstr-soap = 'http://www.Strategy.com/xquery/soap-functions';
declare function mstr-soap:post($args) external;
(: Function to login to SalesForce.com and get the server URL and session ID :)
declare function local:sflogin($username as xs:string, $password as xs:string)
{
let $uri := ('https://login.salesforce.com/services/Soap/c/41.0')
let $soap-version := element SOAPInfo {element SOAPVersion { 'SOAP11' }, element SOAPAction { ' ' }}
let $soap-custom-header := (' ')
let $payload := concat('<login xmlns="urn:enterprise.soap.sforce.com"><username>', $username, '</username><password>', $password,'</password></login>')
let $ws-secu := (' ')
let $header := ( )
let $args := ($uri, $soap-version, $ws-secu, $soap-custom-header, $payload, $header)
let $loginresponse := mstr-soap:post($args)
return $loginresponse
};
let $username := ('123@abc.com')
let $password := ('djabckngnabsundidnedsnvkghjee1')
let $sfloginresponse := local:sflogin($username, $password)
let $sessionId := $sfloginresponse//*:sessionId
(: SOAP end point URL obtained from salesforce login :)
let $uri2 := $sfloginresponse//*:serverUrl
(: SOAP Action if any :)
let $soap-version2 := element SOAPInfo {element SOAPVersion { 'SOAP11' }, element SOAPAction { ' ' }}
let $ws-secu2 := (' ')
(: SOAP Header - currently only one header can be sent, send session id:)
let $soap-custom-header2 := concat('<SessionHeader xmlns="urn:enterprise.soap.sforce.com"><sessionId>', xs:string($sessionId ), '</sessionId></SessionHeader>')
(: SOAP payload, actual query goes here:)
let $payload2 := ('<q2:changeOwnPassword xmlns:q2="urn:enterprise.soap.sforce.com">
[Begin Transaction]
<q2:oldPassword>[Old_Password@ID]</q2:oldPassword>
<q2:newPassword>[New_Password@ID]</q2:newPassword>
[End Transaction]
</q2:changeOwnPassword>')
let $header2 := ( )
(: put all arguments in one sequence :)
let $args2 := ($uri2, $soap-version2, $ws-secu2, $soap-custom-header2, $payload2, $header2)
(: fire SOAP request and get a response :)
let $queryresponse := if(exists($sfloginresponse)) then mstr-soap:post($args2 ) else ()
return
<Table><ColumnHeaders>
<ColumnHeader name='result' type='xs:string' />
</ColumnHeaders>
<Data>{for $ancestor in $queryresponse//q1:changeOwnPasswordResponse
return <Row>
<result>{fn:data($ancestor/q1:result)}</result>
</Row>}</Data></Table>


Note: An email with new security token should be received once the password is changed. KB439801