diff --git a/ipaacalib/java/src/ipaaca/util/ComponentNotifier.java b/ipaacalib/java/src/ipaaca/util/ComponentNotifier.java
index d08f96a19572e48d42f24c9d8c2ea2557edde67b..6fbebdc8529e903dcffa4eb69d4381c7e71a5b1e 100644
--- a/ipaacalib/java/src/ipaaca/util/ComponentNotifier.java
+++ b/ipaacalib/java/src/ipaaca/util/ComponentNotifier.java
@@ -161,7 +161,7 @@ public class ComponentNotifier
     {
         if(!isInitialized)
         {
-            inBuffer.registerHandler(new IUEventHandler(new ComponentNotifyHandler(), EnumSet.of(IUEventType.ADDED), ImmutableSet
+            inBuffer.registerHandler(new IUEventHandler(new ComponentNotifyHandler(), EnumSet.of(IUEventType.ADDED, IUEventType.MESSAGE), ImmutableSet
                     .of(NOTIFY_CATEGORY)));
             submitNotify(true);
             isInitialized = true;
diff --git a/ipaacalib/java/test/src/ipaaca/ComponentMessageCommunicationIntegrationTest.java b/ipaacalib/java/test/src/ipaaca/ComponentMessageCommunicationIntegrationTest.java
index f678a1245019332a3594e503ff1c346e27c3ff8b..e4934ae041cb58dc5518e7588ff3d446b86dd589 100644
--- a/ipaacalib/java/test/src/ipaaca/ComponentMessageCommunicationIntegrationTest.java
+++ b/ipaacalib/java/test/src/ipaaca/ComponentMessageCommunicationIntegrationTest.java
@@ -46,7 +46,7 @@ public class ComponentMessageCommunicationIntegrationTest
 
         Set<String> categories = new ImmutableSet.Builder<String>().add(CATEGORY).build();
         inBuffer = new InputBuffer("component2", categories);
-        EnumSet<IUEventType> types = EnumSet.of(IUEventType.ADDED, IUEventType.COMMITTED, IUEventType.UPDATED);
+        EnumSet<IUEventType> types = EnumSet.of(IUEventType.ADDED, IUEventType.COMMITTED, IUEventType.UPDATED, IUEventType.MESSAGE);
         component2EventHandler = new CountingEventHandler();
         component1EventHandler = new CountingEventHandler();
         inBuffer.registerHandler(new IUEventHandler(component2EventHandler, types, categories));
@@ -75,11 +75,11 @@ public class ComponentMessageCommunicationIntegrationTest
         AbstractIU iuIn = inBuffer.getIU(localIU.getUid());
         assertNull(iuIn);
         assertThat(localIU.getLinks("INIT"), containsInAnyOrder("init1", "init2"));
-        assertEquals(1, component2EventHandler.getNumberOfAddEvents(localIU.getUid()));
-        assertEquals(0, component1EventHandler.getNumberOfAddEvents(localIU.getUid()));
-        assertEquals(1, component2EventHandler.getNumberOfAddEvents(localIU.getUid()));
-        assertEquals(0, component1EventHandler.getNumberOfAddEvents(localIU.getUid()));
-        assertEquals(localIU.getUid(), component2StoreHandler.getAddedIUs().get(0).getUid());
+        assertEquals(1, component2EventHandler.getNumberOfMessageEvents(localIU.getUid()));
+        assertEquals(0, component1EventHandler.getNumberOfMessageEvents(localIU.getUid()));
+        assertEquals(1, component2EventHandler.getNumberOfMessageEvents(localIU.getUid()));
+        assertEquals(0, component1EventHandler.getNumberOfMessageEvents(localIU.getUid()));
+        assertEquals(localIU.getUid(), component2StoreHandler.getMessageIUs().get(0).getUid());
     }
 
     @Test
@@ -90,7 +90,7 @@ public class ComponentMessageCommunicationIntegrationTest
         Thread.sleep(200);
         assertEquals(0, component1EventHandler.getNumberOfCommitEvents(localIU.getUid()));
         assertEquals(0, component2EventHandler.getNumberOfCommitEvents(localIU.getUid()));
-        assertFalse(component2StoreHandler.getAddedIUs().get(0).isCommitted());
+        assertFalse(component2StoreHandler.getMessageIUs().get(0).isCommitted());
     }
 
     @Test
@@ -101,7 +101,7 @@ public class ComponentMessageCommunicationIntegrationTest
         Thread.sleep(200);
         assertEquals(0, component1EventHandler.getNumberOfCommitEvents(localIU.getUid()));
         assertEquals(0, component2EventHandler.getNumberOfCommitEvents(localIU.getUid()));
-        assertTrue(component2StoreHandler.getAddedIUs().get(0).isCommitted());
+        assertTrue(component2StoreHandler.getMessageIUs().get(0).isCommitted());
     }
 
     @Test
@@ -109,7 +109,7 @@ public class ComponentMessageCommunicationIntegrationTest
     {
         outBuffer.add(localIU);
         Thread.sleep(200);
-        AbstractIU iuIn = component2StoreHandler.getAddedIUs().get(0);
+        AbstractIU iuIn = component2StoreHandler.getMessageIUs().get(0);
 
         iuIn.commit();
         Thread.sleep(200);
@@ -123,7 +123,7 @@ public class ComponentMessageCommunicationIntegrationTest
     {
         outBuffer.add(localIU);
         Thread.sleep(200);
-        AbstractIU iuIn = component2StoreHandler.getAddedIUs().get(0);
+        AbstractIU iuIn = component2StoreHandler.getMessageIUs().get(0);
         assertNull(iuIn.getPayload().get("key2"));
 
         localIU.getPayload().put("key2", "value2");
@@ -140,7 +140,7 @@ public class ComponentMessageCommunicationIntegrationTest
         outBuffer.add(localIU);
 
         Thread.sleep(200);
-        AbstractIU iuIn = component2StoreHandler.getAddedIUs().get(0);
+        AbstractIU iuIn = component2StoreHandler.getMessageIUs().get(0);
         assertEquals("value2", iuIn.getPayload().get("key2"));
     }
 
diff --git a/ipaacalib/java/test/src/ipaaca/CountingEventHandler.java b/ipaacalib/java/test/src/ipaaca/CountingEventHandler.java
index f6610400e68176db9e7276c128fe45f87f285c22..08a06f6f390539545d12badce90fcfac5f94e179 100644
--- a/ipaacalib/java/test/src/ipaaca/CountingEventHandler.java
+++ b/ipaacalib/java/test/src/ipaaca/CountingEventHandler.java
@@ -10,6 +10,7 @@ import java.util.Map;
  */
 final class CountingEventHandler implements HandlerFunctor
 {
+    private Map<String,Integer> messageEvents = new HashMap<String,Integer>();
     private Map<String,Integer> commitEvents = new HashMap<String,Integer>();
     private Map<String,Integer> addEvents = new HashMap<String,Integer>();
     private Map<String,Integer> updateEvents = new HashMap<String,Integer>();
@@ -33,6 +34,7 @@ final class CountingEventHandler implements HandlerFunctor
         case ADDED:  updateEventMap(iu.getUid(),addEvents);  break;
         case COMMITTED: updateEventMap(iu.getUid(),commitEvents); break;
         case UPDATED: updateEventMap(iu.getUid(),updateEvents); break;
+        case MESSAGE: updateEventMap(iu.getUid(),messageEvents);break;
         case DELETED:
             break;
         case LINKSUPDATED:
@@ -70,4 +72,13 @@ final class CountingEventHandler implements HandlerFunctor
         }
         return updateEvents.get(iu);
     }
+    
+    public int getNumberOfMessageEvents(String iu)
+    {
+        if(!messageEvents.containsKey(iu))
+        {
+            return 0;
+        }
+        return messageEvents.get(iu);
+    }
 }
