diff --git a/pom.xml b/pom.xml
index c54695a86897cff1c8b1592d380df6ff27064195..46e3a5e9acb88bae5320a9528bbf34c649daac3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1921,7 +1921,7 @@
 		<dependency>
 			<groupId>org.openolat</groupId>
 			<artifactId>viterows</artifactId>
-			<version>9.1.1</version>
+			<version>9.1.2</version>
 		</dependency>
 		<dependency>
 			<groupId>org.openolat</groupId>
diff --git a/src/main/java/org/olat/modules/vitero/manager/ViteroManager.java b/src/main/java/org/olat/modules/vitero/manager/ViteroManager.java
index 49067eb5458ceb07e03a83269b883365e579e60c..08893cf590e467082dc07a3539876ccd9ac5efea 100644
--- a/src/main/java/org/olat/modules/vitero/manager/ViteroManager.java
+++ b/src/main/java/org/olat/modules/vitero/manager/ViteroManager.java
@@ -42,6 +42,7 @@ import javax.activation.FileDataSource;
 import javax.annotation.PostConstruct;
 import javax.ws.rs.core.UriBuilder;
 import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPFaultElement;
 import javax.xml.ws.BindingProvider;
 import javax.xml.ws.WebServiceException;
 import javax.xml.ws.handler.Handler;
@@ -78,8 +79,6 @@ import org.olat.user.DisplayPortraitManager;
 import org.olat.user.UserDataDeletable;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
 
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.CompactWriter;
@@ -1079,6 +1078,9 @@ public class ViteroManager implements UserDataDeletable {
 			if(StringHelper.containsNonWhitespace(vBooking.getEventName())) {
 				newBooking.setEventname(vBooking.getEventName());
 			}
+			if(viteroModule.isInspire()) {
+				newBooking.setInspire(Boolean.TRUE);
+			}
 			createRequest.setBooking(newBooking);
 
 			CreateBookingResponse response = bookingWs.createBooking(createRequest);
@@ -1483,45 +1485,44 @@ public class ViteroManager implements UserDataDeletable {
 	//Utilities
 	private final ErrorCode handleAxisFault(final SOAPFaultException f) 
 	throws VmsNotAvailableException {
-		if(f.getFault() != null) {
-			String errorCode = extractErrorCode(f.getFault());
-			if(StringHelper.isLong(errorCode)) {
-				int code = Integer.parseInt(errorCode);
-				return ErrorCode.find(code);
-			}
-			return ErrorCode.unkown;
-		} else if (f.getCause() instanceof SocketTimeoutException) {
-			throw new VmsNotAvailableException(f);
+		try {
+			if(f.getFault() != null) {
+				ErrorCode errorCode = extractErrorCode(f.getFault());
+				if(errorCode != null) {
+					return errorCode;
+				}
+				return ErrorCode.unkown;
+			} else if (f.getCause() instanceof SocketTimeoutException) {
+				throw new VmsNotAvailableException(f);
+			}
+		} catch (Exception e) {
+			log.error("Cannot extract error", f);
 		}
 		return ErrorCode.unkown;
 	}
 	
-	private String extractErrorCode(SOAPElement element) {
+	private ErrorCode extractErrorCode(SOAPElement element) {
 		if(element == null) return null;
 		
-		for(Iterator<?> it=element.getChildElements(); it.hasNext(); ) {
-			Object childElement = it.next();
-			if(childElement instanceof SOAPElement) {
-				SOAPElement soapElement = (SOAPElement)childElement;
-				String nodeName = soapElement.getNodeName();
-				if("errorCode".equals(nodeName)) {
-					return extractText(soapElement);
-				} else {
-					String code = extractErrorCode(soapElement);
-					if(code != null) {
-						return code;
-					}
+		try {
+			ErrorCode[] codes = ErrorCode.values();
+			int numOfErrorCode = codes.length;
+			for(Iterator<?> it=element.getChildElements(); it.hasNext(); ) {
+				Object childElement = it.next();
+				if(childElement instanceof SOAPFaultElement) {
+					SOAPFaultElement fault = (SOAPFaultElement)childElement;
+					String fContent = fault.getTextContent();
+					if(StringHelper.containsNonWhitespace(fContent) && Character.isDigit(fContent.charAt(fContent.length() - 1))) {
+						for(int i=numOfErrorCode; i-->0; ) {
+							if(fContent.endsWith(codes[i].codeString())) {
+								return codes[i];
+							}
+						}
+					}	
 				}
 			}
-		}
-		return null;
-	}
-	
-	private String extractText(SOAPElement errorCodeEl) {
-		for(Node node=errorCodeEl.getFirstChild(); node != null; node=node.getNextSibling()) {
-			if(node instanceof Text && StringHelper.containsNonWhitespace(node.getNodeValue())) {
-				return node.getNodeValue();
-			}
+		} catch (Exception e) {
+			log.error("", e);
 		}
 		return null;
 	}
diff --git a/src/main/java/org/olat/modules/vitero/model/ErrorCode.java b/src/main/java/org/olat/modules/vitero/model/ErrorCode.java
index 1438efae6926a1b958a466a7a82f91296a5c7361..682b110b31bd51904c94d56141b90e605351784c 100644
--- a/src/main/java/org/olat/modules/vitero/model/ErrorCode.java
+++ b/src/main/java/org/olat/modules/vitero/model/ErrorCode.java
@@ -50,16 +50,22 @@ public enum ErrorCode {
 	
 	private final int code;
 	private final String i18nKey;
+	private final String codeString;
 	
 	private ErrorCode(int code, String i18nKey) {
 		this.code = code;
 		this.i18nKey = i18nKey;
+		codeString = Integer.toString(code);
 	}
 	
 	public int code() {
 		return code;
 	}
 	
+	public String codeString() {
+		return codeString;
+	}
+	
 	public String i18nKey() {
 		return i18nKey;
 	}