From 2c3c1d6bb748a0655a83fdf4cd26135042d898b9 Mon Sep 17 00:00:00 2001
From: Thomas Lenz <thomas.lenz@egiz.gv.at>
Date: Fri, 19 Jul 2019 10:35:29 +0200
Subject: USP client integration switch to v2.0.7

---
 src/main/java/at/gv/util/LoggingHandler.java       |  41 ++++-
 .../at/gv/util/client/mis/usp_v2/USPClient.java    | 171 +++++++++++++------
 .../util/client/mis/usp_v2/USPClientException.java |  14 +-
 .../mis/usp_v2/VDDSRoleGenerationStrategy.java     |  83 +++++++++
 .../util/client/szr/IRoleGenerationStrategy.java   |  15 ++
 .../gv/util/client/szr/PVP2XHTTPHeaderHandler.java | 188 +++++++++++++++++++++
 src/main/java/at/gv/util/client/szr/SZRClient.java |   4 +-
 .../gv/util/client/szr/SZRHTTPHeaderHandler.java   | 138 ---------------
 .../at/gv/util/config/EgovUtilConfiguration.java   |   3 +
 .../config/EgovUtilPropertiesConfiguration.java    |  15 +-
 .../util/wsdl/mis/usp_v2/CreateMandateFault.java   |   2 +-
 .../wsdl/mis/usp_v2/CreateMandateStateFault.java   |   2 +-
 .../at/gv/util/wsdl/mis/usp_v2/ISyncService.java   |   2 +-
 .../gv/util/wsdl/mis/usp_v2/ListMandatesFault.java |   2 +-
 .../mis/usp_v2/RequestModificationTokenFault.java  |   2 +-
 .../usp_v2/SynchronisationServiceServiceagent.java |   2 +-
 .../wsdl/mis/usp_v2/TerminateMandateFault.java     |   2 +-
 .../mis/usp_v2/TerminateMandateStateFault.java     |   2 +-
 .../xsd/mis/usp_v2/eai/syncmsgs/FilterType.java    |  30 +---
 .../usp_v2/eai/syncmsgs/ListMandatesRequest.java   |   6 +-
 .../eai/syncmsgs/ListMandatesResponseType.java     |   4 +-
 .../MandateAttributesSearchFilterType.java         |  51 +++---
 .../eai/syncmsgs/MandateIDSearchFilterType.java    |  31 +++-
 .../xsd/mis/usp_v2/eai/syncmsgs/ObjectFactory.java |  90 ++++++++++
 .../mis/usp_v2/eai/syncmsgs/PaginationFilter.java  |  31 +++-
 .../mis/usp_v2/eai/syncmsgs/PaginationType.java    |  43 +++++
 .../eai/syncmsgs/SearchCriteriaTestType.java       |  62 +++++++
 .../usp_v2/eai/syncmsgs/SearchCriteriaType.java    |  97 +++++++++++
 .../xsd/mis/usp_v2/mandates/PropertiesType.java    |   2 +-
 .../usp_v2/mandates/SimpleMandateContentType.java  |  12 +-
 .../persondata/CompactCorporateBodyType.java       |   2 +-
 .../usp_v2/persondata/CompactPersonDataType.java   |  18 +-
 .../persondata/CompactPhysicalPersonType.java      |   2 +-
 .../mis/usp_v2/persondata/CorporateBodyType.java   |   2 +-
 .../mis/usp_v2/persondata/IdentificationType.java  |   2 +-
 .../mis/usp_v2/persondata/InternetAddressType.java |   2 +-
 .../xsd/mis/usp_v2/persondata/NationalityType.java |  12 +-
 .../xsd/mis/usp_v2/persondata/PersonDataType.java  |  18 +-
 .../mis/usp_v2/persondata/PhysicalPersonType.java  |   2 +-
 .../usp_v2/persondata/TelephoneAddressType.java    |   2 +-
 .../usp_v2/persondata/TypedPostalAddressType.java  |   2 +-
 .../xsd/mis/usp_v2/xmldsig/DigestMethodType.java   |   2 +-
 .../util/xsd/mis/usp_v2/xmldsig/KeyInfoType.java   |  20 +--
 .../util/xsd/mis/usp_v2/xmldsig/KeyValueType.java  |  10 +-
 .../gv/util/xsd/mis/usp_v2/xmldsig/ObjectType.java |   2 +-
 .../util/xsd/mis/usp_v2/xmldsig/PGPDataType.java   |   4 +-
 .../util/xsd/mis/usp_v2/xmldsig/SPKIDataType.java  |   2 +-
 .../mis/usp_v2/xmldsig/SignatureMethodType.java    |   2 +-
 .../mis/usp_v2/xmldsig/SignaturePropertyType.java  |   2 +-
 .../util/xsd/mis/usp_v2/xmldsig/TransformType.java |   4 +-
 .../util/xsd/mis/usp_v2/xmldsig/X509DataType.java  |  10 +-
 51 files changed, 926 insertions(+), 343 deletions(-)
 create mode 100644 src/main/java/at/gv/util/client/mis/usp_v2/VDDSRoleGenerationStrategy.java
 create mode 100644 src/main/java/at/gv/util/client/szr/IRoleGenerationStrategy.java
 create mode 100644 src/main/java/at/gv/util/client/szr/PVP2XHTTPHeaderHandler.java
 delete mode 100644 src/main/java/at/gv/util/client/szr/SZRHTTPHeaderHandler.java
 create mode 100644 src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/PaginationType.java
 create mode 100644 src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/SearchCriteriaTestType.java
 create mode 100644 src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/SearchCriteriaType.java

(limited to 'src/main/java/at')

diff --git a/src/main/java/at/gv/util/LoggingHandler.java b/src/main/java/at/gv/util/LoggingHandler.java
index f5c63c5..f4f2685 100644
--- a/src/main/java/at/gv/util/LoggingHandler.java
+++ b/src/main/java/at/gv/util/LoggingHandler.java
@@ -18,6 +18,11 @@ package at.gv.util;
 
 import java.io.ByteArrayOutputStream;
 import java.io.OutputStreamWriter;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 
 import javax.xml.namespace.QName;
@@ -26,6 +31,7 @@ import javax.xml.ws.handler.MessageContext;
 import javax.xml.ws.handler.soap.SOAPHandler;
 import javax.xml.ws.handler.soap.SOAPMessageContext;
 