\ No newline at end of file
diff --git a/ipaacalib/java/test/src/ipaaca/JavaPythonTest.java b/ipaacalib/java/test/src/ipaaca/JavaPythonTest.java
index 95bb779a2c45dfad831897aa65187ca2e7a53397..92f0b67f58c865514147f6cf537d1d9222dfda7a 100644
--- a/ipaacalib/java/test/src/ipaaca/JavaPythonTest.java
+++ b/ipaacalib/java/test/src/ipaaca/JavaPythonTest.java
@@ -201,7 +201,7 @@ public class JavaPythonTest
     @Test
     public void testMessageFromPython()throws IOException, InterruptedException
     {
-        inBuffer.registerHandler(new IUEventHandler(storeHandler,EnumSet.of(IUEventType.ADDED),ImmutableSet.of("JavaPythonTest")));
+        inBuffer.registerHandler(new IUEventHandler(storeHandler,EnumSet.of(IUEventType.ADDED, IUEventType.MESSAGE),ImmutableSet.of("JavaPythonTest")));
         String pypr = PYTHON_PREAMBLE 
                 +"ob = ipaaca.OutputBuffer('pythonside')\n"
                 +"iu = ipaaca.Message('JavaPythonTest')\n"
@@ -210,7 +210,7 @@ public class JavaPythonTest
                 +"ob.add(iu)\n";
         runPythonProgram(pypr);
         Thread.sleep(200);
-        assertEquals(1,storeHandler.getAddedIUs().size());
-        assertEquals("Hello from Python!", storeHandler.getAddedIUs().get(0).getPayload().get("data"));
+        assertEquals(1,storeHandler.getMessageIUs().size());
+        assertEquals("Hello from Python!", storeHandler.getMessageIUs().get(0).getPayload().get("data"));
     }
 }
diff --git a/ipaacalib/java/test/src/ipaaca/StoringEventHandler.java b/ipaacalib/java/test/src/ipaaca/StoringEventHandler.java
index 7ba5f5b61bba109590a191561f3d263443c2dfff..b95c4f5658e73704dacd376b5f7afab12682987b 100644
--- a/ipaacalib/java/test/src/ipaaca/StoringEventHandler.java
+++ b/ipaacalib/java/test/src/ipaaca/StoringEventHandler.java
@@ -11,11 +11,17 @@ import java.util.List;
 public class StoringEventHandler implements HandlerFunctor
 {
     private List<AbstractIU> addedIUs = new ArrayList<AbstractIU>();
+    private List<AbstractIU> messageIUs = new ArrayList<AbstractIU>();
 
     public List<AbstractIU> getAddedIUs()
     {
         return addedIUs;
     }
+    
+    public List<AbstractIU> getMessageIUs()
+    {
+        return messageIUs;
+    }
 
     @Override
     public void handle(AbstractIU iu, IUEventType type, boolean local)
@@ -25,6 +31,9 @@ public class StoringEventHandler implements HandlerFunctor
         case ADDED:
             addedIUs.add(iu);
             break;
+        case MESSAGE:
+            messageIUs.add(iu);
+            break;
         case COMMITTED:
             break;
         case UPDATED: