When I try to update a work order task from a soap request, I get the error below about the record having been updated since it was last retrieved. I can update the work order task through the FSCM 9.1 application with no problem. My other web services work fine... I only have an issue with this WM_WO. At this point I have cleared my app and web server cache, bounced the app and web server, and then bounced the physical server as well. Everything is installed on one Windows 2008 R2 virtual machine.
Any suggestions to get past this issue would be greatly appreciated. The soap request and the results are below.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="urn:oracle.enterprise.fscm.data/WorkOrderUpdateRequest.V1" xmlns:wor1="urn:oracle.enterprise.fscm.data/WorkOrderUpdateRequestDS.V1">
<!--Zero or more repetitions:-->
<wor1:Description>Minor HVAC Service</wor1:Description>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<WorkOrderResults class="R" xmlns="urn:oracle.enterprise.fscm.data/WorkOrderUpdateResponseDS.V1">
<ErrorMessage>Record WM_WO_TSK for Task 1 has been updated since it was last retrieved. (18209,31004)
The record has been updated since it was last retrieved by the mobile system. You should retrieve the record again and re-submit the update. (0,0)</ErrorMessage>
Edited by: user3994167 on Jun 28, 2012 12:42 PM
The web service handler application package compares WM_EIP_SNT_DTTM to SYNCDTTM on the task record. If SYNCDTTM is > WM_EIP_SNT_DTTM or WM_EIP_SNT_DTTM is NULL then the message you received is generated.
You must first run web service WM_WOTASK_GET to 'check out' this work order task prior to updating it. This web service will set the WM_EIP_SNT_DTTM value.
However, in our environment (version 9.1, Tools 8.52.09), SYNCDTTM was also getting updated by WM_WOTASK_GET and sometimes SYNCDTTM was still greater than WM_EIP_SNT_DTTM by a few milliseconds. We changed the update in the service handler application package to add 3 seconds to the system date time value to ensure the WM_EIP_SNT_DTTM would always be greater than SYNDTTM.
The purpose of this is to make sure a work order was not updated within the PeopleSoft application since the work order was retrieved by the mobile device, so the data on the mobile device does not overwrite the updated work order.