From b8034b9f990d721c2cab97cdb6c157e4084c984d Mon Sep 17 00:00:00 2001
From: 周伟奇 <zhouweiqi@situdata.com>
Date: Tue, 7 Jul 2020 18:54:46 +0800
Subject: [PATCH] start EDMS

---
 src/apps/doc/consts.py                          |    2 ++
 src/apps/doc/management/commands/doc_process.py |   15 ++++++++++-----
 src/common/web_services_api/test.py             |   31 -------------------------------
 src/settings/conf/_default_config.py            |    2 ++
 wsdl/SessionManager.wsdl                        | 1111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 1125 insertions(+), 36 deletions(-)
 delete mode 100644 src/common/web_services_api/test.py
 create mode 100644 wsdl/SessionManager.wsdl

diff --git a/src/apps/doc/consts.py b/src/apps/doc/consts.py
index 12472bb..416bbad 100644
--- a/src/apps/doc/consts.py
+++ b/src/apps/doc/consts.py
@@ -5,3 +5,5 @@ BUSINESS_TYPE = ['HIL', 'AFC']
 HIL_SET = {'HIL', 'hil', 'CO00002', 'C000002'}
 HIL_PREFIX = 'HIL'
 AFC_PREFIX = 'AFC'
+
+CUSTOM_CLIENT = 'CustomClient'
diff --git a/src/apps/doc/management/commands/doc_process.py b/src/apps/doc/management/commands/doc_process.py
index cac73f9..38b35d8 100644
--- a/src/apps/doc/management/commands/doc_process.py
+++ b/src/apps/doc/management/commands/doc_process.py
@@ -8,6 +8,7 @@ import asyncio
 import aiohttp
 from PIL import Image
 from io import BytesIO
+from zeep import Client
 
 from django.core.management import BaseCommand
 from common.mixins import LoggerMixin
@@ -37,6 +38,8 @@ class Command(BaseCommand, LoggerMixin):
             'X-Auth-Token': conf.OCR_TOKEN,
             'Content-Type': 'application/json'
         }
+        # EDMS web_service_api
+        self.sm_client = Client(wsdl=conf.SM_WSDL)
         # 优雅退出信号:15
         signal.signal(signal.SIGTERM, self.signal_handler)
 
@@ -67,8 +70,9 @@ class Command(BaseCommand, LoggerMixin):
         if doc_info is None:
             return None, None, None
         # TODO EDMS下载pdf
-        # pdf_path = '/Users/clay/Desktop/biz/biz_logic/data/2/横版-表格-工商银行CH-B008802400.pdf'
-        # doc_data_path = os.path.dirname(pdf_path)
+        # session_id = self.sm_client.service.StartSession(login=conf.EDMS_USER,
+        #                                                  password=conf.EDMS_PWD,
+        #                                                  clientType=consts.CUSTOM_CLIENT)
 
         doc_data_path = os.path.join(self.data_dir, business_type, str(doc_id))
         pdf_path = os.path.join(doc_data_path, '{0}.pdf'.format(doc_id))
@@ -194,7 +198,8 @@ class Command(BaseCommand, LoggerMixin):
     # TODO 细化文件状态,不同异常状态采取不同的处理
     # TODO 调用接口重试
     def handle(self, *args, **kwargs):
-        sleep_second = conf.SLEEP_SECOND
+        sleep_second = int(conf.SLEEP_SECOND)
+        max_sleep_second = int(conf.MAX_SLEEP_SECOND)
         while self.switch:
             # 1. 从队列获取文件信息
             doc_info, doc_class, doc_id, business_type = self.get_doc_info()
@@ -203,9 +208,9 @@ class Command(BaseCommand, LoggerMixin):
             # 队列为空时的处理
             if pdf_path is None:
                 time.sleep(sleep_second)
-                sleep_second = min(conf.MAX_SLEEP_SECOND, sleep_second+5)
+                sleep_second = min(max_sleep_second, sleep_second+5)
                 continue