+import org.apache.cxf.message.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,11 +46,12 @@ public class LoggingHandler implements SOAPHandler<SOAPMessageContext> {
 
 	Logger log = LoggerFactory.getLogger(LoggingHandler.class);
 
+	@Override
 	public boolean handleMessage(SOAPMessageContext context) {
-		SOAPMessage msg = context.getMessage();
-		boolean request = ((Boolean) context
+		final SOAPMessage msg = context.getMessage();
+		final boolean request = ((Boolean) context
 		    .get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
-		ByteArrayOutputStream bos = new ByteArrayOutputStream();
+		final ByteArrayOutputStream bos = new ByteArrayOutputStream();
 
 		try {
 			if (request) {
@@ -53,27 +60,43 @@ public class LoggingHandler implements SOAPHandler<SOAPMessageContext> {
 				msg.writeTo(bos);
 			}
 			
-			OutputStreamWriter writer = new OutputStreamWriter(bos);
-			String encoding = writer.getEncoding();
-
-			
+			final OutputStreamWriter writer = new OutputStreamWriter(bos);
+			writer.getEncoding();
 			
-			log.trace(bos.toString());
+			//log.trace(bos.toString());			
 			log.trace(new String(bos.toByteArray()));
+			log.trace("B64: " + Base64.getEncoder().encodeToString(bos.toByteArray()));
+			final Map<String, List> headers = (Map<String, List>) context.get(Message.PROTOCOL_HEADERS);
+			if (headers != null) {
+				for (final Entry<String, List> el : headers.entrySet()) {
+					if (el.getValue() != null)
+						log.trace("Header: " + el.getKey() + " | Value: " + Arrays.toString(el.getValue().toArray()));
+					else
+						log.trace("Header: " + el.getKey() + " | Value: " + "'null'");
+					
+				}
+			
+				
+			} else
+				log.trace("No HTTP headers");
+				
 			
-		} catch (Exception e) {
+		} catch (final Exception e) {
 			log.trace(e.getMessage(), e);
 		}
 		return true;
 	}
 
+	@Override
 	public boolean handleFault(SOAPMessageContext context) {
 		return handleMessage(context);
 	}
 
+	@Override
 	public void close(MessageContext context) {
 	}
 
+	@Override
 	public Set<QName> getHeaders() {
 		return null;
 	}
diff --git a/src/main/java/at/gv/util/client/mis/usp_v2/USPClient.java b/src/main/java/at/gv/util/client/mis/usp_v2/USPClient.java
index 4d23a1e..7bbdef9 100644
--- a/src/main/java/at/gv/util/client/mis/usp_v2/USPClient.java
+++ b/src/main/java/at/gv/util/client/mis/usp_v2/USPClient.java
@@ -1,7 +1,9 @@
 package at.gv.util.client.mis.usp_v2;
 
 import java.net.URL;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -23,7 +25,7 @@ import org.slf4j.LoggerFactory;
 import at.gv.util.LaxHostNameVerifier;
 import at.gv.util.LoggingHandler;
 import at.gv.util.MiscUtil;
-import at.gv.util.client.szr.SZRHTTPHeaderHandler;
+import at.gv.util.client.szr.PVP2XHTTPHeaderHandler;
 import at.gv.util.config.EgovUtilConfiguration;
 import at.gv.util.ex.EgovUtilException;
 import at.gv.util.wsdl.mis.usp_v2.ISyncService;
@@ -32,18 +34,31 @@ import at.gv.util.wsdl.mis.usp_v2.SynchronisationServiceServiceagent;
 import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.ListMandatesRequest;
 import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.ListMandatesResponseType;
 import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.MandateAttributesSearchFilterType;
+import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.MandateList;
+import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.MandateListType;
+import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.ObjectFactory;
+import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.SearchCriteriaTestType;
+import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.SearchCriteriaType;
+import at.gv.util.xsd.mis.usp_v2.eai.syncmsgs.TimeRangeType;
+import at.gv.util.xsd.mis.usp_v2.mandates.Mandate;
+import at.gv.util.xsd.mis.usp_v2.persondata.IdentificationType;
+import at.gv.util.xsd.mis.usp_v2.persondata.IdentificationType.Value;
 import at.gv.util.xsd.szr.pvp.PvpTokenType;
 
 public class USPClient {
 
-	@Resource
-  WebServiceContext wsContext;
+	public static final String USP_DATE_PATTERN = "yyyy-MM-dd";
+	
+	
+	@Resource WebServiceContext wsContext;
 
 	private EgovUtilConfiguration config = null;
 	private Logger log = LoggerFactory.getLogger(USPClient.class);
 	private boolean logEnabled = true;
 	private ISyncService uspSuche = null; 
 	
+	private SimpleDateFormat formater;
+	
 	public USPClient(EgovUtilConfiguration config, boolean logEnabled) throws EgovUtilException {
 		MiscUtil.assertNotNull(config, "config");
 		this.config = config;
@@ -51,65 +66,100 @@ public class USPClient {
 		initialize();
 	}
 	
-//	public GetMandatesResponse getMandates(String bpkType, String bpkValue, List<String> mandateFilters) {
-//		
-//		// assemble request
-//		GetMandatesRequest request = new GetMandatesRequest();
-//		String requestId = createUSPRequestId();
-//		log.debug("USP request id: " + requestId);
-//		request.setRequestId(requestId);
-//		Date date = new Date();
-//		try {
-//	    request.setTimestamp(MiscUtil.getXMLGregorianCalendar(date));
-//    } catch (DatatypeConfigurationException e) {
-//	    log.warn("Error initializing USP client.", e);
-//	    return null;
-//    }
-//		log.debug("USP time stamp: " + date.toString());
-//		request.setApplicationId(config.getUSPApplicationId());
-//		log.debug("USP application id: " + config.getUSPApplicationId());
-//		
-//		// set identification
-//		IdentificationType idt = new IdentificationType();
-//		idt.setType(bpkType);
-//		idt.setValue(bpkValue);
-//		request.setIdentification(idt);
-//		
-//		// set filters
-//		if (mandateFilters != null && mandateFilters.size() > 0) {
-//			MandateFilters mf = new MandateFilters();
-//			mf.getMandateFilter().addAll(mandateFilters);
-//			request.setMandateFilters(mf);
-//		}
-//		
-//		return this.uspSuche.getMandatesOperation(request);
-//		
-//				
-//	}
-
-	public void getMandates(String bpkType, String bpkValue, List<String> mandateFilters) {
-		ListMandatesRequest parameters = new ListMandatesRequest();
-		
-		MandateAttributesSearchFilterType searchFilterType = new MandateAttributesSearchFilterType();
-	
-		Object searchFilter = null;
-		searchFilterType.setFilter(searchFilter );
-		
-		
+	public List<Mandate> getMandates(String bpkType, String bpkValue, List<String> mandateFilters) throws Exception {
 		
-		//request USP
 		try {
-			log.trace("Request pre-processing finished. Requesting USP ... ");
-
-			ListMandatesResponseType results = this.uspSuche.listMandates(parameters );
+			if (mandateFilters.size() > 1)
+				log.debug("More than one mandate-profile required. Request each profile seperatly");
+						
+			List<Mandate> results = new ArrayList<Mandate>();
+			for (String mandateFilter : mandateFilters) {
+				log.trace("Building USP VDDS request ... ");
+				ListMandatesRequest req = generateRequest(bpkType, bpkValue, mandateFilter);
 			
-			log.trace("Receive response from USP. Starting response post-processing ... ");
+				log.trace("Request pre-processing finished. Requesting USP ... ");
+				ListMandatesResponseType resp = this.uspSuche.listMandates(req );
+									
+				log.trace("Receive response from USP for filter:" + mandateFilter + " . Start post processing ... ");
+				postProcessUSPMandateResult(resp, results);
+				
+			}
 			
+			return results;
+						
 		} catch (ListMandatesFault e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
+			log.warn("Receive an error from USP. Msg: " + e.getMessage(), e);
+			throw e;
+			
+		} catch (Exception e) {
+			log.error("Catch an generic error during USP communication.", e);
+			throw e;
+			
 		}
+						
+	}
+	
+	private void postProcessUSPMandateResult(ListMandatesResponseType resp, List<Mandate> results) throws USPClientException {
+		if (resp.getSearchResult() != null) {
+			if (resp.getSearchResult().getDeclaredType().isAssignableFrom(MandateList.class)) {
+				log.trace("Find 'MandateList' element in USP response");				
+				MandateList mandateList = (MandateList) resp.getSearchResult().getValue();
+				
+				if (mandateList.getMandates() != null && mandateList.getMandates().getMandate() != null) {
+					log.debug("Find #" + mandateList.getMandates().getMandate().size() + " mandates in USP response");
+					results.addAll(mandateList.getMandates().getMandate());
+					
+				} else
+					log.info("Find 'null' element in USP response. Ignore full response");
 				
+			} else
+				log.warn("'SearchResult' element in USP response contains an unknown type: " + resp.getSearchResult().getName().toString());
+			
+		} else {
+			log.debug("'SearchResult' element in USP response is 'null' Inspecting response on errors ...");
+			if (resp.getResult() != null) {
+				String errorCode = resp.getResult().getErrorCode();
+				String errorMsg = resp.getResult().getErrorMessage();
+				if (MiscUtil.isNotEmpty(errorCode) || MiscUtil.isNotEmpty(errorMsg)) {
+					log.info("Receice an error from USP! Code: " + errorCode + " Msg: " + errorMsg);
+					throw new USPClientException(errorMsg, errorCode);
+				}
+				
+			}			
+		}
+				
+	}
+
+	private ListMandatesRequest generateRequest(String bpkType, String bpkValue, String mandateFilter) {
+		ObjectFactory objFactory = new ObjectFactory();
+		
+		ListMandatesRequest parameters = new ListMandatesRequest();
+		MandateAttributesSearchFilterType searchFilterType = new MandateAttributesSearchFilterType();
+		SearchCriteriaTestType searchCriteriaTest = new SearchCriteriaTestType();
+		SearchCriteriaType searchCriteria = new SearchCriteriaType();
+		IdentificationType representative = new IdentificationType();
+		Value IdValue = new Value();
+		
+		//set bPK
+		IdValue.setValue(bpkValue);
+		representative.setValue(IdValue );
+		representative.setType(bpkType);				
+		searchCriteria.getActivationRangeOrMandateTypeOrMandatorID().add(objFactory.createSearchCriteriaTypeRepresentativeID(representative));
+				
+		//set allowed time range
+		TimeRangeType fromTo = new TimeRangeType();
+		fromTo.setFrom(formater.format(new Date()));
+		fromTo.setTo("9999-12-31");
+		searchCriteria.getActivationRangeOrMandateTypeOrMandatorID().add(objFactory.createSearchCriteriaTypeValidFromTo(fromTo));
+		
+		//set mandate filters
+		searchCriteria.getActivationRangeOrMandateTypeOrMandatorID().add(objFactory.createSearchCriteriaTypeMandateType(mandateFilter));
+		
+		searchCriteriaTest.setSearchCriteria(searchCriteria);		
+		searchFilterType.setFilter(searchCriteriaTest);
+		parameters.getSearchFilter().add(objFactory.createMandateAttributesSearchFilter(searchFilterType));
+
+		return parameters;
 	}
 	
   @SuppressWarnings({ "rawtypes", "unchecked" })
@@ -141,7 +191,13 @@ public class USPClient {
 		// PV authentication
 		log.trace("Adding WS-Security Header handler.");
 		PvpTokenType pvpToken = config.getUSPPVPToken();
-		SZRHTTPHeaderHandler szrSOAPHandler = new SZRHTTPHeaderHandler();
+		
+		VDDSRoleGenerationStrategy roleStrategy = new VDDSRoleGenerationStrategy(
+				config.getConfigurationValue("egovutil.usp.role.dynamic.participant"),
+				config.getConfigurationValue("egovutil.usp.role.dynamic.secret"));
+		
+				
+		PVP2XHTTPHeaderHandler szrSOAPHandler = new PVP2XHTTPHeaderHandler(roleStrategy);
 		szrSOAPHandler.configure(pvpToken);
     	handlerList.add(szrSOAPHandler);
 		
@@ -183,6 +239,9 @@ public class USPClient {
     		}
     		http.setTlsClientParameters(tlsParams );	
     	}
+    	
+    	formater = new SimpleDateFormat(USP_DATE_PATTERN);
+    	
   }
   
   private String createUSPRequestId() {
diff --git a/src/main/java/at/gv/util/client/mis/usp_v2/USPClientException.java b/src/main/java/at/gv/util/client/mis/usp_v2/USPClientException.java
index 96ad965..4b2302b 100644
--- a/src/main/java/at/gv/util/client/mis/usp_v2/USPClientException.java
+++ b/src/main/java/at/gv/util/client/mis/usp_v2/USPClientException.java
@@ -4,29 +4,29 @@ public class USPClientException extends Exception {
 
   private static final long serialVersionUID = 5173056345209288701L;
 
-  private int code = -1;
+  private String code;
   
-	public USPClientException(int code) {
+	public USPClientException(String code) {
 	  super();
 	  this.code = code;
   }
 
-	public USPClientException(String message, int code, Throwable cause) {
+	public USPClientException(String message, String code, Throwable cause) {
 	  super(message, cause);
 	  this.code = code;
   }
 
-	public USPClientException(String message, int code) {
+	public USPClientException(String message, String errorCode) {
 	  super(message);
-	  this.code = code;
+	  this.code = errorCode;
   }
 
-	public USPClientException(int code, Throwable cause) {
+	public USPClientException(String code, Throwable cause) {
 	  super(cause);
 	  this.code = code;
   }
 	
-	public int getCode() {
+	public String getCode() {
 		return this.code;
 	}
 
diff --git a/src/main/java/at/gv/util/client/mis/usp_v2/VDDSRoleGenerationStrategy.java b/src/main/java/at/gv/util/client/mis/usp_v2/VDDSRoleGenerationStrategy.java
new file mode 100644
index 0000000..c5573d3
--- /dev/null
+++ b/src/main/java/at/gv/util/client/mis/usp_v2/VDDSRoleGenerationStrategy.java
@@ -0,0 +1,83 @@
+package at.gv.util.client.mis.usp_v2;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.text.SimpleDateFormat;
+import java.util.Base64;
+import java.util.Date;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.util.MiscUtil;
+import at.gv.util.client.szr.IRoleGenerationStrategy;
+import at.gv.util.ex.EgovUtilException;
+
+public class VDDSRoleGenerationStrategy implements IRoleGenerationStrategy {
+	private static final Logger log = LoggerFactory.getLogger(VDDSRoleGenerationStrategy.class);
+
+	public static final String ROLE_CONSTANT_PARTNERNAME = "partner-name=";
+	public static final String ROLE_CONSTANT_SECRET = "secret=";
+	public static final String ROLE_CONSTANT_CREATIONTS = "creation-ts=";
+	
+	public static final String TS_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
+	private static final SimpleDateFormat tsFormat = new SimpleDateFormat(TS_PATTERN);
+	
+	private String participant;
+	private String authData;
+	
+	public VDDSRoleGenerationStrategy(String participant, String authData) throws EgovUtilException {
+		if (MiscUtil.isEmpty(authData)) {
+			log.error("Secret to generate VDDS role is 'null or 'empty''");
+			throw new EgovUtilException("Secret to generate VDDS role is 'null or 'empty'");
+			
+		}
+		this.authData = authData;
+		
+		if (MiscUtil.isEmpty(participant)) {
+			log.error("Participant to generate VDDS role is 'null or 'empty''");
+			throw new EgovUtilException("Secret to generate VDDS role is 'null or 'empty'");
+			
+		}
+		this.participant = participant;
+				
+		log.trace("VDDSRoleGenerationStrategy uses participant: " + this.participant + " and secret: " + this.authData);
+		
+	}
+
+	@Override
+	public String generateRoleString(String roleString) throws EgovUtilException {
+		
+		 try {
+			 String currentTS = tsFormat.format(new Date());
+			 log.trace("Generate VDDS role at: " + currentTS);
+		     MessageDigest md = MessageDigest.getInstance("SHA-1");
+		     byte[] digistInput = (currentTS + authData).getBytes("UTF-8");		     
+		     log.trace("DigistInput: " + new String(digistInput, "UTF-8"));
+		     byte[] digistOutput = md.digest(digistInput);
+		     String secret = Base64.getEncoder().encodeToString(digistOutput);
+		     
+		     StringBuilder sBuilder = new StringBuilder(roleString);
+		     sBuilder.append("(");
+		     sBuilder.append(ROLE_CONSTANT_PARTNERNAME);
+		     sBuilder.append(participant);
+		     sBuilder.append(",");
+		     sBuilder.append(ROLE_CONSTANT_SECRET);
+		     sBuilder.append(secret);
+		     sBuilder.append(",");
+		     sBuilder.append(ROLE_CONSTANT_CREATIONTS);
+		     sBuilder.append(currentTS);
+		     sBuilder.append(")");
+		     
+		     log.trace("Finale VDDS Role: " + sBuilder.toString());		     
+		     return sBuilder.toString();
+		        
+		 } catch(NoSuchAlgorithmException | UnsupportedEncodingException e) {
+		     log.error("VDDSRoleGeneration FAILED with error: " + e.getMessage(), e);
+		     throw new EgovUtilException("VDDSRoleGeneration FAILED", e);
+		        
+		 } 		
+	}
+
+}
diff --git a/src/main/java/at/gv/util/client/szr/IRoleGenerationStrategy.java b/src/main/java/at/gv/util/client/szr/IRoleGenerationStrategy.java
new file mode 100644
index 0000000..d411f21
--- /dev/null
+++ b/src/main/java/at/gv/util/client/szr/IRoleGenerationStrategy.java
@@ -0,0 +1,15 @@
+package at.gv.util.client.szr;
+
+import at.gv.util.ex.EgovUtilException;
+
+public interface IRoleGenerationStrategy {
+
+	/**
+	 * Generates a request specific role string 
+	 * @param roleString Role from configuration
+	 * 
+	 * @return Dynamic generated role
+	 * @throws EgovUtilException 
+	 */
+	public String generateRoleString(String roleString) throws EgovUtilException;
+}
diff --git a/src/main/java/at/gv/util/client/szr/PVP2XHTTPHeaderHandler.java b/src/main/java/at/gv/util/client/szr/PVP2XHTTPHeaderHandler.java
new file mode 100644
index 0000000..f4fc11b
--- /dev/null
+++ b/src/main/java/at/gv/util/client/szr/PVP2XHTTPHeaderHandler.java
@@ -0,0 +1,188 @@
+package at.gv.util.client.szr;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.cxf.message.Message;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import at.gv.util.MiscUtil;
+import at.gv.util.ex.EgovUtilException;
+import at.gv.util.xsd.szr.pvp.Param;
+import at.gv.util.xsd.szr.pvp.PvpTokenType;
+import at.gv.util.xsd.szr.pvp.PvpTokenType.Accounting;
+import at.gv.util.xsd.szr.pvp.PvpTokenType.Accounting.GvCostCenterId;
+import at.gv.util.xsd.szr.pvp.Role;
+
+public class PVP2XHTTPHeaderHandler implements SOAPHandler<SOAPMessageContext> {
+
+  private PvpTokenType pvpTokenType = null;
+  
+  private Logger log = LoggerFactory.getLogger(PVP2XHTTPHeaderHandler.class);
+
+  public static final String PVP_HEADER_COSTCENTERID_DEFAULT = "<default>";
+  public static final String PVP_HEADER_VALUE_DELIMITER = ",";
+  public static final String PVP_HEADER_ROLE_VALUE_DELIMITER = ";";
+
+  private IRoleGenerationStrategy roleStrategy = null;
+  
+  public PVP2XHTTPHeaderHandler() {
+
+  }
+  
+  public PVP2XHTTPHeaderHandler(IRoleGenerationStrategy roleGenerationStrategy) {
+	  log.info("PVP2XHTTPHeaderHandler uses RoleGenerationStrategy: " + roleGenerationStrategy.getClass().getName());
+	  this.roleStrategy = roleGenerationStrategy;
+	  
+  }
+  
+  public void close(MessageContext arg0) {
+  }
+
+
+  public boolean handleFault(SOAPMessageContext arg0) {
+	  return true;
+  }
+
+	public void configure(PvpTokenType pvpToken) {
+		MiscUtil.assertNotNull(pvpToken, "pvpToken");
+		this.pvpTokenType = pvpToken;
+	}
+	
+
+  public boolean handleMessage(SOAPMessageContext smc) {
+		log.trace("Initializing SZR SOAP message handler.");
+
+		boolean isOutMessage = ((Boolean) smc.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
+		log.trace("Outbound message: " + isOutMessage);
+		if (pvpTokenType == null) {
+			throw new NullPointerException("Please configure first the PVP token.");
+		}
+		
+		if (!isOutMessage) {
+			return true;
+		}
+		Map<String, List> headers = (Map<String, List>) smc.get(Message.PROTOCOL_HEADERS);
+		//PVP 2.x header
+		//setHeader(headers, "X-PVP-VERSION", pvpTokenType.getVersion());
+		setHeader(headers, "X-PVP-EGOVTOKEN-VERSION", pvpTokenType.getVersion());
+		setHeader(headers, "X-PVP-USERID", pvpTokenType.getAuthenticate().getUserPrincipal().getUserId());
+		setHeader(headers, "X-PVP-GID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvGid());		
+		setHeader(headers, "X-PVP-PARTICIPANT-ID", pvpTokenType.getAuthenticate().getParticipantId());		
+		setHeader(headers, "X-PVP-OU-GV-OU-ID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvOuId());		
+		setHeader(headers, "X-PVP-OU", pvpTokenType.getAuthenticate().getUserPrincipal().getOu());		
+		setHeader(headers, "X-PVP-FUNCTION", pvpTokenType.getAuthenticate().getUserPrincipal().getGvFunction());				
+		setHeader(headers, "X-PVP-SECCLASS", String.valueOf(pvpTokenType.getAuthenticate().getUserPrincipal().getGvSecClass().intValue()));				    
+		setHeader(headers, "X-PVP-PRINCIPAL-NAME", pvpTokenType.getAuthenticate().getUserPrincipal().getCn());
+		setHeader(headers, "X-PVP-BINDING", "http");
+		setHeader(headers, "X-PVP-OU-OKZ", "AT:OVS");
+		
+		
+		//PVP 1.x header
+		//setHeader(headers, "X-VERSION", pvpTokenType.getVersion());
+		setHeader(headers, "X-VERSION", "1.8");
+		setHeader(headers, "X-AUTHENTICATE-UserID", pvpTokenType.getAuthenticate().getUserPrincipal().getUserId());
+		setHeader(headers, "X-AUTHENTICATE-GVGID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvGid());		
+		setHeader(headers, "X-AUTHENTICATE-PARTICIPANTID", pvpTokenType.getAuthenticate().getParticipantId());		
+		setHeader(headers, "X-AUTHENTICATE-GVOUID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvOuId());		
+		setHeader(headers, "X-AUTHENTICATE-OU", pvpTokenType.getAuthenticate().getUserPrincipal().getOu());		
+		setHeader(headers, "X-AUTHENTICATE-GVFUNCTION", pvpTokenType.getAuthenticate().getUserPrincipal().getGvFunction());				
+		setHeader(headers, "X-AUTHENTICATE-gvSecClass", String.valueOf(pvpTokenType.getAuthenticate().getUserPrincipal().getGvSecClass().intValue()));				    
+		setHeader(headers, "X-AUTHENTICATE-cn",pvpTokenType.getAuthenticate().getUserPrincipal().getCn());
+		
+		//set roles attribute
+		String roleString = null;
+		List<Role> roles = pvpTokenType.getAuthorize().getRole();
+		if (roles != null && !roles.isEmpty()) {
+			for (Role role : roles) {
+				String roleElement = role.getValue();
+				List<Param> roleParams = role.getParam();
+				if (roleParams != null && !roleParams.isEmpty()) {
+					roleElement = roleElement + "(";
+					for (Param el : roleParams) {												
+						roleElement = roleElement + el.getKey() + "=" + el.getValue() + PVP_HEADER_VALUE_DELIMITER;
+						
+					}
+					roleElement = roleElement.substring(0, roleElement.length()-1) + ")";
+				}
+				
+				if (roleString == null)
+					roleString = roleElement;
+				else
+					roleString = roleString + PVP_HEADER_ROLE_VALUE_DELIMITER + roleElement;
+			}			
+		}
+		
+		if (roleStrategy != null) {
+			log.trace("Generate dynamic role ... ");
+			try {
+				String dynRoleString = roleStrategy.generateRoleString(roleString);
+				setHeader(headers, "X-PVP-ROLES", dynRoleString);
+				setHeader(headers, "X-AUTHORIZE-ROLES", dynRoleString);
+								
+			} catch (EgovUtilException e) {
+				throw new RuntimeException("Can NOT generate dynamic VDDS role by using: " + roleStrategy.getClass().getName(), e);
+				
+			}
+			
+		}
+		
+		
+		
+		
+		
+		//set optional headers
+		String costCenterId = StringUtils.EMPTY;
+		String invoiceRecptId = StringUtils.EMPTY;
+		
+		Accounting accounting = pvpTokenType.getAccounting();
+		if (accounting != null) {
+			invoiceRecptId = accounting.getInvoiceRecptId();			
+			if (accounting.getGvCostCenterId() != null && !accounting.getGvCostCenterId().isEmpty()) {
+				for (GvCostCenterId el : accounting.getGvCostCenterId()) {					
+					String value = StringUtils.EMPTY;
+					if (el.isDefault())
+						value = PVP_HEADER_COSTCENTERID_DEFAULT;						
+					
+					value = value + el.getValue();
+						
+					if (costCenterId.isEmpty())
+						costCenterId = value;
+					else
+						costCenterId = PVP_HEADER_VALUE_DELIMITER + value;
+					
+				}				
+			}
+		}
+		
+		setHeader(headers, "X-PVP-COST-CENTER-ID", costCenterId);	
+		setHeader(headers, "X-PVP-INVOICE-RECPT-ID", invoiceRecptId);
+				
+		setHeader(headers, "X-ACCOUNTING-CostCenterId", costCenterId);	
+		setHeader(headers, "X-ACCOUNTING-InvoiceRecptId", invoiceRecptId);
+		
+		return true;
+
+	
+  }
+
+  public Set<QName> getHeaders() {
+	  return null;
+  }
+  private void setHeader(Map<String, List> headers, String name, String value) { 
+	  if (MiscUtil.isEmpty(value))
+		  headers.put(name, Collections.singletonList(StringUtils.EMPTY));
+	  else
+		  headers.put(name, Collections.singletonList(value));
+	  
+  }
+
+}
diff --git a/src/main/java/at/gv/util/client/szr/SZRClient.java b/src/main/java/at/gv/util/client/szr/SZRClient.java
index ad54d2f..67813bd 100644
--- a/src/main/java/at/gv/util/client/szr/SZRClient.java
+++ b/src/main/java/at/gv/util/client/szr/SZRClient.java
@@ -104,7 +104,7 @@ public class SZRClient {
 
   }
   
-  public String transformBPK(PersonInfoType personInfo, String inputBpk, String inputTarget, String target, String vkz) throws SZRException, EgovUtilException {
+  public FremdBPKType transformBPK(PersonInfoType personInfo, String inputBpk, String inputTarget, String target, String vkz) throws SZRException, EgovUtilException {
   	MiscUtil.assertNotNull(personInfo, "personInfo");
   	MiscUtil.assertNotNull(target, "target");
   	String targetPrefix = "urn:publicid:gv.at:cdid+";
@@ -135,7 +135,7 @@ public class SZRClient {
   	if (response == null) {
   		return null;
   	}
-  	return response.get(0).getFremdBPK();
+  	return response.get(0);
   }
 
   @SuppressWarnings({ "rawtypes", "unchecked" })
diff --git a/src/main/java/at/gv/util/client/szr/SZRHTTPHeaderHandler.java b/src/main/java/at/gv/util/client/szr/SZRHTTPHeaderHandler.java
deleted file mode 100644
index bde6b7b..0000000
--- a/src/main/java/at/gv/util/client/szr/SZRHTTPHeaderHandler.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package at.gv.util.client.szr;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.handler.MessageContext;
-import javax.xml.ws.handler.soap.SOAPHandler;
-import javax.xml.ws.handler.soap.SOAPMessageContext;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.cxf.message.Message;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import at.gv.util.MiscUtil;
-import at.gv.util.xsd.szr.pvp.Param;
-import at.gv.util.xsd.szr.pvp.PvpTokenType;
-import at.gv.util.xsd.szr.pvp.PvpTokenType.Accounting;
-import at.gv.util.xsd.szr.pvp.PvpTokenType.Accounting.GvCostCenterId;
-import at.gv.util.xsd.szr.pvp.Role;
-
-public class SZRHTTPHeaderHandler implements SOAPHandler<SOAPMessageContext> {
-
-  private PvpTokenType pvpTokenType = null;
-  
-  private Logger log = LoggerFactory.getLogger(SZRHTTPHeaderHandler.class);
-
-  public static final String PVP_HEADER_COSTCENTERID_DEFAULT = "<default>";
-  public static final String PVP_HEADER_VALUE_DELIMITER = ",";
-  public static final String PVP_HEADER_ROLE_VALUE_DELIMITER = ";";
-
-  public void close(MessageContext arg0) {
-  }
-
-
-  public boolean handleFault(SOAPMessageContext arg0) {
-	  return true;
-  }
-
-	public void configure(PvpTokenType pvpToken) {
-		MiscUtil.assertNotNull(pvpToken, "pvpToken");
-		this.pvpTokenType = pvpToken;
-	}
-	
-
-  public boolean handleMessage(SOAPMessageContext smc) {
-		log.trace("Initializing SZR SOAP message handler.");
-
-		boolean isOutMessage = ((Boolean) smc.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
-		log.trace("Outbound message: " + isOutMessage);
-		if (pvpTokenType == null) {
-			throw new NullPointerException("Please configure first the PVP token.");
-		}
-		
-		if (!isOutMessage) {
-			return true;
-		}
-		Map<String, List> headers = (Map<String, List>) smc.get(Message.PROTOCOL_HEADERS);
-		setHeader(headers, "X-VERSION", pvpTokenType.getVersion());
-		setHeader(headers, "X-AUTHENTICATE-UserID", pvpTokenType.getAuthenticate().getUserPrincipal().getUserId());
-		setHeader(headers, "X-AUTHENTICATE-GVGID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvGid());		
-		setHeader(headers, "X-AUTHENTICATE-PARTICIPANTID", pvpTokenType.getAuthenticate().getParticipantId());		
-		setHeader(headers, "X-AUTHENTICATE-GVOUID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvOuId());		
-		setHeader(headers, "X-AUTHENTICATE-OU", pvpTokenType.getAuthenticate().getUserPrincipal().getOu());		
-		setHeader(headers, "X-AUTHENTICATE-GVFUNCTION", pvpTokenType.getAuthenticate().getUserPrincipal().getGvFunction());				
-		setHeader(headers, "X-AUTHENTICATE-gvSecClass", String.valueOf(pvpTokenType.getAuthenticate().getUserPrincipal().getGvSecClass().intValue()));				    
-		setHeader(headers, "X-AUTHENTICATE-cn",pvpTokenType.getAuthenticate().getUserPrincipal().getCn());
-		
-		//set roles attribute
-		String roleString = null;
-		List<Role> roles = pvpTokenType.getAuthorize().getRole();
-		if (roles != null && !roles.isEmpty()) {
-			for (Role role : roles) {
-				String roleElement = role.getValue();
-				List<Param> roleParams = role.getParam();
-				if (roleParams != null && !roleParams.isEmpty()) {
-					roleElement = roleElement + "(";
-					for (Param el : roleParams) {												
-						roleElement = roleElement + el.getKey() + "=" + el.getValue() + PVP_HEADER_VALUE_DELIMITER;
-						
-					}
-					roleElement = roleElement.substring(0, roleElement.length()-1) + ")";
-				}
-				
-				if (roleString == null)
-					roleString = roleElement;
-				else
-					roleString = roleString + PVP_HEADER_ROLE_VALUE_DELIMITER + roleElement;
-			}			
-		}		
-		setHeader(headers, "X-AUTHORIZE-ROLES", roleString);
-		
-		//set optional headers
-		String costCenterId = null;
-		String invoiceRecptId = null;
-		
-		Accounting accounting = pvpTokenType.getAccounting();
-		if (accounting != null) {
-			invoiceRecptId = accounting.getInvoiceRecptId();			
-			if (accounting.getGvCostCenterId() != null && !accounting.getGvCostCenterId().isEmpty()) {
-				for (GvCostCenterId el : accounting.getGvCostCenterId()) {					
-					String value = StringUtils.EMPTY;
-					if (el.isDefault())
-						value = PVP_HEADER_COSTCENTERID_DEFAULT;						
-					
-					value = value + el.getValue();
-						
-					if (costCenterId == null)
-						costCenterId = value;
-					else
-						costCenterId = PVP_HEADER_VALUE_DELIMITER + value;
-					
-				}				
-			}
-		}
-		
-		setHeader(headers, "X-ACCOUNTING-CostCenterId", costCenterId);	
-		setHeader(headers, "X-ACCOUNTING-InvoiceRecptId", invoiceRecptId);
-		
-		return true;
-
-	
-  }
-
-  public Set<QName> getHeaders() {
-	  return null;
-  }
-  private void setHeader(Map<String, List> headers, String name, String value) { 
-	  if (MiscUtil.isEmpty(value))
-		  headers.put(name, null);
-	  else
-		  headers.put(name, Collections.singletonList(value));
-	  
-  }
-
-}
diff --git a/src/main/java/at/gv/util/config/EgovUtilConfiguration.java b/src/main/java/at/gv/util/config/EgovUtilConfiguration.java
index 216e1f5..47b7b63 100644
--- a/src/main/java/at/gv/util/config/EgovUtilConfiguration.java
+++ b/src/main/java/at/gv/util/config/EgovUtilConfiguration.java
@@ -27,6 +27,9 @@ import at.gv.util.xsd.szr.pvp.PvpTokenType;
  */
 public interface EgovUtilConfiguration {
 
+	String getConfigurationValue(String key);
+	String getConfigurationValue(String key, String defaultValue);
+	
 	JaxWsSSLConfiguration getMOASPSSsslConfiguration();
 	JaxWsSSLConfiguration getMOAIDsslConfiguration();
 	JaxWsSSLConfiguration getMOAZSsslConfiguration();
diff --git a/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java b/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java
index 66fa155..9693e0a 100644
--- a/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java
+++ b/src/main/java/at/gv/util/config/EgovUtilPropertiesConfiguration.java
@@ -108,7 +108,20 @@ public class EgovUtilPropertiesConfiguration implements EgovUtilConfiguration {
 		 ersbsslConfiguration = new JaxWsSSLConfigurationPropertiesImpl(this.props, this.configDir, "egovutil.ersb");
 	}
 	
-	public JaxWsSSLConfiguration getMOASPSSsslConfiguration() {
+
+	@Override
+	public String getConfigurationValue(String key) {
+		return this.props.getProperty(key);
+		
+	}
+
+	@Override
+	public String getConfigurationValue(String key, String defaultValue) {
+		return this.props.getProperty(key, defaultValue);
+		
+	}	
+	
+  public JaxWsSSLConfiguration getMOASPSSsslConfiguration() {
 	  return moaSPSSsslConfiguration;
   }
 
diff --git a/src/main/java/at/gv/util/wsdl/mis/usp_v2/CreateMandateFault.java b/src/main/java/at/gv/util/wsdl/mis/usp_v2/CreateMandateFault.java
index 6109b1d..7903ab0 100644
--- a/src/main/java/at/gv/util/wsdl/mis/usp_v2/CreateMandateFault.java
+++ b/src/main/java/at/gv/util/wsdl/mis/usp_v2/CreateMandateFault.java
@@ -6,7 +6,7 @@ import javax.xml.ws.WebFault;
 
 /**
  * This class was generated by Apache CXF 3.1.10
- * 2018-09-12T08:57:26.619+02:00
+ * 2019-04-10T12:00:27.818+02:00
  * Generated source version: 3.1.10
  */
 
diff --git a/src/main/java/at/gv/util/wsdl/mis/usp_v2/CreateMandateStateFault.java b/src/main/java/at/gv/util/wsdl/mis/usp_v2/CreateMandateStateFault.java
index 7a03bec..4303e32 100644
--- a/src/main/java/at/gv/util/wsdl/mis/usp_v2/CreateMandateStateFault.java
+++ b/src/main/java/at/gv/util/wsdl/mis/usp_v2/CreateMandateStateFault.java
@@ -6,7 +6,7 @@ import javax.xml.ws.WebFault;
 
 /**
  * This class was generated by Apache CXF 3.1.10
- * 2018-09-12T08:57:26.581+02:00
+ * 2019-04-10T12:00:27.780+02:00
  * Generated source version: 3.1.10
  */
 
diff --git a/src/main/java/at/gv/util/wsdl/mis/usp_v2/ISyncService.java b/src/main/java/at/gv/util/wsdl/mis/usp_v2/ISyncService.java
index e64ecf7..4cba0d0 100644
--- a/src/main/java/at/gv/util/wsdl/mis/usp_v2/ISyncService.java
+++ b/src/main/java/at/gv/util/wsdl/mis/usp_v2/ISyncService.java
@@ -9,7 +9,7 @@ import javax.xml.bind.annotation.XmlSeeAlso;
 
 /**
  * This class was generated by Apache CXF 3.1.10
- * 2018-09-12T08:57:26.650+02:00
+ * 2019-04-10T12:00:27.865+02:00
  * Generated source version: 3.1.10
  * 
  */
diff --git a/src/main/java/at/gv/util/wsdl/mis/usp_v2/ListMandatesFault.java b/src/main/java/at/gv/util/wsdl/mis/usp_v2/ListMandatesFault.java
index 7766724..a85dbd7 100644
--- a/src/main/java/at/gv/util/wsdl/mis/usp_v2/ListMandatesFault.java
+++ b/src/main/java/at/gv/util/wsdl/mis/usp_v2/ListMandatesFault.java
@@ -6,7 +6,7 @@ import javax.xml.ws.WebFault;
 
 /**
  * This class was generated by Apache CXF 3.1.10
- * 2018-09-12T08:57:26.619+02:00
+ * 2019-04-10T12:00:27.833+02:00
  * Generated source version: 3.1.10
  */
 
diff --git a/src/main/java/at/gv/util/wsdl/mis/usp_v2/RequestModificationTokenFault.java b/src/main/java/at/gv/util/wsdl/mis/usp_v2/RequestModificationTokenFault.java
index 5f7c6c5..6a03600 100644
--- a/src/main/java/at/gv/util/wsdl/mis/usp_v2/RequestModificationTokenFault.java
+++ b/src/main/java/at/gv/util/wsdl/mis/usp_v2/RequestModificationTokenFault.java
@@ -6,7 +6,7 @@ import javax.xml.ws.WebFault;
 
 /**
  * This class was generated by Apache CXF 3.1.10
- * 2018-09-12T08:57:26.635+02:00
+ * 2019-04-10T12:00:27.849+02:00
  * Generated source version: 3.1.10
  */
 
diff --git a/src/main/java/at/gv/util/wsdl/mis/usp_v2/SynchronisationServiceServiceagent.java b/src/main/java/at/gv/util/wsdl/mis/usp_v2/SynchronisationServiceServiceagent.java
index 90fb789..d15a744 100644
--- a/src/main/java/at/gv/util/wsdl/mis/usp_v2/SynchronisationServiceServiceagent.java
+++ b/src/main/java/at/gv/util/wsdl/mis/usp_v2/SynchronisationServiceServiceagent.java
@@ -10,7 +10,7 @@ import javax.xml.ws.Service;
 
 /**
  * This class was generated by Apache CXF 3.1.10
- * 2018-09-12T08:57:26.666+02:00
+ * 2019-04-10T12:00:27.898+02:00
  * Generated source version: 3.1.10
  * 
  */
diff --git a/src/main/java/at/gv/util/wsdl/mis/usp_v2/TerminateMandateFault.java b/src/main/java/at/gv/util/wsdl/mis/usp_v2/TerminateMandateFault.java
index f0c0e0e..7a02adc 100644
--- a/src/main/java/at/gv/util/wsdl/mis/usp_v2/TerminateMandateFault.java
+++ b/src/main/java/at/gv/util/wsdl/mis/usp_v2/TerminateMandateFault.java
@@ -6,7 +6,7 @@ import javax.xml.ws.WebFault;
 
 /**
  * This class was generated by Apache CXF 3.1.10
- * 2018-09-12T08:57:26.635+02:00
+ * 2019-04-10T12:00:27.865+02:00
  * Generated source version: 3.1.10
  */
 
diff --git a/src/main/java/at/gv/util/wsdl/mis/usp_v2/TerminateMandateStateFault.java b/src/main/java/at/gv/util/wsdl/mis/usp_v2/TerminateMandateStateFault.java
index 937b1ba..db29f6d 100644
--- a/src/main/java/at/gv/util/wsdl/mis/usp_v2/TerminateMandateStateFault.java
+++ b/src/main/java/at/gv/util/wsdl/mis/usp_v2/TerminateMandateStateFault.java
@@ -6,7 +6,7 @@ import javax.xml.ws.WebFault;
 
 /**
  * This class was generated by Apache CXF 3.1.10
- * 2018-09-12T08:57:26.635+02:00
+ * 2019-04-10T12:00:27.865+02:00
  * Generated source version: 3.1.10
  */
 
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/FilterType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/FilterType.java
index 97c6fce..3e045a5 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/FilterType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/FilterType.java
@@ -3,7 +3,9 @@ package at.gv.util.xsd.mis.usp_v2.eai.syncmsgs;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlMixed;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 
@@ -28,9 +30,6 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "FilterType", propOrder = {
-    "filter"
-})
 @XmlSeeAlso({
     MandateAttributesSearchFilterType.class,
     MandateIDSearchFilterType.class,
@@ -39,31 +38,8 @@ import javax.xml.bind.annotation.XmlType;
 })
 public class FilterType {
 
-    @XmlElement(name = "Filter", required = true)
-    protected Object filter;
 
-    /**
-     * Ruft den Wert der filter-Eigenschaft ab.
-     * 
-     * @return
-     *     possible object is
-     *     {@link Object }
-     *     
-     */
-    public Object getFilter() {
-        return filter;
-    }
 
-    /**
-     * Legt den Wert der filter-Eigenschaft fest.
-     * 
-     * @param value
-     *     allowed object is
-     *     {@link Object }
-     *     
-     */
-    public void setFilter(Object value) {
-        this.filter = value;
-    }
+
 
 }
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ListMandatesRequest.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ListMandatesRequest.java
index 50374a1..94c65c0 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ListMandatesRequest.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ListMandatesRequest.java
@@ -69,9 +69,9 @@ public class ListMandatesRequest {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link MandateAttributesSearchFilterType }{@code >}
      * {@link JAXBElement }{@code <}{@link PaginationFilter }{@code >}
      * {@link JAXBElement }{@code <}{@link FilterType }{@code >}
+     * {@link JAXBElement }{@code <}{@link MandateAttributesSearchFilterType }{@code >}
      * {@link JAXBElement }{@code <}{@link MandateIDSearchFilterType }{@code >}
      * 
      * 
@@ -89,8 +89,8 @@ public class ListMandatesRequest {
      * @return
      *     possible object is
      *     {@link JAXBElement }{@code <}{@link ProcessTypeOutputFilter }{@code >}
-     *     {@link JAXBElement }{@code <}{@link OutputFilterType }{@code >}
      *     {@link JAXBElement }{@code <}{@link ListReferencedMandatesOutputFilter }{@code >}
+     *     {@link JAXBElement }{@code <}{@link OutputFilterType }{@code >}
      *     
      */
     public JAXBElement<? extends OutputFilterType> getOutputFilter() {
@@ -103,8 +103,8 @@ public class ListMandatesRequest {
      * @param value
      *     allowed object is
      *     {@link JAXBElement }{@code <}{@link ProcessTypeOutputFilter }{@code >}
-     *     {@link JAXBElement }{@code <}{@link OutputFilterType }{@code >}
      *     {@link JAXBElement }{@code <}{@link ListReferencedMandatesOutputFilter }{@code >}
+     *     {@link JAXBElement }{@code <}{@link OutputFilterType }{@code >}
      *     
      */
     public void setOutputFilter(JAXBElement<? extends OutputFilterType> value) {
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ListMandatesResponseType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ListMandatesResponseType.java
index f47312e..1875dd4 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ListMandatesResponseType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ListMandatesResponseType.java
@@ -87,8 +87,8 @@ public class ListMandatesResponseType {
      * @return
      *     possible object is
      *     {@link JAXBElement }{@code <}{@link MandateList }{@code >}
-     *     {@link JAXBElement }{@code <}{@link ReferencedMandatesResult }{@code >}
      *     {@link JAXBElement }{@code <}{@link Object }{@code >}
+     *     {@link JAXBElement }{@code <}{@link ReferencedMandatesResult }{@code >}
      *     
      */
     public JAXBElement<?> getSearchResult() {
@@ -101,8 +101,8 @@ public class ListMandatesResponseType {
      * @param value
      *     allowed object is
      *     {@link JAXBElement }{@code <}{@link MandateList }{@code >}
-     *     {@link JAXBElement }{@code <}{@link ReferencedMandatesResult }{@code >}
      *     {@link JAXBElement }{@code <}{@link Object }{@code >}
+     *     {@link JAXBElement }{@code <}{@link ReferencedMandatesResult }{@code >}
      *     
      */
     public void setSearchResult(JAXBElement<?> value) {
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/MandateAttributesSearchFilterType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/MandateAttributesSearchFilterType.java
index b451c28..1f49372 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/MandateAttributesSearchFilterType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/MandateAttributesSearchFilterType.java
@@ -3,6 +3,7 @@ package at.gv.util.xsd.mis.usp_v2.eai.syncmsgs;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
 
@@ -21,25 +22,7 @@ import javax.xml.bind.annotation.XmlType;
  *             &lt;complexContent&gt;
  *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
  *                 &lt;sequence&gt;
- *                   &lt;element name="SearchCriteria"&gt;
- *                     &lt;complexType&gt;
- *                       &lt;complexContent&gt;
- *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
- *                           &lt;sequence maxOccurs="7"&gt;
- *                             &lt;choice&gt;
- *                               &lt;element name="ActivationRange" type="{http://eai.brz.gv.at/services/vdds/sync-msgs}TimeRangeType"/&gt;
- *                               &lt;element name="MandateType" type="{http://reference.e-government.gv.at/namespace/mandates/20040701#}TextualDescriptionType"/&gt;
- *                               &lt;element name="MandatorID" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}IdentificationType"/&gt;
- *                               &lt;element name="RepresentativeID" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}IdentificationType"/&gt;
- *                               &lt;element name="TerminationRange" type="{http://eai.brz.gv.at/services/vdds/sync-msgs}TimeRangeType"/&gt;
- *                               &lt;element name="ValidFromTo" type="{http://eai.brz.gv.at/services/vdds/sync-msgs}TimeRangeType"/&gt;
- *                               &lt;element ref="{http://reference.e-government.gv.at/namespace/mandates/20040701#}Properties"/&gt;
- *                             &lt;/choice&gt;
- *                           &lt;/sequence&gt;
- *                         &lt;/restriction&gt;
- *                       &lt;/complexContent&gt;
- *                     &lt;/complexType&gt;
- *                   &lt;/element&gt;
+ *                   &lt;element ref="{http://eai.brz.gv.at/services/vdds/sync-msgs}SearchCriteria"/&gt;
  *                 &lt;/sequence&gt;
  *               &lt;/restriction&gt;
  *             &lt;/complexContent&gt;
@@ -54,10 +37,38 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "MandateAttributesSearchFilterType")
+@XmlType(name = "MandateAttributesSearchFilterType", propOrder = {
+	    "filter"
+	})
 public class MandateAttributesSearchFilterType
     extends FilterType
 {
 
+    @XmlElement(name = "Filter", required = true)
+    protected SearchCriteriaTestType filter;
+	
+    /**
+     * Ruft den Wert der filter-Eigenschaft ab.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Object }
+     *     
+     */
+    public SearchCriteriaTestType getFilter() {
+        return (SearchCriteriaTestType) filter;
+    }
+
+    /**
+     * Legt den Wert der filter-Eigenschaft fest.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Object }
+     *     
+     */
+    public void setFilter(SearchCriteriaTestType value) {
+        this.filter = value;
+    }
 
 }
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/MandateIDSearchFilterType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/MandateIDSearchFilterType.java
index 58a6b32..1d8ff63 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/MandateIDSearchFilterType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/MandateIDSearchFilterType.java
@@ -3,6 +3,7 @@ package at.gv.util.xsd.mis.usp_v2.eai.syncmsgs;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
 
@@ -46,10 +47,38 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "MandateIDSearchFilterType")
+@XmlType(name = "MandateIDSearchFilterType", propOrder = {
+	    "filter"
+	})
 public class MandateIDSearchFilterType
     extends FilterType
 {
 
+    @XmlElement(name = "Filter", required = true)
+    protected SearchCriteriaTestType filter;
+	
+    /**
+     * Ruft den Wert der filter-Eigenschaft ab.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Object }
+     *     
+     */
+    public SearchCriteriaTestType getFilter() {
+        return (SearchCriteriaTestType) filter;
+    }
+
+    /**
+     * Legt den Wert der filter-Eigenschaft fest.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Object }
+     *     
+     */
+    public void setFilter(SearchCriteriaTestType value) {
+        this.filter = value;
+    }
 
 }
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ObjectFactory.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ObjectFactory.java
index a015968..38ca081 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ObjectFactory.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/ObjectFactory.java
@@ -4,8 +4,11 @@ package at.gv.util.xsd.mis.usp_v2.eai.syncmsgs;
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.annotation.XmlElementDecl;
 import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import javax.xml.namespace.QName;
 import at.gv.util.xsd.mis.usp_v2.eai.common.ReferableResultType;
+import at.gv.util.xsd.mis.usp_v2.persondata.IdentificationType;
 
 
 /**
@@ -25,6 +28,7 @@ import at.gv.util.xsd.mis.usp_v2.eai.common.ReferableResultType;
 @XmlRegistry
 public class ObjectFactory {
 
+    private final static QName _SearchCriteria_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "SearchCriteria");
     private final static QName _CreateMandateAck_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "CreateMandateAck");
     private final static QName _Result_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "Result");
     private final static QName _CreateMandateRequest_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "CreateMandateRequest");
@@ -41,6 +45,12 @@ public class ObjectFactory {
     private final static QName _ReferencedMandatesResult_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "ReferencedMandatesResult");
     private final static QName _TerminateMandateAck_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "TerminateMandateAck");
     private final static QName _TerminateMandateRequest_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "TerminateMandateRequest");
+    private final static QName _SearchCriteriaTypeActivationRange_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "ActivationRange");
+    private final static QName _SearchCriteriaTypeMandateType_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "MandateType");
+    private final static QName _SearchCriteriaTypeMandatorID_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "MandatorID");
+    private final static QName _SearchCriteriaTypeRepresentativeID_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "RepresentativeID");
+    private final static QName _SearchCriteriaTypeTerminationRange_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "TerminationRange");
+    private final static QName _SearchCriteriaTypeValidFromTo_QNAME = new QName("http://eai.brz.gv.at/services/vdds/sync-msgs", "ValidFromTo");
 
     /**
      * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.util.xsd.mis.usp_v2.eai.syncmsgs
@@ -65,6 +75,14 @@ public class ObjectFactory {
         return new SimplePath();
     }
 
+    /**
+     * Create an instance of {@link SearchCriteriaType }
+     * 
+     */
+    public SearchCriteriaType createSearchCriteriaType() {
+        return new SearchCriteriaType();
+    }
+
     /**
      * Create an instance of {@link CreateMandateAsyncResponse }
      * 
@@ -201,6 +219,14 @@ public class ObjectFactory {
         return new TextProperties.Property();
     }
 
+    /**
+     * Create an instance of {@link SearchCriteriaTestType }
+     * 
+     */
+    public SearchCriteriaTestType createSearchCriteriaTestType() {
+        return new SearchCriteriaTestType();
+    }
+
     /**
      * Create an instance of {@link MandateListType }
      * 
@@ -233,6 +259,15 @@ public class ObjectFactory {
         return new SimplePath.PathTo();
     }
 
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link SearchCriteriaType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", name = "SearchCriteria")
+    public JAXBElement<SearchCriteriaType> createSearchCriteria(SearchCriteriaType value) {
+        return new JAXBElement<SearchCriteriaType>(_SearchCriteria_QNAME, SearchCriteriaType.class, null, value);
+    }
+
     /**
      * Create an instance of {@link JAXBElement }{@code <}{@link ReferableResultType }{@code >}}
      * 
@@ -377,4 +412,59 @@ public class ObjectFactory {
         return new JAXBElement<MandateRequestType>(_TerminateMandateRequest_QNAME, MandateRequestType.class, null, value);
     }
 
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link TimeRangeType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", name = "ActivationRange", scope = SearchCriteriaType.class)
+    public JAXBElement<TimeRangeType> createSearchCriteriaTypeActivationRange(TimeRangeType value) {
+        return new JAXBElement<TimeRangeType>(_SearchCriteriaTypeActivationRange_QNAME, TimeRangeType.class, SearchCriteriaType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", name = "MandateType", scope = SearchCriteriaType.class)
+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    public JAXBElement<String> createSearchCriteriaTypeMandateType(String value) {
+        return new JAXBElement<String>(_SearchCriteriaTypeMandateType_QNAME, String.class, SearchCriteriaType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link IdentificationType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", name = "MandatorID", scope = SearchCriteriaType.class)
+    public JAXBElement<IdentificationType> createSearchCriteriaTypeMandatorID(IdentificationType value) {
+        return new JAXBElement<IdentificationType>(_SearchCriteriaTypeMandatorID_QNAME, IdentificationType.class, SearchCriteriaType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link IdentificationType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", name = "RepresentativeID", scope = SearchCriteriaType.class)
+    public JAXBElement<IdentificationType> createSearchCriteriaTypeRepresentativeID(IdentificationType value) {
+        return new JAXBElement<IdentificationType>(_SearchCriteriaTypeRepresentativeID_QNAME, IdentificationType.class, SearchCriteriaType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link TimeRangeType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", name = "TerminationRange", scope = SearchCriteriaType.class)
+    public JAXBElement<TimeRangeType> createSearchCriteriaTypeTerminationRange(TimeRangeType value) {
+        return new JAXBElement<TimeRangeType>(_SearchCriteriaTypeTerminationRange_QNAME, TimeRangeType.class, SearchCriteriaType.class, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link TimeRangeType }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", name = "ValidFromTo", scope = SearchCriteriaType.class)
+    public JAXBElement<TimeRangeType> createSearchCriteriaTypeValidFromTo(TimeRangeType value) {
+        return new JAXBElement<TimeRangeType>(_SearchCriteriaTypeValidFromTo_QNAME, TimeRangeType.class, SearchCriteriaType.class, value);
+    }
+
 }
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/PaginationFilter.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/PaginationFilter.java
index 43db3b3..e17102d 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/PaginationFilter.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/PaginationFilter.java
@@ -3,6 +3,7 @@ package at.gv.util.xsd.mis.usp_v2.eai.syncmsgs;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
 
@@ -36,10 +37,38 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "")
+@XmlType(name = "PaginationFilterType", propOrder = {
+	    "filter"
+	})
 public class PaginationFilter
     extends FilterType
 {
+    @XmlElement(name = "Filter", required = true)
+    protected PaginationType filter;
+	
+    /**
+     * Ruft den Wert der filter-Eigenschaft ab.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Object }
+     *     
+     */
+    public PaginationType getFilter() {
+        return (PaginationType) filter;
+    }
+
+    /**
+     * Legt den Wert der filter-Eigenschaft fest.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Object }
+     *     
+     */
+    public void setFilter(PaginationType value) {
+        this.filter = value;
+    }
 
 
 }
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/PaginationType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/PaginationType.java
new file mode 100644
index 0000000..21d6da8
--- /dev/null
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/PaginationType.java
@@ -0,0 +1,43 @@
+
+package at.gv.util.xsd.mis.usp_v2.eai.syncmsgs;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PaginationType", propOrder = {
+    "pagination"
+})
+public class PaginationType {
+
+    @XmlElement(name = "Pagination", required = true)
+    protected Pagination pagination;
+
+    /**
+     * Ruft den Wert der searchCriteria-Eigenschaft ab.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Pagination }
+     *     
+     */
+    public Pagination getPagination() {
+        return pagination;
+    }
+
+    /**
+     * Legt den Wert der searchCriteria-Eigenschaft fest.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Pagination }
+     *     
+     */
+    public void setPagination(Pagination value) {
+        this.pagination = value;
+    }
+
+}
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/SearchCriteriaTestType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/SearchCriteriaTestType.java
new file mode 100644
index 0000000..53fa3aa
--- /dev/null
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/SearchCriteriaTestType.java
@@ -0,0 +1,62 @@
+
+package at.gv.util.xsd.mis.usp_v2.eai.syncmsgs;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java-Klasse für SearchCriteriaTestType complex type.
+ * 
+ * <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
+ * 
+ * <pre>
+ * &lt;complexType name="SearchCriteriaTestType"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element ref="{http://eai.brz.gv.at/services/vdds/sync-msgs}SearchCriteria"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SearchCriteriaType", propOrder = {
+    "searchCriteria"
+})
+public class SearchCriteriaTestType {
+
+    @XmlElement(name = "SearchCriteria", required = true)
+    protected SearchCriteriaType searchCriteria;
+
+    /**
+     * Ruft den Wert der searchCriteria-Eigenschaft ab.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SearchCriteriaType }
+     *     
+     */
+    public SearchCriteriaType getSearchCriteria() {
+        return searchCriteria;
+    }
+
+    /**
+     * Legt den Wert der searchCriteria-Eigenschaft fest.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SearchCriteriaType }
+     *     
+     */
+    public void setSearchCriteria(SearchCriteriaType value) {
+        this.searchCriteria = value;
+    }
+
+}
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/SearchCriteriaType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/SearchCriteriaType.java
new file mode 100644
index 0000000..c09be79
--- /dev/null
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/eai/syncmsgs/SearchCriteriaType.java
@@ -0,0 +1,97 @@
+
+package at.gv.util.xsd.mis.usp_v2.eai.syncmsgs;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+import at.gv.util.xsd.mis.usp_v2.mandates.PropertiesType;
+import at.gv.util.xsd.mis.usp_v2.persondata.IdentificationType;
+
+
+/**
+ * <p>Java-Klasse für SearchCriteriaType complex type.
+ * 
+ * <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
+ * 
+ * <pre>
+ * &lt;complexType name="SearchCriteriaType"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence maxOccurs="7"&gt;
+ *         &lt;choice&gt;
+ *           &lt;element name="ActivationRange" type="{http://eai.brz.gv.at/services/vdds/sync-msgs}TimeRangeType"/&gt;
+ *           &lt;element name="MandateType" type="{http://reference.e-government.gv.at/namespace/mandates/20040701#}TextualDescriptionType"/&gt;
+ *           &lt;element name="MandatorID" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}IdentificationType"/&gt;
+ *           &lt;element name="RepresentativeID" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}IdentificationType"/&gt;
+ *           &lt;element name="TerminationRange" type="{http://eai.brz.gv.at/services/vdds/sync-msgs}TimeRangeType"/&gt;
+ *           &lt;element name="ValidFromTo" type="{http://eai.brz.gv.at/services/vdds/sync-msgs}TimeRangeType"/&gt;
+ *           &lt;element ref="{http://reference.e-government.gv.at/namespace/mandates/20040701#}Properties"/&gt;
+ *         &lt;/choice&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SearchCriteriaTestType", propOrder = {
+    "activationRangeOrMandateTypeOrMandatorID"
+})
+public class SearchCriteriaType {
+		
+    @XmlElementRefs({
+        @XmlElementRef(name = "ValidFromTo", namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "MandatorID", namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "ActivationRange", namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "RepresentativeID", namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "TerminationRange", namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "MandateType", namespace = "http://eai.brz.gv.at/services/vdds/sync-msgs", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "Properties", namespace = "http://reference.e-government.gv.at/namespace/mandates/20040701#", type = JAXBElement.class, required = false)
+    })
+    protected List<JAXBElement<?>> activationRangeOrMandateTypeOrMandatorID;
+
+    /**
+     * Gets the value of the activationRangeOrMandateTypeOrMandatorID property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the activationRangeOrMandateTypeOrMandatorID property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getActivationRangeOrMandateTypeOrMandatorID().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JAXBElement }{@code <}{@link TimeRangeType }{@code >}
+     * {@link JAXBElement }{@code <}{@link IdentificationType }{@code >}
+     * {@link JAXBElement }{@code <}{@link TimeRangeType }{@code >}
+     * {@link JAXBElement }{@code <}{@link IdentificationType }{@code >}
+     * {@link JAXBElement }{@code <}{@link TimeRangeType }{@code >}
+     * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link JAXBElement }{@code <}{@link PropertiesType }{@code >}
+     * 
+     * 
+     */
+    public List<JAXBElement<?>> getActivationRangeOrMandateTypeOrMandatorID() {
+        if (activationRangeOrMandateTypeOrMandatorID == null) {
+            activationRangeOrMandateTypeOrMandatorID = new ArrayList<JAXBElement<?>>();
+        }
+        return this.activationRangeOrMandateTypeOrMandatorID;
+    }
+
+}
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/mandates/PropertiesType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/mandates/PropertiesType.java
index 9b666d0..b2a921c 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/mandates/PropertiesType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/mandates/PropertiesType.java
@@ -117,8 +117,8 @@ public class PropertiesType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/mandates/SimpleMandateContentType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/mandates/SimpleMandateContentType.java
index 8214f3c..31e425d 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/mandates/SimpleMandateContentType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/mandates/SimpleMandateContentType.java
@@ -76,8 +76,8 @@ import at.gv.util.xsd.mis.usp_v2.persondata.PhysicalPersonType;
 public class SimpleMandateContentType {
 
     @XmlElementRefs({
-        @XmlElementRef(name = "ParameterisedDescription", namespace = "http://reference.e-government.gv.at/namespace/mandates/20040701#", type = JAXBElement.class, required = false),
-        @XmlElementRef(name = "TextualDescription", namespace = "http://reference.e-government.gv.at/namespace/mandates/20040701#", type = JAXBElement.class, required = false)
+        @XmlElementRef(name = "TextualDescription", namespace = "http://reference.e-government.gv.at/namespace/mandates/20040701#", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "ParameterisedDescription", namespace = "http://reference.e-government.gv.at/namespace/mandates/20040701#", type = JAXBElement.class, required = false)
     })
     protected List<JAXBElement<?>> parameterisedDescriptionOrTextualDescription;
     @XmlElement(name = "References")
@@ -113,8 +113,8 @@ public class SimpleMandateContentType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link ParameterisedDescriptionType }{@code >}
      * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link JAXBElement }{@code <}{@link ParameterisedDescriptionType }{@code >}
      * 
      * 
      */
@@ -305,8 +305,8 @@ public class SimpleMandateContentType {
 
         @XmlElementRefs({
             @XmlElementRef(name = "AnyConstraints", namespace = "http://reference.e-government.gv.at/namespace/mandates/20040701#", type = JAXBElement.class, required = false),
-            @XmlElementRef(name = "PhysicalPerson", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class, required = false),
-            @XmlElementRef(name = "CorporateBody", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class, required = false)
+            @XmlElementRef(name = "CorporateBody", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class, required = false),
+            @XmlElementRef(name = "PhysicalPerson", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class, required = false)
         })
         protected List<JAXBElement<?>> anyConstraintsOrCorporateBodyOrPhysicalPerson;
 
@@ -328,8 +328,8 @@ public class SimpleMandateContentType {
          * 
          * <p>
          * Objects of the following type(s) are allowed in the list
-         * {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
          * {@link JAXBElement }{@code <}{@link CorporateBodyType }{@code >}
+         * {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
          * {@link JAXBElement }{@code <}{@link String }{@code >}
          * 
          * 
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactCorporateBodyType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactCorporateBodyType.java
index 91d4790..65e255c 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactCorporateBodyType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactCorporateBodyType.java
@@ -188,8 +188,8 @@ public class CompactCorporateBodyType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactPersonDataType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactPersonDataType.java
index 788e738..2667836 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactPersonDataType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactPersonDataType.java
@@ -75,11 +75,11 @@ public class CompactPersonDataType
      * 
      * @return
      *     possible object is
-     *     {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
-     *     {@link JAXBElement }{@code <}{@link CompactCorporateBodyType }{@code >}
      *     {@link JAXBElement }{@code <}{@link CompactPhysicalPersonType }{@code >}
      *     {@link JAXBElement }{@code <}{@link AbstractPersonType }{@code >}
      *     {@link JAXBElement }{@code <}{@link CorporateBodyType }{@code >}
+     *     {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
+     *     {@link JAXBElement }{@code <}{@link CompactCorporateBodyType }{@code >}
      *     
      */
     public JAXBElement<? extends AbstractPersonType> getPerson() {
@@ -91,11 +91,11 @@ public class CompactPersonDataType
      * 
      * @param value
      *     allowed object is
-     *     {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
-     *     {@link JAXBElement }{@code <}{@link CompactCorporateBodyType }{@code >}
      *     {@link JAXBElement }{@code <}{@link CompactPhysicalPersonType }{@code >}
      *     {@link JAXBElement }{@code <}{@link AbstractPersonType }{@code >}
      *     {@link JAXBElement }{@code <}{@link CorporateBodyType }{@code >}
+     *     {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
+     *     {@link JAXBElement }{@code <}{@link CompactCorporateBodyType }{@code >}
      *     
      */
     public void setPerson(JAXBElement<? extends AbstractPersonType> value) {
@@ -120,12 +120,12 @@ public class CompactPersonDataType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link AbstractAddressType }{@code >}
-     * {@link JAXBElement }{@code <}{@link CompactPostalAddressType }{@code >}
+     * {@link JAXBElement }{@code <}{@link TypedPostalAddressType }{@code >}
      * {@link JAXBElement }{@code <}{@link PostalAddressType }{@code >}
-     * {@link JAXBElement }{@code <}{@link TelephoneAddressType }{@code >}
      * {@link JAXBElement }{@code <}{@link InternetAddressType }{@code >}
-     * {@link JAXBElement }{@code <}{@link TypedPostalAddressType }{@code >}
+     * {@link JAXBElement }{@code <}{@link CompactPostalAddressType }{@code >}
+     * {@link JAXBElement }{@code <}{@link TelephoneAddressType }{@code >}
+     * {@link JAXBElement }{@code <}{@link AbstractAddressType }{@code >}
      * 
      * 
      */
@@ -237,8 +237,8 @@ public class CompactPersonDataType
          * 
          * <p>
          * Objects of the following type(s) are allowed in the list
-         * {@link Object }
          * {@link Element }
+         * {@link Object }
          * {@link String }
          * 
          * 
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactPhysicalPersonType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactPhysicalPersonType.java
index 23fa08a..a12e6d2 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactPhysicalPersonType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CompactPhysicalPersonType.java
@@ -243,8 +243,8 @@ public class CompactPhysicalPersonType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CorporateBodyType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CorporateBodyType.java
index 3c0b8a0..47219b0 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CorporateBodyType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/CorporateBodyType.java
@@ -256,8 +256,8 @@ public class CorporateBodyType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/IdentificationType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/IdentificationType.java
index a485e83..5b2fe7b 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/IdentificationType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/IdentificationType.java
@@ -172,8 +172,8 @@ public class IdentificationType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/InternetAddressType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/InternetAddressType.java
index 94662ff..ec46194 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/InternetAddressType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/InternetAddressType.java
@@ -121,8 +121,8 @@ public class InternetAddressType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/NationalityType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/NationalityType.java
index 0a5e13e..383ca3d 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/NationalityType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/NationalityType.java
@@ -52,10 +52,10 @@ import org.w3c.dom.Element;
 public class NationalityType {
 
     @XmlElementRefs({
-        @XmlElementRef(name = "CountryNameFR", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class),
         @XmlElementRef(name = "ISOCode3", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class),
-        @XmlElementRef(name = "CountryNameEN", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class),
-        @XmlElementRef(name = "CountryNameDE", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class)
+        @XmlElementRef(name = "CountryNameDE", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class),
+        @XmlElementRef(name = "CountryNameFR", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class),
+        @XmlElementRef(name = "CountryNameEN", namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", type = JAXBElement.class)
     })
     @XmlMixed
     @XmlAnyElement(lax = true)
@@ -79,13 +79,13 @@ public class NationalityType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Element }
      * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link Object }
+     * {@link String }
+     * {@link Element }
      * {@link JAXBElement }{@code <}{@link String }{@code >}
      * {@link JAXBElement }{@code <}{@link String }{@code >}
      * {@link JAXBElement }{@code <}{@link String }{@code >}
-     * {@link Object }
-     * {@link String }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/PersonDataType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/PersonDataType.java
index 1c81b4d..f160a2f 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/PersonDataType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/PersonDataType.java
@@ -75,11 +75,11 @@ public class PersonDataType
      * 
      * @return
      *     possible object is
-     *     {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
-     *     {@link JAXBElement }{@code <}{@link CompactCorporateBodyType }{@code >}
      *     {@link JAXBElement }{@code <}{@link CompactPhysicalPersonType }{@code >}
      *     {@link JAXBElement }{@code <}{@link AbstractPersonType }{@code >}
      *     {@link JAXBElement }{@code <}{@link CorporateBodyType }{@code >}
+     *     {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
+     *     {@link JAXBElement }{@code <}{@link CompactCorporateBodyType }{@code >}
      *     
      */
     public JAXBElement<? extends AbstractPersonType> getPerson() {
@@ -91,11 +91,11 @@ public class PersonDataType
      * 
      * @param value
      *     allowed object is
-     *     {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
-     *     {@link JAXBElement }{@code <}{@link CompactCorporateBodyType }{@code >}
      *     {@link JAXBElement }{@code <}{@link CompactPhysicalPersonType }{@code >}
      *     {@link JAXBElement }{@code <}{@link AbstractPersonType }{@code >}
      *     {@link JAXBElement }{@code <}{@link CorporateBodyType }{@code >}
+     *     {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}
+     *     {@link JAXBElement }{@code <}{@link CompactCorporateBodyType }{@code >}
      *     
      */
     public void setPerson(JAXBElement<? extends AbstractPersonType> value) {
@@ -120,12 +120,12 @@ public class PersonDataType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link AbstractAddressType }{@code >}
-     * {@link JAXBElement }{@code <}{@link CompactPostalAddressType }{@code >}
+     * {@link JAXBElement }{@code <}{@link TypedPostalAddressType }{@code >}
      * {@link JAXBElement }{@code <}{@link PostalAddressType }{@code >}
-     * {@link JAXBElement }{@code <}{@link TelephoneAddressType }{@code >}
      * {@link JAXBElement }{@code <}{@link InternetAddressType }{@code >}
-     * {@link JAXBElement }{@code <}{@link TypedPostalAddressType }{@code >}
+     * {@link JAXBElement }{@code <}{@link CompactPostalAddressType }{@code >}
+     * {@link JAXBElement }{@code <}{@link TelephoneAddressType }{@code >}
+     * {@link JAXBElement }{@code <}{@link AbstractAddressType }{@code >}
      * 
      * 
      */
@@ -237,8 +237,8 @@ public class PersonDataType
          * 
          * <p>
          * Objects of the following type(s) are allowed in the list
-         * {@link Object }
          * {@link Element }
+         * {@link Object }
          * {@link String }
          * 
          * 
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/PhysicalPersonType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/PhysicalPersonType.java
index e199dfb..64a83a5 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/PhysicalPersonType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/PhysicalPersonType.java
@@ -488,8 +488,8 @@ public class PhysicalPersonType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/TelephoneAddressType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/TelephoneAddressType.java
index 42eed66..61e3d75 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/TelephoneAddressType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/TelephoneAddressType.java
@@ -125,8 +125,8 @@ public class TelephoneAddressType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/TypedPostalAddressType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/TypedPostalAddressType.java
index 75b2c09..3f7a659 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/TypedPostalAddressType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/persondata/TypedPostalAddressType.java
@@ -120,8 +120,8 @@ public class TypedPostalAddressType
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/DigestMethodType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/DigestMethodType.java
index 0274215..4136a2d 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/DigestMethodType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/DigestMethodType.java
@@ -64,8 +64,8 @@ public class DigestMethodType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * {@link String }
      * 
      * 
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/KeyInfoType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/KeyInfoType.java
index 8a5bec4..b32a783 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/KeyInfoType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/KeyInfoType.java
@@ -53,13 +53,13 @@ import org.w3c.dom.Element;
 public class KeyInfoType {
 
     @XmlElementRefs({
-        @XmlElementRef(name = "SPKIData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
-        @XmlElementRef(name = "PGPData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "MgmtData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
         @XmlElementRef(name = "RetrievalMethod", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
         @XmlElementRef(name = "X509Data", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
-        @XmlElementRef(name = "MgmtData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "SPKIData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "KeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
         @XmlElementRef(name = "KeyName", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
-        @XmlElementRef(name = "KeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
+        @XmlElementRef(name = "PGPData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
     })
     @XmlMixed
     @XmlAnyElement(lax = true)
@@ -88,16 +88,16 @@ public class KeyInfoType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}
+     * {@link Object }
+     * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link String }
      * {@link Element }
-     * {@link JAXBElement }{@code <}{@link PGPDataType }{@code >}
      * {@link JAXBElement }{@code <}{@link RetrievalMethodType }{@code >}
      * {@link JAXBElement }{@code <}{@link X509DataType }{@code >}
-     * {@link JAXBElement }{@code <}{@link String }{@code >}
-     * {@link Object }
-     * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}
      * {@link JAXBElement }{@code <}{@link KeyValueType }{@code >}
-     * {@link String }
+     * {@link JAXBElement }{@code <}{@link String }{@code >}
+     * {@link JAXBElement }{@code <}{@link PGPDataType }{@code >}
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/KeyValueType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/KeyValueType.java
index ff873e0..e89715e 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/KeyValueType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/KeyValueType.java
@@ -42,8 +42,8 @@ import org.w3c.dom.Element;
 public class KeyValueType {
 
     @XmlElementRefs({
-        @XmlElementRef(name = "DSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
-        @XmlElementRef(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
+        @XmlElementRef(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "DSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
     })
     @XmlMixed
     @XmlAnyElement(lax = true)
@@ -67,11 +67,11 @@ public class KeyValueType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}
-     * {@link Element }
-     * {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}
      * {@link Object }
      * {@link String }
+     * {@link Element }
+     * {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}
+     * {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/ObjectType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/ObjectType.java
index d1d716d..5c1ebf8 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/ObjectType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/ObjectType.java
@@ -76,8 +76,8 @@ public class ObjectType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * {@link String }
      * 
      * 
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/PGPDataType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/PGPDataType.java
index 9b1c1b8..6d2b209 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/PGPDataType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/PGPDataType.java
@@ -82,9 +82,9 @@ public class PGPDataType {
      * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
-     * {@link Element }
-     * {@link Object }
      * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+     * {@link Object }
+     * {@link Element }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SPKIDataType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SPKIDataType.java
index c0a6931..5cd9d4e 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SPKIDataType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SPKIDataType.java
@@ -60,9 +60,9 @@ public class SPKIDataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
+     * {@link Element }
      * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
      * {@link Object }
-     * {@link Element }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SignatureMethodType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SignatureMethodType.java
index 12cb706..92cd0d8 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SignatureMethodType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SignatureMethodType.java
@@ -68,8 +68,8 @@ public class SignatureMethodType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+     * {@link Object }
      * {@link String }
      * 
      * 
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SignaturePropertyType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SignaturePropertyType.java
index e6b1f69..078ff11 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SignaturePropertyType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/SignaturePropertyType.java
@@ -73,8 +73,8 @@ public class SignaturePropertyType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Object }
      * {@link Element }
+     * {@link Object }
      * {@link String }
      * 
      * 
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/TransformType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/TransformType.java
index e98f7ec..a17e181 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/TransformType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/TransformType.java
@@ -68,10 +68,10 @@ public class TransformType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link Element }
-     * {@link JAXBElement }{@code <}{@link String }{@code >}
      * {@link Object }
+     * {@link JAXBElement }{@code <}{@link String }{@code >}
      * {@link String }
+     * {@link Element }
      * 
      * 
      */
diff --git a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/X509DataType.java b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/X509DataType.java
index b40cf7d..f32cae5 100644
--- a/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/X509DataType.java
+++ b/src/main/java/at/gv/util/xsd/mis/usp_v2/xmldsig/X509DataType.java
@@ -46,11 +46,11 @@ import org.w3c.dom.Element;
 public class X509DataType {
 
     @XmlElementRefs({
-        @XmlElementRef(name = "X509IssuerSerial", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
         @XmlElementRef(name = "X509SubjectName", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
-        @XmlElementRef(name = "X509CRL", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
         @XmlElementRef(name = "X509Certificate", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
-        @XmlElementRef(name = "X509SKI", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
+        @XmlElementRef(name = "X509SKI", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "X509CRL", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false),
+        @XmlElementRef(name = "X509IssuerSerial", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class, required = false)
     })
     @XmlAnyElement(lax = true)
     protected List<Object> x509CRLOrX509CertificateOrX509IssuerSerial;
@@ -73,13 +73,13 @@ public class X509DataType {
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}
+     * {@link Object }
      * {@link Element }
      * {@link JAXBElement }{@code <}{@link String }{@code >}
      * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
      * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
      * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
-     * {@link Object }
+     * {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}
      * 
      * 
      */
-- 
cgit v1.2.3