Index: trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SOAPEventType.java
===================================================================
--- trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SOAPEventType.java	(revision 1913)
+++ trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SOAPEventType.java	(revision 1924)
@@ -23,4 +23,6 @@
 import javax.xml.soap.SOAPMessage;
 
+import org.w3c.dom.Element;
+
 import de.ugoe.cs.autoquest.plugin.http.HTTPUtils;
 import de.ugoe.cs.autoquest.plugin.http.logdata.Header;
@@ -256,4 +258,16 @@
         return soapResponse;
     }
+    
+    /**
+     * @return the body of the soapRequest
+     */
+    public Element getSoapRequestBody() {
+        try {
+            return soapRequest.getSOAPBody();
+        }
+        catch (SOAPException e) {
+            return null;
+        }
+    }
 
     /* (non-Javadoc)
Index: trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SimpleSOAPEventType.java
===================================================================
--- trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SimpleSOAPEventType.java	(revision 1913)
+++ trunk/autoquest-plugin-http/src/main/java/de/ugoe/cs/autoquest/plugin/http/eventcore/SimpleSOAPEventType.java	(revision 1924)
@@ -15,6 +15,16 @@
 package de.ugoe.cs.autoquest.plugin.http.eventcore;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
 import de.ugoe.cs.autoquest.eventcore.IEventType;
 import de.ugoe.cs.autoquest.plugin.http.HTTPUtils;
+import de.ugoe.cs.autoquest.plugin.http.SOAPUtils;
 
 /**
@@ -44,12 +54,19 @@
      */
     private final String serviceName;
-    
+
     /**
      * <p>
-     * the name of the client; this is either the host/ip and port of the sender or, if a path
-     * map is available, a human readable name that may be based also on the receiver
+     * the name of the client; this is either the host/ip and port of the sender or, if a path map
+     * is available, a human readable name that may be based also on the receiver
      * </p>
      */
     private final String clientName;
+
+    /**
+     * <p>
+     * the body of the SOAP request; storage as serialized XML string to allow object serialization
+     * </p>
+     */
+    private final String soapRequestBody;
 
     /**
@@ -59,5 +76,9 @@
      * 
      */
-    public SimpleSOAPEventType(String calledMethod, String serviceName, String clientName) {
+    public SimpleSOAPEventType(String calledMethod,
+                               String serviceName,
+                               String clientName,
+                               Element soapRequestBody)
+    {
         if (calledMethod == null) {
             throw new IllegalArgumentException("called method must not be null");
@@ -69,7 +90,11 @@
             throw new IllegalArgumentException("clientName must not be null");
         }
+        if (soapRequestBody == null) {
+            throw new IllegalArgumentException("soapRequestBody must not be null");
+        }
         this.calledMethod = calledMethod;
         this.serviceName = serviceName;
         this.clientName = clientName;
+        this.soapRequestBody = SOAPUtils.getSerialization(soapRequestBody);
     }
 
@@ -95,14 +120,24 @@
         return serviceName;
     }
-    
+
     /**
      * <p>
      * the name of the client calling in this request
      * </p>
-     *
+     * 
      * @return the name of the client calling in this request
      */
     public String getClientName() {
         return clientName;
+    }
+
+    public Element getSoapRequestBody() {
+        try {
+            return DocumentBuilderFactory.newInstance().newDocumentBuilder()
+                .parse(new ByteArrayInputStream(soapRequestBody.getBytes())).getDocumentElement();
+        }
+        catch (SAXException | IOException | ParserConfigurationException e) {
+            return null;
+        }
     }
 
@@ -129,5 +164,6 @@
         else if (obj instanceof SimpleSOAPEventType) {
             return HTTPUtils.equals(calledMethod, ((SimpleSOAPEventType) obj).calledMethod) &&
-                HTTPUtils.equals(serviceName, ((SimpleSOAPEventType) obj).serviceName);
+                HTTPUtils.equals(serviceName, ((SimpleSOAPEventType) obj).serviceName) &&
+                HTTPUtils.equals(clientName, ((SimpleSOAPEventType) obj).clientName);
         }
         else {
@@ -143,9 +179,11 @@
     @Override
     public int hashCode() {
-        int hashCode = calledMethod.hashCode() + serviceName.hashCode();
+        int hashCode = calledMethod.hashCode() + serviceName.hashCode() + clientName.hashCode();
         return hashCode;
     }
-    
-    /* (non-Javadoc)
+
+    /*
+     * (non-Javadoc)
+     * 
      * @see java.lang.Object#toString()
      */
