Replaces ServerException with ProviderException

Deletes ServerException
Refactors all affected classes to use ProviderException

Change-Id: I2e7948e3b90964a1a6883066cbcb7c883c4d8140
Signed-off-by: Maximilian Conradi <maximilian.conradi@iese.fraunhofer.de>
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceJSONClient.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceJSONClient.java
index 2fef59e..6e1e528 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceJSONClient.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceJSONClient.java
@@ -5,7 +5,7 @@
 
 import org.eclipse.basyx.vab.coder.json.serialization.DefaultTypeFactory;
 import org.eclipse.basyx.vab.coder.json.serialization.GSONTools;
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,7 +36,7 @@
 	/**
 	 * Get result from webservice invocation
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 */
 	protected Object getJSONResult(String serializedJSONValue) {
 		// Try to deserialize response if any
@@ -44,10 +44,10 @@
 			// Try to deserialize response
 
 			Object result = serializer.deserialize(serializedJSONValue);
-			// Check if a server exception was serialized
-			if (result instanceof ServerException) {
-				// Throw server exception
-				throw (ServerException) result;
+			// Check if a provider exception was serialized
+			if (result instanceof ProviderException) {
+				// Throw provider exception
+				throw (ProviderException) result;
 			}
 
 			// Return deserialized value
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/ICollectionProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/ICollectionProperty.java
index e8631ef..c8c6237 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/ICollectionProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/ICollectionProperty.java
@@ -2,8 +2,8 @@
 
 import java.util.Collection;
 
-import org.eclipse.basyx.vab.exception.ServerException;
 import org.eclipse.basyx.vab.exception.TypeMismatchException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 
 /**
  * Interface for AAS properties that carry a collection
@@ -18,7 +18,7 @@
 	 * @param new
 	 *            Collection to be set
 	 */
-	public void set(Collection<Object> collection) throws ServerException;
+	public void set(Collection<Object> collection) throws ProviderException;
 
 	/**
 	 * Add value to collection
@@ -28,29 +28,29 @@
 	 * @throws TypeMismatchException
 	 * @throws Exception
 	 */
-	void add(Object newValue) throws ServerException, TypeMismatchException;
+	void add(Object newValue) throws ProviderException, TypeMismatchException;
 
 	/**
 	 * Remove property from collection
 	 * 
 	 * @param objectRef
 	 *            Property reference to be removed
-	 * @throws ServerException
+	 * @throws ProviderException
 	 */
-	public abstract void remove(Object objectRef) throws ServerException;
+	public abstract void remove(Object objectRef) throws ProviderException;
 
 	/**
 	 * Get property elements from collection
 	 * 
 	 * @return Collection with values
 	 */
-	public abstract Collection<Object> getElements() throws ServerException;
+	public abstract Collection<Object> getElements() throws ProviderException;
 
 	/**
 	 * Get element count
 	 * 
 	 * @return Element count
 	 */
-	public int getElementCount() throws ServerException;
+	public int getElementCount() throws ProviderException;
 
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/IMapProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/IMapProperty.java
index f382b6c..9a66b15 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/IMapProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/IMapProperty.java
@@ -3,8 +3,8 @@
 import java.util.Collection;
 import java.util.Map;
 
-import org.eclipse.basyx.vab.exception.ServerException;
 import org.eclipse.basyx.vab.exception.TypeMismatchException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 
 /**
  * Interface for AAS properties that carry a map
@@ -19,22 +19,22 @@
 	 * 
 	 * @throws TypeMismatchException
 	 */
-	public Object getValue(String key) throws TypeMismatchException, ServerException;
+	public Object getValue(String key) throws TypeMismatchException, ProviderException;
 
 	/**
 	 * put entry in map
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 */
-	public void put(String key, Object value) throws ServerException;
+	public void put(String key, Object value) throws ProviderException;
 
 	/**
 	 * Set new map or override existing
 	 * 
 	 * @param map
-	 * @throws ServerException
+	 * @throws ProviderException
 	 */
-	void set(Map<String, Object> map) throws ServerException;
+	void set(Map<String, Object> map) throws ProviderException;
 
 	/**
 	 * Get map keys
@@ -42,21 +42,21 @@
 	 * @return Collection with keys
 	 * @throws TypeMismatchException
 	 */
-	public Collection<String> getKeys() throws TypeMismatchException, ServerException;
+	public Collection<String> getKeys() throws TypeMismatchException, ProviderException;
 
 	/**
 	 * Get entry count
 	 * 
 	 * @throws TypeMismatchException
 	 */
-	public Integer getEntryCount() throws TypeMismatchException, ServerException;
+	public Integer getEntryCount() throws TypeMismatchException, ProviderException;
 
 	/**
 	 * Remove entry
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 * @throws TypeMismatchException
 	 */
-	public void remove(String key) throws ServerException, TypeMismatchException;
+	public void remove(String key) throws ProviderException, TypeMismatchException;
 
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/ISingleProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/ISingleProperty.java
index cce6f8d..7d705d0 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/ISingleProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/dataelement/property/ISingleProperty.java
@@ -1,6 +1,6 @@
 package org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.property;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 
 /**
  * Interface for AAS properties that carry a single value
@@ -22,9 +22,9 @@
 	
 	/**
 	 * Set property value
-	 * @throws ServerException 
+	 * @throws ProviderException 
 	 */
-	public void set(Object newValue) throws ServerException;
+	public void set(Object newValue) throws ProviderException;
 
 	/**
 	 * Gets the data type of the value
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedCollectionProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedCollectionProperty.java
index 214cc23..19b02e5 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedCollectionProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedCollectionProperty.java
@@ -5,8 +5,8 @@
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.property.ICollectionProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.property.PropertyType;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
-import org.eclipse.basyx.vab.exception.ServerException;
 import org.eclipse.basyx.vab.exception.TypeMismatchException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 
 /**
@@ -23,39 +23,45 @@
 	}
 
 	@Override
-	public void set(Collection<Object> collection) throws ServerException {
+	public void set(Collection<Object> collection) throws ProviderException {
 		try {
 			getProxy().setModelPropertyValue(Property.VALUE, collection);
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
-			throw new ServerException(e.getClass().toString(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
 	@Override
-	public void add(Object newValue) throws ServerException, TypeMismatchException {
+	public void add(Object newValue) throws ProviderException, TypeMismatchException {
 		try {
 			getProxy().createValue(Property.VALUE, newValue);
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
-			throw new ServerException(e.getClass().toString(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
 	@Override
-	public void remove(Object objectRef) throws ServerException {
+	public void remove(Object objectRef) throws ProviderException {
 		try {
 			getProxy().deleteValue(Property.VALUE, objectRef);
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
-			throw new ServerException(e.getClass().toString(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
 	@Override
-	public Collection<Object> getElements() throws ServerException {
+	public Collection<Object> getElements() throws ProviderException {
 		return getCollection();
 	}
 
 	@Override
-	public int getElementCount() throws ServerException {
+	public int getElementCount() throws ProviderException {
 		return getCollection().size();
 	}
 
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedMapProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedMapProperty.java
index 4bd7f11..367befc 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedMapProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedMapProperty.java
@@ -6,8 +6,8 @@
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.property.IMapProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.property.PropertyType;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
-import org.eclipse.basyx.vab.exception.ServerException;
 import org.eclipse.basyx.vab.exception.TypeMismatchException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 
 import org.slf4j.Logger;
@@ -28,12 +28,12 @@
 	}
 
 	@Override
-	public Object getValue(String key) throws TypeMismatchException, ServerException {
+	public Object getValue(String key) throws TypeMismatchException, ProviderException {
 		return getMap().get(key);
 	}
 
 	@Override
-	public void put(String key, Object value) throws ServerException {
+	public void put(String key, Object value) throws ProviderException {
 		try {
 			// check whether the value already exists and call update or create accordingly
 			if(getValue(key) != null)
@@ -46,7 +46,7 @@
 	}
 
 	@Override
-	public void set(Map<String, Object> map) throws ServerException {
+	public void set(Map<String, Object> map) throws ProviderException {
 		try {
 			getProxy().setModelPropertyValue(Property.VALUE, map);
 		} catch (Exception e) {
@@ -55,17 +55,17 @@
 	}
 
 	@Override
-	public Collection<String> getKeys() throws TypeMismatchException, ServerException {
+	public Collection<String> getKeys() throws TypeMismatchException, ProviderException {
 		return getMap().keySet();
 	}
 
 	@Override
-	public Integer getEntryCount() throws TypeMismatchException, ServerException {
+	public Integer getEntryCount() throws TypeMismatchException, ProviderException {
 		return getMap().entrySet().size();
 	}
 
 	@Override
-	public void remove(String key) throws ServerException, TypeMismatchException {
+	public void remove(String key) throws ProviderException, TypeMismatchException {
 		try {
 			getProxy().deleteValue(Property.VALUE + "/" + key);
 		} catch (Exception e) {
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedSingleProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedSingleProperty.java
index acbfc81..c210a8b 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedSingleProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/dataelement/property/ConnectedSingleProperty.java
@@ -6,7 +6,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.property.PropertyType;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.valuetypedef.PropertyValueTypeDefHelper;
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 
 /**
@@ -28,7 +28,7 @@
 	}
 
 	@Override
-	public void set(Object newValue) throws ServerException {
+	public void set(Object newValue) throws ProviderException {
 		getProxy().setModelPropertyValue(Property.VALUE, newValue);
 	}
 
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/coder/json/provider/JSONProvider.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/coder/json/provider/JSONProvider.java
index 5056bd1..45fd745 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/coder/json/provider/JSONProvider.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/coder/json/provider/JSONProvider.java
@@ -10,7 +10,6 @@
 import org.eclipse.basyx.vab.coder.json.serialization.GSONTools;
 import org.eclipse.basyx.vab.coder.json.serialization.GSONToolsFactory;
 import org.eclipse.basyx.vab.exception.LostHTTPRequestParameterException;
-import org.eclipse.basyx.vab.exception.ServerException;
 import org.eclipse.basyx.vab.exception.provider.MalformedRequestException;
 import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
@@ -171,7 +170,7 @@
 	 * @return
 	 * @throws MalformedRequestException 
 	 * @throws LostHTTPRequestParameterException 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 */
 	private Object extractParameter(String path, String serializedJSONValue, PrintWriter outputStream) throws MalformedRequestException {
 		// Return value
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/exception/ServerException.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/exception/ServerException.java
deleted file mode 100644
index 0dca74d..0000000
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/exception/ServerException.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.eclipse.basyx.vab.exception;
-
-
-/**
- * Server exception
- * 
- * This exception indicates an exception that is thrown on a remote entity
- * 
- * @author pschorn, kuhn
- *
- */
-public class ServerException extends RuntimeException {
-
-	
-	/**
-	 * Version number for serialized instances
-	 */
-	private static final long serialVersionUID = 1L;
-	
-	
-	/**
-	 * Exception type
-	 */
-	protected String type = null;
-	
-	/**
-	 * Optional additional message
-	 */
-	private String message = null;
-	
-	
-	
-	
-	/**
-	 * Constructor
-	 */
-	public ServerException(ServerException e) {
-		this.type    = e.getType();
-		this.message = e.getMessage();
-	}
-
-	
-	/**
-	 * Constructor
-	 */
-	public ServerException(String type, String message) {
-		this.type    = type;
-		this.message = message;
-	}
-	
-	
-	
-	
-	
-	/**
-	 * Return exception type
-	 */
-	public String getType() {
-		return type;
-	}
-	
-	
-	
-	/**
-	 * Return detailed message
-	 */
-	@Override
-	public String getMessage() {
-		return message;
-	}
-	
-	
-	
-	/**
-	 * Create readable exception
-	 */
-	@Override
-	public String toString() {
-		// Only return exception type if no message is set
-		if (message == null) return type+":";
-		
-		// Return exception type and descriptive message
-		return type+": "+message;
-	}
-}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/modelprovider/VABElementProxy.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/modelprovider/VABElementProxy.java
index 1d1f1b4..1534a67 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/modelprovider/VABElementProxy.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/modelprovider/VABElementProxy.java
@@ -1,6 +1,6 @@
 package org.eclipse.basyx.vab.modelprovider;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
 
 import org.slf4j.Logger;
@@ -48,16 +48,16 @@
 	 * Read VAB element value
 	 */
 	@Override
-	public Object getModelPropertyValue(String elementPath) throws ServerException {
+	public Object getModelPropertyValue(String elementPath) throws ProviderException {
 		// Get element from server
 		try {
 			// Change element on server
 			return provider.getModelPropertyValue(constructPath(elementPath));
-		} catch (ServerException e) {
-			throw new ServerException(e); // FIXME Exception Handling should be done in JSONConnector
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
 			logger.debug("Exception in getModelPropertyValue", e);
-			throw new ServerException(e.getClass().getName(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
@@ -67,17 +67,16 @@
 	 * If the element does not exist it will be created<br />
 	 */
 	@Override
-	public void setModelPropertyValue(String elementPath, Object newValue) throws ServerException {
+	public void setModelPropertyValue(String elementPath, Object newValue) throws ProviderException {
 		// Set property value
 		try {
 			// Change element on server
 			provider.setModelPropertyValue(constructPath(elementPath), newValue);
-		} catch (ServerException e) {
-			logger.debug("Exception in setModelPropertyValue", e);
-			throw new ServerException(e);
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
 			logger.debug("Exception in setModelPropertyValue", e);
-			throw new ServerException(e.getClass().getName(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
@@ -85,17 +84,16 @@
 	 * Add element on server
 	 */
 	@Override
-	public void createValue(String elementPath, Object newValue) throws ServerException {
+	public void createValue(String elementPath, Object newValue) throws ProviderException {
 		// Set property value
 		try {
 			// Create new element on server
 			provider.createValue(constructPath(elementPath), newValue);
-		} catch (ServerException e) {
-			logger.debug("Exception in createValue", e);
-			throw new ServerException(e);
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
 			logger.debug("Exception in createValue", e);
-			throw new ServerException(e.getClass().getName(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
@@ -103,16 +101,16 @@
 	 * Delete element from server
 	 */
 	@Override
-	public void deleteValue(String elementPath) throws ServerException {
+	public void deleteValue(String elementPath) throws ProviderException {
 		// Delete property from server
 		try {
 			// Delete element from server
 			provider.deleteValue(constructPath(elementPath));
-		} catch (ServerException e) {
-			throw new ServerException(e);
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
 			logger.debug("Exception in deleteValue", e);
-			throw new ServerException(e.getClass().getName(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
@@ -120,16 +118,16 @@
 	 * Delete element from server
 	 */
 	@Override
-	public void deleteValue(String elementPath, Object value) throws ServerException {
+	public void deleteValue(String elementPath, Object value) throws ProviderException {
 		// Delete property from server
 		try {
 			// Delete element from server
 			provider.deleteValue(constructPath(elementPath), value);
-		} catch (ServerException e) {
-			throw new ServerException(e);
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
 			logger.debug("Exception in deleteValue", e);
-			throw new ServerException(e.getClass().getName(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
@@ -137,16 +135,16 @@
 	 * Invoke element as an operation
 	 */
 	@Override
-	public Object invokeOperation(String elementPath, Object... parameter) throws ServerException {
+	public Object invokeOperation(String elementPath, Object... parameter) throws ProviderException {
 		// Invoke operation on server
 		try {
 			// Invoke server operation
 			return provider.invokeOperation(constructPath(elementPath), parameter);
-		} catch (ServerException e) {
-			throw new ServerException(e);
+		} catch (ProviderException e) {
+			throw e;
 		} catch (Exception e) {
 			logger.debug("Exception in invokeOperation", e);
-			throw new ServerException(e.getClass().getName(), e.getMessage());
+			throw new ProviderException(e);
 		}
 	}
 
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/basyx/connector/BaSyxConnector.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/basyx/connector/BaSyxConnector.java
index 1a714bf..bb0f851 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/basyx/connector/BaSyxConnector.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/basyx/connector/BaSyxConnector.java
@@ -6,7 +6,7 @@
 import java.nio.ByteBuffer;
 import java.nio.channels.SocketChannel;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.protocol.api.IBaSyxConnector;
 import org.eclipse.basyx.vab.protocol.basyx.CoderTools;
 import org.eclipse.basyx.vab.protocol.basyx.server.VABBaSyxTCPInterface;
@@ -156,7 +156,7 @@
 	 * Invoke a Basys Set operation. Sets or overrides existing property, operation
 	 * or event.
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 *             that carries the Exceptions thrown on the server
 	 */
 	@Override
@@ -173,7 +173,7 @@
 	 * Invoke a BaSys Create operation
 	 */
 	@Override
-	public String createValue(String servicePath, String newValue) throws ServerException {
+	public String createValue(String servicePath, String newValue) throws ProviderException {
 
 		byte[] call = createCall(servicePath, newValue, VABBaSyxTCPInterface.BASYX_CREATE);
 
@@ -186,7 +186,7 @@
 	 * Invoke a Basys invoke operation.
 	 */
 	@Override
-	public String invokeOperation(String servicePath, String parameters) throws ServerException {
+	public String invokeOperation(String servicePath, String parameters) throws ProviderException {
 
 		byte[] call = createCall(servicePath, parameters, VABBaSyxTCPInterface.BASYX_INVOKE);
 
@@ -199,11 +199,11 @@
 	/**
 	 * Invoke a Basys delete operation. Deletes any resource under the given path
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 *             that carries the Exceptions thrown on the server
 	 */
 	@Override
-	public String deleteValue(String servicePath) throws ServerException {
+	public String deleteValue(String servicePath) throws ProviderException {
 
 		byte[] call = createCall(servicePath, VABBaSyxTCPInterface.BASYX_DELETE);
 
@@ -216,11 +216,11 @@
 	 * Invoke a Basys delete operation. Deletes an entry from a map or collection by
 	 * the given key
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 *             that carries the Exceptions thrown on the server
 	 */
 	@Override
-	public String deleteValue(String servicePath, String jsonObject) throws ServerException {
+	public String deleteValue(String servicePath, String jsonObject) throws ProviderException {
 
 		byte[] call = createCall(servicePath, jsonObject, VABBaSyxTCPInterface.BASYX_DELETE);
 
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/http/connector/HTTPConnector.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/http/connector/HTTPConnector.java
index 4d4ac34..8ef7426 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/http/connector/HTTPConnector.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/http/connector/HTTPConnector.java
@@ -8,7 +8,7 @@
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.VABPathTools;
 import org.eclipse.basyx.vab.protocol.api.IBaSyxConnector;
 import org.glassfish.jersey.client.HttpUrlConnectorProvider;
@@ -65,7 +65,7 @@
 	 *            should be an IElement of type Property, Operation or Event
 	 */
 	@Override
-	public String setModelPropertyValue(String servicePath, String newValue) throws ServerException {
+	public String setModelPropertyValue(String servicePath, String newValue) throws ProviderException {
 
 		return httpPut(servicePath, newValue);
 	}
@@ -80,10 +80,10 @@
 	 *            the URL suffix for the requested property
 	 * @param obj
 	 *            the key or index of the entry that should be deleted
-	 * @throws ServerException
+	 * @throws ProviderException
 	 */
 	@Override
-	public String deleteValue(String servicePath, String obj) throws ServerException {
+	public String deleteValue(String servicePath, String obj) throws ProviderException {
 
 		return httpPatch(servicePath, obj);
 	}
@@ -91,10 +91,10 @@
 	/**
 	 * Invoke a BaSys invoke operation via HTTP. Implemented as HTTP POST.
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 */
 	@Override
-	public String createValue(String servicePath, String newValue) throws ServerException {
+	public String createValue(String servicePath, String newValue) throws ProviderException {
 
 		return httpPost(servicePath, newValue);
 	}
@@ -103,10 +103,10 @@
 	 * Invoke basysDelete operation via HTTP DELETE. Deletes any resource under the
 	 * given path.
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 */
 	@Override
-	public String deleteValue(String servicePath) throws ServerException {
+	public String deleteValue(String servicePath) throws ProviderException {
 
 		return httpDelete(servicePath);
 	}
@@ -167,7 +167,7 @@
 		return result;
 	}
 
-	private String httpPut(String servicePath, String newValue) throws ServerException {
+	private String httpPut(String servicePath, String newValue) throws ProviderException {
 		logger.trace("[HTTP Put] {} [[ {} ]]", VABPathTools.concatenatePaths(address, servicePath), newValue);
 
 		// Invoke service call via web services
@@ -184,7 +184,7 @@
 
 	}
 
-	private String httpPatch(String servicePath, String newValue) throws ServerException {
+	private String httpPatch(String servicePath, String newValue) throws ProviderException {
 		logger.trace("[HTTP Patch] {} {}", VABPathTools.concatenatePaths(address, servicePath), newValue);
 
 		// Invoke service call via web services
@@ -197,7 +197,7 @@
 		return rsp.readEntity(String.class);
 	}
 
-	private String httpPost(String servicePath, String parameter) throws ServerException {
+	private String httpPost(String servicePath, String parameter) throws ProviderException {
 		logger.trace("[HTTP Post] {} {}", VABPathTools.concatenatePaths(address, servicePath), parameter);
 
 		// Invoke service call via web services
@@ -213,7 +213,7 @@
 		return rsp.readEntity(String.class);
 	}
 
-	private String httpDelete(String servicePath) throws ServerException {
+	private String httpDelete(String servicePath) throws ProviderException {
 		logger.trace("[HTTP Delete] {}", VABPathTools.concatenatePaths(address, servicePath));
 
 		// Invoke service call via web services
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/opcua/connector/OpcUaConnector.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/opcua/connector/OpcUaConnector.java
index 935609e..5caaca6 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/opcua/connector/OpcUaConnector.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/protocol/opcua/connector/OpcUaConnector.java
@@ -4,7 +4,7 @@
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
 import org.eclipse.basyx.vab.protocol.opcua.server.BaSyxOpcUaClientRunner;
 import org.eclipse.milo.opcua.stack.core.Identifiers;
@@ -137,7 +137,7 @@
         return null;
     }
 
-    private String opcUaWrite(NodeId servicePath, Object parameter) throws ServerException {
+    private String opcUaWrite(NodeId servicePath, Object parameter) throws ProviderException {
         try {
             List<NodeId> nodes = new ArrayList<NodeId>();
             nodes.add(servicePath);
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
index bc46dc2..21a7b70 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
@@ -15,7 +15,7 @@
 import org.eclipse.basyx.submodel.restapi.SubModelProvider;
 import org.eclipse.basyx.testsuite.regression.submodel.restapi.SimpleAASSubmodel;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.junit.Before;
 import org.junit.Test;
@@ -98,15 +98,15 @@
 		try {
 			proxy.invokeOperation("a1/aas/submodels/SimpleAASSubmodel/operations/exception1/invokable");
 			fail();
-		} catch (ServerException e) {
-			assertEquals(NullPointerException.class.getCanonicalName(), e.getType());
+		} catch (ProviderException e) {
+			assertEquals(NullPointerException.class, e.getCause().getClass());
 		}
 		// Invoke exception2
 		try {
 			proxy.invokeOperation("a1/aas/submodels/SimpleAASSubmodel/operations/exception2/invokable", "prop1");
 			fail();
-		} catch (ServerException e) {
-			assertEquals("ExType", e.getType());
+		} catch (ProviderException e) {
+			assertEquals("Exception description", e.getMessage());
 		}
 	}
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
index 4d64aee..e4cbcac 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
@@ -15,7 +15,7 @@
 import org.eclipse.basyx.submodel.restapi.SubModelProvider;
 import org.eclipse.basyx.testsuite.regression.submodel.restapi.SimpleAASSubmodel;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.junit.Before;
 import org.junit.Test;
@@ -55,15 +55,13 @@
 		try {
 			proxy.invokeOperation("/aas/submodels/SimpleAASSubmodel/operations/exception1/invokable");
 			fail();
-		} catch (ServerException e) {
-		}
+		} catch (ProviderException e) {}
+
 		// Invoke operationEx2
 		try {
 			proxy.invokeOperation("/aas/submodels/SimpleAASSubmodel/operations/exception2/invokable", "prop1");
 			fail();
-		} catch (ServerException e) {
-
-		}
+		} catch (ProviderException e) {}
 	}
 
 	@Test
@@ -90,7 +88,7 @@
 		try {
 			proxy.getModelPropertyValue("/aas/submodels/TestSM");
 			fail();
-		} catch (ServerException e) {
+		} catch (ProviderException e) {
 			logger.trace("[TEST] VABMultiSubmodelProvider CreateDelete passed");
 		}
 	}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedCollectionProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedCollectionProperty.java
index bdbfddd..cc962b6 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedCollectionProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedCollectionProperty.java
@@ -13,8 +13,8 @@
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.restapi.SinglePropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
-import org.eclipse.basyx.vab.exception.ServerException;
 import org.eclipse.basyx.vab.exception.TypeMismatchException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.map.VABMapProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyer;
@@ -76,11 +76,11 @@
 	/**
 	 * Tests adding a value to the contained collection
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 * @throws TypeMismatchException
 	 */
 	@Test
-	public void testPut() throws ServerException, TypeMismatchException {
+	public void testPut() throws ProviderException, TypeMismatchException {
 		// Add value
 		prop.add(3);
 
@@ -111,11 +111,11 @@
 	/**
 	 * Tests removing a value from the contained collection
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 * @throws TypeMismatchException
 	 */
 	@Test
-	public void testRemove() throws ServerException, TypeMismatchException {
+	public void testRemove() throws ProviderException, TypeMismatchException {
 		// Remove a value from the contained collection
 		prop.remove(2);
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedMapProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedMapProperty.java
index f122761..4626698 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedMapProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedMapProperty.java
@@ -12,8 +12,8 @@
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.restapi.SinglePropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
-import org.eclipse.basyx.vab.exception.ServerException;
 import org.eclipse.basyx.vab.exception.TypeMismatchException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.map.VABMapProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyer;
@@ -67,11 +67,11 @@
 	/**
 	 * Tests adding a value to the contained map
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 * @throws TypeMismatchException
 	 */
 	@Test
-	public void testPut() throws ServerException, TypeMismatchException {
+	public void testPut() throws ProviderException, TypeMismatchException {
 		// Put new value
 		prop.put("test3", 5);
 
@@ -101,11 +101,11 @@
 	/**
 	 * Tests getting keys of the contained map
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 * @throws TypeMismatchException
 	 */
 	@Test
-	public void testGetKeys() throws ServerException, TypeMismatchException {
+	public void testGetKeys() throws ProviderException, TypeMismatchException {
 		// Get keys
 		Collection<String> keys = prop.getKeys();
 
@@ -120,22 +120,22 @@
 	/**
 	 * Tests retrieving the entry count
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 * @throws TypeMismatchException
 	 */
 	@Test
-	public void testGetEntryCount() throws ServerException, TypeMismatchException {
+	public void testGetEntryCount() throws ProviderException, TypeMismatchException {
 		assertEquals(2, (int) prop.getEntryCount());
 	}
 
 	/**
 	 * Tests removing an element from the contained map
 	 * 
-	 * @throws ServerException
+	 * @throws ProviderException
 	 * @throws TypeMismatchException
 	 */
 	@Test
-	public void testRemove() throws ServerException, TypeMismatchException {
+	public void testRemove() throws ProviderException, TypeMismatchException {
 		// Remove element
 		prop.remove(MAP_1_KEY);
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/restapi/SimpleAASSubmodel.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/restapi/SimpleAASSubmodel.java
index a80deb2..d4f10de 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/restapi/SimpleAASSubmodel.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/restapi/SimpleAASSubmodel.java
@@ -6,7 +6,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.ContainerProperty;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.Operation;
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 
 /**
  * A simple VAB submodel element that explains the development of conforming
@@ -59,7 +59,7 @@
 
 		// - Contained operation that throws VAB exception
 		Operation exception2 = new Operation((Function<Object[], Object>) elId -> {
-			throw new ServerException("ExType", "Exception description");
+			throw new ProviderException("Exception description");
 		});
 		exception2.setIdShort("exception2");
 		addSubModelElement(exception2);
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapCreateDelete.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapCreateDelete.java
index 9eac88b..48f7e6c 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapCreateDelete.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapCreateDelete.java
@@ -9,7 +9,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 
@@ -76,8 +76,7 @@
 		try {
 			connVABElement.createValue(null, "");
 			fail();
-		} catch (ServerException e) {
-		}
+		} catch (ProviderException e) {}
 	}
 
 	private static void testDeleteElements(VABElementProxy connVABElement) {
@@ -122,12 +121,10 @@
 		try {
 			connVABElement.deleteValue(null, "");
 			fail();
-		} catch (ServerException e) {
-		}
+		} catch (ProviderException e) {}
 		try {
 			connVABElement.deleteValue(null);
 			fail();
-		} catch (ServerException e) {
-		}
+		} catch (ProviderException e) {}
 	}
 }
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapInvoke.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapInvoke.java
index 5381d3b..580a63f 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapInvoke.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapInvoke.java
@@ -4,7 +4,7 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 
@@ -37,9 +37,9 @@
 
 		// Invoke operations that throw Exceptions
 		try {
-			connVABElement.invokeOperation("operations/serverException");
+			connVABElement.invokeOperation("operations/providerException");
 			fail();
-		} catch (ServerException e) {
+		} catch (ProviderException e) {
 			// exception type not implemented, yet
 			// assertEquals(e.getType(), "testExceptionType");
 		}
@@ -47,7 +47,7 @@
 		try {
 			connVABElement.invokeOperation("operations/nullException");
 			fail();
-		} catch (ServerException e) {
+		} catch (ProviderException e) {
 			// exception type not implemented, yet
 			// assertEquals(e.getType(), "java.lang.NullPointerException");
 		}
@@ -59,7 +59,6 @@
 		try {
 			connVABElement.invokeOperation(null, "");
 			fail();
-		} catch (ServerException e) {
-		}
+		} catch (ProviderException e) {}
 	}
 }
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapRead.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapRead.java
index feb73a5..92d5fbd 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapRead.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapRead.java
@@ -7,7 +7,7 @@
 import java.util.Map;
 import java.util.function.Function;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 
@@ -76,7 +76,6 @@
 		try {
 			connVABElement.getModelPropertyValue(null);
 			fail();
-		} catch (ServerException e) {
-		}
+		} catch (ProviderException e) {}
 	}
 }
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapUpdate.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapUpdate.java
index e705ffc..fc09dd1 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapUpdate.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/MapUpdate.java
@@ -9,7 +9,7 @@
 import java.util.HashMap;
 import java.util.function.Function;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 
@@ -75,8 +75,7 @@
 		try {
 			connVABElement.setModelPropertyValue(null, "");
 			fail();
-		} catch (ServerException e) {
-		}
+		} catch (ProviderException e) {}
 	}
 
 	public static void testPushAll(VABConnectionManager connManager) {
@@ -91,8 +90,7 @@
 		try {
 			connVABElement.setModelPropertyValue(null, newMap);
 			fail();
-		} catch (ServerException e) {
-		}
+		} catch (ProviderException e) {}
 
 		// Push whole map via ""-Path
 		// - create object
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/SimpleVABElement.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/SimpleVABElement.java
index 5203025..98a5299 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/SimpleVABElement.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/SimpleVABElement.java
@@ -7,7 +7,7 @@
 import java.util.function.Function;
 import java.util.function.Supplier;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 
 /**
  * A simple VAB model that explains the use of the VAB primitives
@@ -34,8 +34,8 @@
 		functions.put("supplier", (Supplier<Object>) () -> {
 			return true;
 		});
-		functions.put("serverException", (Function<Object[], Object>) (param) -> {
-			throw new ServerException("testExceptionType", "Exception description");
+		functions.put("providerException", (Function<Object[], Object>) (param) -> {
+			throw new ProviderException("Exception description");
 		});
 		functions.put("nullException", (Function<Object[], Object>) (param) -> {
 			throw new NullPointerException();
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/TestCollectionProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/TestCollectionProperty.java
index da8b415..044aaa9 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/TestCollectionProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/TestCollectionProperty.java
@@ -10,7 +10,7 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 
@@ -153,7 +153,7 @@
 			// Reference 3 does not exist anymore
 			connVABElement.getModelPropertyValue("/structure/list/byRef_" + referenceSecondLast);
 			fail();
-		} catch (ServerException e) {
+		} catch (ProviderException e) {
 			// Exception types not implemented yet
 			// assertEquals(e.getType(), "org.eclipse.basyx.vab.provider.list.InvalidListReferenceException");
 		}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/map/TestMapProvider.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/map/TestMapProvider.java
index cfcd41c..549b489 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/map/TestMapProvider.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/vab/modelprovider/map/TestMapProvider.java
@@ -1,12 +1,11 @@
 package org.eclipse.basyx.testsuite.regression.vab.modelprovider.map;
 
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import org.eclipse.basyx.testsuite.regression.vab.modelprovider.SimpleVABElement;
 import org.eclipse.basyx.testsuite.regression.vab.modelprovider.TestProvider;
 import org.eclipse.basyx.testsuite.regression.vab.protocol.http.TestsuiteDirectory;
-import org.eclipse.basyx.vab.exception.ServerException;
+import org.eclipse.basyx.vab.exception.provider.ProviderException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
@@ -47,8 +46,6 @@
 		try {
 			connVABElement.getModelPropertyValue("structure/list/byRef_23");
 			fail();
-		} catch (ServerException e) {
-			assertTrue(e.getType().contains("InvalidListReferenceException"));
-		}
+		} catch (ProviderException e) {}
 	}
 }