EmployeesDeactivateEmployee

DeactivateEmployee

Organisation service 1.9: Sets an employee's resignation date and deactivates the employee immediately.

ServiceOrganisation 1.9
EndpointPOST https://app{server-number}.timelog.com/{account}/WebServices/Organisation/V1_9/OrganisationServiceSecure.svc
SOAPActionhttp://www.timelog.com/api/tlp/v1_9/OrganisationService/DeactivateEmployee
Content-Typetext/xml; charset=utf-8
AuthenticationA token from GetToken
Changes dataYes
Safe to retryDeactivating an already inactive employee saves the date again and repeats the status-change notifications.

How it works

Two steps, not atomic. The caller may deactivate themselves. Existing SOAP tokens of the deactivated user keep working until they expire. Reactivate with ActivateEmployee.

Parameters

Each parameter has one label: Required, Conditional (required depending on other values) or Optional. Send them in the order shown.

employeeGuidguid
Required

GUID of the employee.

terminationDatedateTime
Required

Stored as the resignation date. Must be >= the employment date and >= the employee's last time registration. Does NOT delay the deactivation.

tokenSecurityToken
Required

The token from GetToken: Initials, Expires and Hash, sent back unchanged.

Request

POST /{account}/WebServices/Organisation/V1_9/OrganisationServiceSecure.svc HTTP/1.1
Host: app{server-number}.timelog.com
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://www.timelog.com/api/tlp/v1_9/OrganisationService/DeactivateEmployee"

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:org="http://www.timelog.com/api/tlp/v1_9"
                  xmlns:tok="http://www.timelog.com/api/tlp/v1_3">
  <soapenv:Body>
    <org:DeactivateEmployee>
      <org:employeeGuid>{employeeGuid}</org:employeeGuid>
      <org:terminationDate>{terminationDate}</org:terminationDate>
      <org:token>
        <tok:Initials>{Initials from GetToken}</tok:Initials>
        <tok:Expires>{Expires from GetToken, unchanged}</tok:Expires>
        <tok:Hash>{Hash from GetToken}</tok:Hash>
      </org:token>
    </org:DeactivateEmployee>
  </soapenv:Body>
</soapenv:Envelope>
Replace every {…} placeholder with your own value.

Response

The call returns the standard response envelope. Check ResponseState first: a failed call still returns HTTP 200.

ResponseStatestring
Required

Success, Invalid or Error.

ErrorCodeinteger

0 on success, otherwise the error code. See Errors.

ReturnEmployeeHeader[]

Response<EmployeeHeader> of the deactivated employee and a 'Successfully called' message.

Example response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <DeactivateEmployeeResponse xmlns="http://www.timelog.com/api/tlp/v1_9">
      <DeactivateEmployeeResult xmlns:a="http://api.timelog.com"
                                xmlns:b="http://www.timelog.com/api/tlp/v1_9"
                                xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <a:Return>
          <b:EmployeeHeader>
            <b:ID>3f2504e0-4f89-41d3-9a0c-305000000001</b:ID>
            <b:EmployeeID>1001</b:EmployeeID>
            <b:UserName>Example user</b:UserName>
            <b:Initials>ABC</b:Initials>
            <b:FirstName>Example first</b:FirstName>
            <b:LastName>Example last</b:LastName>
            <b:EmployeeNo>1001</b:EmployeeNo>
            <b:Fullname>Example</b:Fullname>
          </b:EmployeeHeader>
        </a:Return>
        <a:ReturnTypeDescription>EmployeeHeader</a:ReturnTypeDescription>
        <a:Request>…</a:Request>
        <a:ResponseState>Success</a:ResponseState>
        <a:Messages>
          <a:APIMessage>
            <a:Message>Duration of call was 0,0421337 sec.</a:Message>
            <a:Severity>Message</a:Severity>
            <a:ErrorCode>0</a:ErrorCode>
          </a:APIMessage>
        </a:Messages>
        <a:ErrorCode>0</a:ErrorCode>
        <a:IsReturnPaged>false</a:IsReturnPaged>
        <a:TotalPageCount>0</a:TotalPageCount>
      </DeactivateEmployeeResult>
    </DeactivateEmployeeResponse>
  </s:Body>
</s:Envelope>
Illustrative example: built from the service description (WSDL) in the same format as a real response, with made-up values. The Request block is shortened.

Errors

All errors come back with HTTP 200: check ResponseState, ErrorCode and Messages. The errors every operation can return (expired or invalid token, API not enabled, HTTPS required, general errors) are listed once in Responses and errors.

Errors specific to this operation:

ResponseStateErrorCodeMessageWhat it meansWhat to do
Error40001Error during call on TimeLog.API, Message 'Object reference not set to an instance of an object.'employeeGuid unknown.Take the GUID from EmployeeHeader.ID. Do not retry.
Error40001Error during call on TimeLog.API, Message 'The user violates the Business Rules for users'Step 1 refused - typically no employee-edit privilege covering this employee, or terminationDate before the employment date.Check the integration user's employee privileges first; then uniqueness of initials / user name; then the referenced data.
Error40001Error during call on TimeLog.API, Message 'The user violates the business roles for changing user status'Step 2 refused: last system administrator, GDPR contact or last customer system owner. The resignation date is already saved.Reassign the admin role / GDPR contact / system owner, then call again. Re-check the termination date.
Error40001Error during call on TimeLog.API, Message 'System.Collections.Generic.List`1[TimeLog.TLP.Error.IViolation]'terminationDate earlier than the employee's last time registration: nothing is saved but the status-change notifications fire.DeactivateEmployee: use a termination date on or after the last registration.
Error——Token missing / expired / invalid, API not activated or HTTPS required: the catch block fails on a null violations list.Always send the string parameter, even as an empty string.