-            sleep_second = conf.SLEEP_SECOND
+            sleep_second = int(conf.SLEEP_SECOND)
             try:
                 # 3.PDF文件提取图片
                 img_save_path = os.path.join(doc_data_path, 'img')
diff --git a/src/common/web_services_api/test.py b/src/common/web_services_api/test.py
deleted file mode 100644
index b345fb9..0000000
--- a/src/common/web_services_api/test.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from zeep import Client
-from zeep.transports import Transport
-from requests.auth import HTTPBasicAuth
-from requests import Session
-
-# session = Session()
-# session.auth = HTTPBasicAuth('qqedms3', 'azhkilc6')
-
-wsdl_path = '/Users/clay/Desktop/biz/biz_logic/data/sessionmanager.wsdl'
-client = Client(wsdl=wsdl_path)
-# client = Client(wsdl=wsdl_path, transport=Transport(session=session))
-
-
-with client.settings(raw_response=True):
-    # res = client.service.StartSessionForDomainUser(login='qqedms3',
-    #                                                password='azhkilc6',
-    #                                                domain='960c2a5a-869c-45bd-aca8-de396b684f59',
-    #                                                clientType='CustomClient')
-    # res = client.service.StartSession(login='qqedms3', password='azhkilc6', clientType='CustomClient')
-    # res = client.service.StartSession(login='OCRUAT', password='1qaz2wsx', clientType='CustomClient')
-    res = client.service.GetSessionInfo(sessionId='40f9e3c1-e6cb-4b22-83b0-0b54433bec42')
-
-    print(res)
-    print(res.status_code)
-    print(res.content)
-
-# client = Client('http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL')
-#
-# res = client.service.getMobileCodeInfo(mobileCode='15388058517')
-# print(res)
-
diff --git a/src/settings/conf/_default_config.py b/src/settings/conf/_default_config.py
index 790041c..dac5d6b 100644
--- a/src/settings/conf/_default_config.py
+++ b/src/settings/conf/_default_config.py
@@ -5,8 +5,10 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__fil
 COMMON_CONF_DIR = os.path.dirname(os.path.abspath(__file__))
 SECRET_CONF_DIR = os.path.join(os.path.dirname(BASE_DIR), 'conf')
 DATA_DIR = os.path.join(os.path.dirname(BASE_DIR), 'data')
+WSDL_DIR = os.path.join(os.path.dirname(BASE_DIR), 'wsdl')
 SECRET_CONF_FILE = os.path.join(SECRET_CONF_DIR, 'secret.ini')
 LOGGING_CONFIG_FILE = os.path.join(COMMON_CONF_DIR, 'logging.conf')
+SM_WSDL = os.path.join(WSDL_DIR, 'SessionManager.wsdl')
 
 # 文件存放根目录
 LOG_DIR = os.path.join(os.path.dirname(BASE_DIR), 'logs')
diff --git a/wsdl/SessionManager.wsdl b/wsdl/SessionManager.wsdl
new file mode 100644
index 0000000..2830ba6
--- /dev/null
+++ b/wsdl/SessionManager.wsdl
@@ -0,0 +1,1111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://filehold.com/userrolemanager/sessionmanager/" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://filehold.com/userrolemanager/sessionmanager/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://filehold.com/userrolemanager/sessionmanager/">
+      <s:import namespace="http://microsoft.com/wsdl/types/" />
+      <s:element name="StartSession">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="clientType" type="tns:Client" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:simpleType name="Client">
+        <s:restriction base="s:string">
+          <s:enumeration value="WebClient" />
+          <s:enumeration value="DesktopApplication" />
+          <s:enumeration value="SharepointClient" />
+          <s:enumeration value="MobileWebClient" />
+          <s:enumeration value="CustomClient" />
+          <s:enumeration value="FHInstrumentation" />
+          <s:enumeration value="Capture" />
+        </s:restriction>
+      </s:simpleType>
+      <s:element name="StartSessionResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="StartSessionResult" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="StartSessionAndChangePassword">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="oldPassword" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="newPassword" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="clientType" type="tns:Client" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="StartSessionAndChangePasswordResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="StartSessionAndChangePasswordResult" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="StartSessionAndResetPassword">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="newPassword" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="pin" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="clientType" type="tns:Client" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="StartSessionAndResetPasswordResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="StartSessionAndResetPasswordResult" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="StartSessionForDomainUser">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="login" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="domain" type="s1:guid" />
+            <s:element minOccurs="1" maxOccurs="1" name="clientType" type="tns:Client" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="StartSessionForDomainUserResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="StartSessionForDomainUserResult" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="EndSession">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="EndSessionResponse">
+        <s:complexType />
+      </s:element>
+      <s:element name="IsSessionValid">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="keepAlive" type="s:boolean" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="IsSessionValidResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="IsSessionValidResult" type="s:boolean" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSessionInfo">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSessionInfoResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="GetSessionInfoResult" type="tns:SessionInfo" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="SessionInfo">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="1" name="SessionId" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="UserName" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="UserGuid" type="s1:guid" />
+          <s:element minOccurs="0" maxOccurs="1" name="GroupGuids" type="tns:ArrayOfGuid" />
+          <s:element minOccurs="1" maxOccurs="1" name="IsDomainUser" type="s:boolean" />
+          <s:element minOccurs="0" maxOccurs="1" name="AllowedOperations" type="tns:ArrayOfInt" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOfGuid">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="guid" type="s1:guid" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="ArrayOfInt">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="int" type="s:int" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="StartSessionForClient">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
+            <s:element minOccurs="1" maxOccurs="1" name="clientType" type="tns:Client" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="StartSessionForClientResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="StartSessionForClientResult" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="UserSelfRegister">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="selfRegisterUser" type="tns:SelfRegisterUser" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="SelfRegisterUser">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="1" name="City" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="CompanyTitle" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="CountryRegion" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Department" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Division" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Fax" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Home" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Initials" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="InstantMessanger" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="IPPhone" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Mobile" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Notes" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Office" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Pager" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="StateProvince" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="UserName" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="WebPage" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Work" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="ZipPostalCode" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="POBox" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Street" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="CompanyName" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="UserSelfRegisterResponse">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetSelfRegistrationSettings">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="allowsSelfRegistration" type="s:boolean" />
+            <s:element minOccurs="1" maxOccurs="1" name="defaultFileHoldGroup" type="s1:guid" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetSelfRegistrationSettingsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="allowsSelfRegistration" type="s:boolean" />
+            <s:element minOccurs="1" maxOccurs="1" name="defaultFileHoldGroup" type="s1:guid" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="GetLogonAndPasswordSecuritySettings">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetLogonAndPasswordSecuritySettingsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="GetLogonAndPasswordSecuritySettingsResult" type="tns:LogonAndPasswordSettings" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="LogonAndPasswordSettings">
+        <s:sequence>
+          <s:element minOccurs="1" maxOccurs="1" name="LogonAttemptsAllowedTimes" type="s:int" />
+          <s:element minOccurs="1" maxOccurs="1" name="LogInactiveUsersOffAfterMinutes" type="s:int" />
+          <s:element minOccurs="1" maxOccurs="1" name="MinNumberOfCharactersInPassword" type="s:int" />
+          <s:element minOccurs="1" maxOccurs="1" name="PasswordMustContainsUpperCase" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="PasswordMustContainsLowerCase" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="PasswordMustContainsSpecialCharacter" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="PasswordMustContainsNumber" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowPasswordReuse" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="PasswordExpiresAfterDays" type="s:int" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowPasswordRecovery" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="PasswordResetTokenExpiresAfterHours" type="s:int" />
+          <s:element minOccurs="1" maxOccurs="1" name="AllowLoginRecovery" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="PasswordRecoveryExpiresAfterMinutes" type="s:int" />
+          <s:element minOccurs="0" maxOccurs="1" name="SystemName" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="InfoEmailAddress" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="MobilePhoneVerification" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="MobileNumberRequired" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="MobileVerificationAvailable" type="s:boolean" />
+          <s:element minOccurs="1" maxOccurs="1" name="ExpireCaptureAfterMinutes" type="s:int" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="GetStoredDomains">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetStoredDomainsResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="GetStoredDomainsResult" type="tns:ArrayOfDomainInfo" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="ArrayOfDomainInfo">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="DomainInfo" nillable="true" type="tns:DomainInfo" />
+        </s:sequence>
+      </s:complexType>
+      <s:complexType name="DomainInfo">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
+          <s:element minOccurs="1" maxOccurs="1" name="Id" type="s1:guid" />
+          <s:element minOccurs="0" maxOccurs="1" name="Address" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="Container" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="UserLogin" type="s:string" />
+          <s:element minOccurs="0" maxOccurs="1" name="UserPassword" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="IsCurrentLicenseActive">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="features" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:complexType name="ArrayOfString">
+        <s:sequence>
+          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
+        </s:sequence>
+      </s:complexType>
+      <s:element name="IsCurrentLicenseActiveResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="IsCurrentLicenseActiveResult" type="s:boolean" />
+            <s:element minOccurs="0" maxOccurs="1" name="features" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="CheckAPIVersion">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="clientVersion" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="serverVersion" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="CheckAPIVersionResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="CheckAPIVersionResult" type="s:int" />
+            <s:element minOccurs="0" maxOccurs="1" name="serverVersion" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="CheckApiVersionAndLogClientInfo">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="clientVersion" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="serverVersion" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="clientBuildNumber" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="clientAddress" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="CheckApiVersionAndLogClientInfoResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="CheckApiVersionAndLogClientInfoResult" type="s:int" />
+            <s:element minOccurs="0" maxOccurs="1" name="serverVersion" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="RestoreLogin">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="email" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="clientAddress" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="RestoreLoginResponse">
+        <s:complexType />
+      </s:element>
+      <s:element name="RestorePassword">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="email" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="clientAddress" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="RestorePasswordResponse">
+        <s:complexType />
+      </s:element>
+      <s:element name="ValidateResetToken">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="ValidateResetTokenResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="ValidateResetTokenResult" type="s:boolean" />
+            <s:element minOccurs="0" maxOccurs="1" name="phoneNumbers" type="tns:ArrayOfString" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="SendVerificationPIN">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="phoneNumber" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="SendVerificationPINResponse">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetDefaultDomain">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetDefaultDomainResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetDefaultDomainResult" type="s1:guid" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="ReserveCaptureLicense">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
+            <s:element minOccurs="0" maxOccurs="1" name="passcode" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="ReserveCaptureLicenseResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="ReserveCaptureLicenseResult" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="ReleaseCaptureLicense">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="0" maxOccurs="1" name="sessionId" type="s:string" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+      <s:element name="ReleaseCaptureLicenseResponse">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetUsedCaptureLicenses">
+        <s:complexType />
+      </s:element>
+      <s:element name="GetUsedCaptureLicensesResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="GetUsedCaptureLicensesResult" type="s:int" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+    </s:schema>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/wsdl/types/">
+      <s:simpleType name="guid">
+        <s:restriction base="s:string">
+          <s:pattern value="[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}" />
+        </s:restriction>
+      </s:simpleType>
+    </s:schema>
+  </wsdl:types>
+  <wsdl:message name="StartSessionSoapIn">
+    <wsdl:part name="parameters" element="tns:StartSession" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionSoapOut">
+    <wsdl:part name="parameters" element="tns:StartSessionResponse" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionAndChangePasswordSoapIn">
+    <wsdl:part name="parameters" element="tns:StartSessionAndChangePassword" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionAndChangePasswordSoapOut">
+    <wsdl:part name="parameters" element="tns:StartSessionAndChangePasswordResponse" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionAndResetPasswordSoapIn">
+    <wsdl:part name="parameters" element="tns:StartSessionAndResetPassword" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionAndResetPasswordSoapOut">
+    <wsdl:part name="parameters" element="tns:StartSessionAndResetPasswordResponse" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionForDomainUserSoapIn">
+    <wsdl:part name="parameters" element="tns:StartSessionForDomainUser" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionForDomainUserSoapOut">
+    <wsdl:part name="parameters" element="tns:StartSessionForDomainUserResponse" />
+  </wsdl:message>
+  <wsdl:message name="EndSessionSoapIn">
+    <wsdl:part name="parameters" element="tns:EndSession" />
+  </wsdl:message>
+  <wsdl:message name="EndSessionSoapOut">
+    <wsdl:part name="parameters" element="tns:EndSessionResponse" />
+  </wsdl:message>
+  <wsdl:message name="IsSessionValidSoapIn">
+    <wsdl:part name="parameters" element="tns:IsSessionValid" />
+  </wsdl:message>
+  <wsdl:message name="IsSessionValidSoapOut">
+    <wsdl:part name="parameters" element="tns:IsSessionValidResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetSessionInfoSoapIn">
+    <wsdl:part name="parameters" element="tns:GetSessionInfo" />
+  </wsdl:message>
+  <wsdl:message name="GetSessionInfoSoapOut">
+    <wsdl:part name="parameters" element="tns:GetSessionInfoResponse" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionForClientSoapIn">
+    <wsdl:part name="parameters" element="tns:StartSessionForClient" />
+  </wsdl:message>
+  <wsdl:message name="StartSessionForClientSoapOut">
+    <wsdl:part name="parameters" element="tns:StartSessionForClientResponse" />
+  </wsdl:message>
+  <wsdl:message name="UserSelfRegisterSoapIn">
+    <wsdl:part name="parameters" element="tns:UserSelfRegister" />
+  </wsdl:message>
+  <wsdl:message name="UserSelfRegisterSoapOut">
+    <wsdl:part name="parameters" element="tns:UserSelfRegisterResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetSelfRegistrationSettingsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetSelfRegistrationSettings" />
+  </wsdl:message>
+  <wsdl:message name="GetSelfRegistrationSettingsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetSelfRegistrationSettingsResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetLogonAndPasswordSecuritySettingsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetLogonAndPasswordSecuritySettings" />
+  </wsdl:message>
+  <wsdl:message name="GetLogonAndPasswordSecuritySettingsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetLogonAndPasswordSecuritySettingsResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetStoredDomainsSoapIn">
+    <wsdl:part name="parameters" element="tns:GetStoredDomains" />
+  </wsdl:message>
+  <wsdl:message name="GetStoredDomainsSoapOut">
+    <wsdl:part name="parameters" element="tns:GetStoredDomainsResponse" />
+  </wsdl:message>
+  <wsdl:message name="IsCurrentLicenseActiveSoapIn">
+    <wsdl:part name="parameters" element="tns:IsCurrentLicenseActive" />
+  </wsdl:message>
+  <wsdl:message name="IsCurrentLicenseActiveSoapOut">
+    <wsdl:part name="parameters" element="tns:IsCurrentLicenseActiveResponse" />
+  </wsdl:message>
+  <wsdl:message name="CheckAPIVersionSoapIn">
+    <wsdl:part name="parameters" element="tns:CheckAPIVersion" />
+  </wsdl:message>
+  <wsdl:message name="CheckAPIVersionSoapOut">
+    <wsdl:part name="parameters" element="tns:CheckAPIVersionResponse" />
+  </wsdl:message>
+  <wsdl:message name="CheckApiVersionAndLogClientInfoSoapIn">
+    <wsdl:part name="parameters" element="tns:CheckApiVersionAndLogClientInfo" />
+  </wsdl:message>
+  <wsdl:message name="CheckApiVersionAndLogClientInfoSoapOut">
+    <wsdl:part name="parameters" element="tns:CheckApiVersionAndLogClientInfoResponse" />
+  </wsdl:message>
+  <wsdl:message name="RestoreLoginSoapIn">
+    <wsdl:part name="parameters" element="tns:RestoreLogin" />
+  </wsdl:message>
+  <wsdl:message name="RestoreLoginSoapOut">
+    <wsdl:part name="parameters" element="tns:RestoreLoginResponse" />
+  </wsdl:message>
+  <wsdl:message name="RestorePasswordSoapIn">
+    <wsdl:part name="parameters" element="tns:RestorePassword" />
+  </wsdl:message>
+  <wsdl:message name="RestorePasswordSoapOut">
+    <wsdl:part name="parameters" element="tns:RestorePasswordResponse" />
+  </wsdl:message>
+  <wsdl:message name="ValidateResetTokenSoapIn">
+    <wsdl:part name="parameters" element="tns:ValidateResetToken" />
+  </wsdl:message>
+  <wsdl:message name="ValidateResetTokenSoapOut">
+    <wsdl:part name="parameters" element="tns:ValidateResetTokenResponse" />
+  </wsdl:message>
+  <wsdl:message name="SendVerificationPINSoapIn">
+    <wsdl:part name="parameters" element="tns:SendVerificationPIN" />
+  </wsdl:message>
+  <wsdl:message name="SendVerificationPINSoapOut">
+    <wsdl:part name="parameters" element="tns:SendVerificationPINResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetDefaultDomainSoapIn">
+    <wsdl:part name="parameters" element="tns:GetDefaultDomain" />
+  </wsdl:message>
+  <wsdl:message name="GetDefaultDomainSoapOut">
+    <wsdl:part name="parameters" element="tns:GetDefaultDomainResponse" />
+  </wsdl:message>
+  <wsdl:message name="ReserveCaptureLicenseSoapIn">
+    <wsdl:part name="parameters" element="tns:ReserveCaptureLicense" />
+  </wsdl:message>
+  <wsdl:message name="ReserveCaptureLicenseSoapOut">
+    <wsdl:part name="parameters" element="tns:ReserveCaptureLicenseResponse" />
+  </wsdl:message>
+  <wsdl:message name="ReleaseCaptureLicenseSoapIn">
+    <wsdl:part name="parameters" element="tns:ReleaseCaptureLicense" />
+  </wsdl:message>
+  <wsdl:message name="ReleaseCaptureLicenseSoapOut">
+    <wsdl:part name="parameters" element="tns:ReleaseCaptureLicenseResponse" />
+  </wsdl:message>
+  <wsdl:message name="GetUsedCaptureLicensesSoapIn">
+    <wsdl:part name="parameters" element="tns:GetUsedCaptureLicenses" />
+  </wsdl:message>
+  <wsdl:message name="GetUsedCaptureLicensesSoapOut">
+    <wsdl:part name="parameters" element="tns:GetUsedCaptureLicensesResponse" />
+  </wsdl:message>
+  <wsdl:portType name="SessionManagerSoap">
+    <wsdl:operation name="StartSession">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Start session for the user based on specified credentials</wsdl:documentation>
+      <wsdl:input message="tns:StartSessionSoapIn" />
+      <wsdl:output message="tns:StartSessionSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionAndChangePassword">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Start session for the user based on specified credentials and change his/her password</wsdl:documentation>
+      <wsdl:input message="tns:StartSessionAndChangePasswordSoapIn" />
+      <wsdl:output message="tns:StartSessionAndChangePasswordSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionAndResetPassword">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Start session for the local FileHold user and reset password based on specified credentials and token</wsdl:documentation>
+      <wsdl:input message="tns:StartSessionAndResetPasswordSoapIn" />
+      <wsdl:output message="tns:StartSessionAndResetPasswordSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionForDomainUser">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Start session for a user from specified domain based on specified credentials</wsdl:documentation>
+      <wsdl:input message="tns:StartSessionForDomainUserSoapIn" />
+      <wsdl:output message="tns:StartSessionForDomainUserSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="EndSession">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Close specified session</wsdl:documentation>
+      <wsdl:input message="tns:EndSessionSoapIn" />
+      <wsdl:output message="tns:EndSessionSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="IsSessionValid">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Check whether particular session is still valid</wsdl:documentation>
+      <wsdl:input message="tns:IsSessionValidSoapIn" />
+      <wsdl:output message="tns:IsSessionValidSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetSessionInfo">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Return information about particular session</wsdl:documentation>
+      <wsdl:input message="tns:GetSessionInfoSoapIn" />
+      <wsdl:output message="tns:GetSessionInfoSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionForClient">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Start new session for different client type</wsdl:documentation>
+      <wsdl:input message="tns:StartSessionForClientSoapIn" />
+      <wsdl:output message="tns:StartSessionForClientSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="UserSelfRegister">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Register new user if self registration is allowed</wsdl:documentation>
+      <wsdl:input message="tns:UserSelfRegisterSoapIn" />
+      <wsdl:output message="tns:UserSelfRegisterSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetSelfRegistrationSettings">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Return information about user self registration settings</wsdl:documentation>
+      <wsdl:input message="tns:GetSelfRegistrationSettingsSoapIn" />
+      <wsdl:output message="tns:GetSelfRegistrationSettingsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetLogonAndPasswordSecuritySettings">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Return logon and password security settings</wsdl:documentation>
+      <wsdl:input message="tns:GetLogonAndPasswordSecuritySettingsSoapIn" />
+      <wsdl:output message="tns:GetLogonAndPasswordSecuritySettingsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetStoredDomains">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Return all available synchronized domains</wsdl:documentation>
+      <wsdl:input message="tns:GetStoredDomainsSoapIn" />
+      <wsdl:output message="tns:GetStoredDomainsSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="IsCurrentLicenseActive">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Check if current system license is valid</wsdl:documentation>
+      <wsdl:input message="tns:IsCurrentLicenseActiveSoapIn" />
+      <wsdl:output message="tns:IsCurrentLicenseActiveSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="CheckAPIVersion">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Check compatibility between client version and server version</wsdl:documentation>
+      <wsdl:input message="tns:CheckAPIVersionSoapIn" />
+      <wsdl:output message="tns:CheckAPIVersionSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="CheckApiVersionAndLogClientInfo">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Check compatibility between client version and server version</wsdl:documentation>
+      <wsdl:input message="tns:CheckApiVersionAndLogClientInfoSoapIn" />
+      <wsdl:output message="tns:CheckApiVersionAndLogClientInfoSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="RestoreLogin">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows to recover login of user account associated with provided email address</wsdl:documentation>
+      <wsdl:input message="tns:RestoreLoginSoapIn" />
+      <wsdl:output message="tns:RestoreLoginSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="RestorePassword">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows to recover password of user account associated with provided email address</wsdl:documentation>
+      <wsdl:input message="tns:RestorePasswordSoapIn" />
+      <wsdl:output message="tns:RestorePasswordSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="ValidateResetToken">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Checks whether provided token is associated with local user</wsdl:documentation>
+      <wsdl:input message="tns:ValidateResetTokenSoapIn" />
+      <wsdl:output message="tns:ValidateResetTokenSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="SendVerificationPIN">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Sends verification PIN using external plug-in</wsdl:documentation>
+      <wsdl:input message="tns:SendVerificationPINSoapIn" />
+      <wsdl:output message="tns:SendVerificationPINSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetDefaultDomain">
+      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Return the GUID of the default domain for logon</wsdl:documentation>
+      <wsdl:input message="tns:GetDefaultDomainSoapIn" />
+      <wsdl:output message="tns:GetDefaultDomainSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="ReserveCaptureLicense">
+      <wsdl:input message="tns:ReserveCaptureLicenseSoapIn" />
+      <wsdl:output message="tns:ReserveCaptureLicenseSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="ReleaseCaptureLicense">
+      <wsdl:input message="tns:ReleaseCaptureLicenseSoapIn" />
+      <wsdl:output message="tns:ReleaseCaptureLicenseSoapOut" />
+    </wsdl:operation>
+    <wsdl:operation name="GetUsedCaptureLicenses">
+      <wsdl:input message="tns:GetUsedCaptureLicensesSoapIn" />
+      <wsdl:output message="tns:GetUsedCaptureLicensesSoapOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="SessionManagerSoap" type="tns:SessionManagerSoap">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="StartSession">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSession" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionAndChangePassword">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSessionAndChangePassword" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionAndResetPassword">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSessionAndResetPassword" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionForDomainUser">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSessionForDomainUser" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="EndSession">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/EndSession" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="IsSessionValid">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/IsSessionValid" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSessionInfo">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetSessionInfo" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionForClient">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSessionForClient" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="UserSelfRegister">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/UserSelfRegister" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSelfRegistrationSettings">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetSelfRegistrationSettings" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetLogonAndPasswordSecuritySettings">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetLogonAndPasswordSecuritySettings" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetStoredDomains">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetStoredDomains" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="IsCurrentLicenseActive">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/IsCurrentLicenseActive" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="CheckAPIVersion">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/CheckAPIVersion" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="CheckApiVersionAndLogClientInfo">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/CheckApiVersionAndLogClientInfo" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="RestoreLogin">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/RestoreLogin" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="RestorePassword">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/RestorePassword" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ValidateResetToken">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/ValidateResetToken" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SendVerificationPIN">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/SendVerificationPIN" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetDefaultDomain">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetDefaultDomain" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ReserveCaptureLicense">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/ReserveCaptureLicense" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ReleaseCaptureLicense">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/ReleaseCaptureLicense" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetUsedCaptureLicenses">
+      <soap:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetUsedCaptureLicenses" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:binding name="SessionManagerSoap12" type="tns:SessionManagerSoap">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="StartSession">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSession" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionAndChangePassword">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSessionAndChangePassword" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionAndResetPassword">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSessionAndResetPassword" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionForDomainUser">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSessionForDomainUser" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="EndSession">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/EndSession" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="IsSessionValid">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/IsSessionValid" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSessionInfo">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetSessionInfo" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="StartSessionForClient">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/StartSessionForClient" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="UserSelfRegister">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/UserSelfRegister" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSelfRegistrationSettings">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetSelfRegistrationSettings" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetLogonAndPasswordSecuritySettings">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetLogonAndPasswordSecuritySettings" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetStoredDomains">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetStoredDomains" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="IsCurrentLicenseActive">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/IsCurrentLicenseActive" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="CheckAPIVersion">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/CheckAPIVersion" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="CheckApiVersionAndLogClientInfo">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/CheckApiVersionAndLogClientInfo" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="RestoreLogin">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/RestoreLogin" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="RestorePassword">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/RestorePassword" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ValidateResetToken">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/ValidateResetToken" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="SendVerificationPIN">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/SendVerificationPIN" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetDefaultDomain">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetDefaultDomain" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ReserveCaptureLicense">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/ReserveCaptureLicense" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="ReleaseCaptureLicense">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/ReleaseCaptureLicense" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetUsedCaptureLicenses">
+      <soap12:operation soapAction="http://filehold.com/userrolemanager/sessionmanager/GetUsedCaptureLicenses" style="document" />
+      <wsdl:input>
+        <soap12:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap12:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="SessionManager">
+    <wsdl:port name="SessionManagerSoap" binding="tns:SessionManagerSoap">
+      <soap:address location="https://edms-test.bmw.com/FH/FileHold/userrolemanager/SessionManager.asmx" />
+    </wsdl:port>
+    <wsdl:port name="SessionManagerSoap12" binding="tns:SessionManagerSoap12">
+      <soap12:address location="https://edms-test.bmw.com/FH/FileHold/userrolemanager/SessionManager.asmx" />
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
\ No newline at end of file
--
libgit2 0.24.0