diff --git a/modules/network-annotation-processor/src/integrationTest/java/org/apache/ignite/internal/network/processor/ITTransferableObjectProcessorTest.java b/modules/network-annotation-processor/src/integrationTest/java/org/apache/ignite/internal/network/processor/ITTransferableObjectProcessorTest.java
index 0a23e0b..54f37ad 100644
--- a/modules/network-annotation-processor/src/integrationTest/java/org/apache/ignite/internal/network/processor/ITTransferableObjectProcessorTest.java
+++ b/modules/network-annotation-processor/src/integrationTest/java/org/apache/ignite/internal/network/processor/ITTransferableObjectProcessorTest.java
@@ -172,7 +172,7 @@
         Compilation compilation = compiler.compile(sources("AllTypesMessage"));
 
         assertThat(compilation).hadErrorContaining(
-            "Invalid number of message groups (classes annotated with @MessageGroup): 0"
+            "No message groups (classes annotated with @MessageGroup) found"
         );
     }
 
@@ -182,11 +182,14 @@
     @Test
     void testMultipleMessageGroups() {
         Compilation compilation = compiler.compile(
-            sources("AllTypesMessage", "ITTestMessageGroup", "SecondGroup")
+            sources("AllTypesMessage", "ConflictingTypeMessage", "ITTestMessageGroup", "SecondGroup")
         );
 
         assertThat(compilation).hadErrorContaining(
-            "Invalid number of message groups (classes annotated with @MessageGroup): 2"
+            "Invalid number of message groups (classes annotated with @MessageGroup), " +
+                "only one can be present in a compilation unit: " +
+                "[org.apache.ignite.internal.network.processor.ITTestMessageGroup, " +
+                "org.apache.ignite.internal.network.processor.SecondGroup]"
         );
     }
 
diff --git a/modules/network-annotation-processor/src/main/java/org/apache/ignite/internal/network/processor/TransferableObjectProcessor.java b/modules/network-annotation-processor/src/main/java/org/apache/ignite/internal/network/processor/TransferableObjectProcessor.java
index ca4355d..77c5c50 100644
--- a/modules/network-annotation-processor/src/main/java/org/apache/ignite/internal/network/processor/TransferableObjectProcessor.java
+++ b/modules/network-annotation-processor/src/main/java/org/apache/ignite/internal/network/processor/TransferableObjectProcessor.java
@@ -75,10 +75,10 @@
             if (messages.isEmpty())
                 return true;
 
-            validateMessages(messages);
-
             MessageGroupWrapper messageGroup = getMessageGroup(roundEnv);
 
+            validateMessages(messages);
+
             generateMessageImpls(messages, messageGroup);
 
             generateSerializers(messages, messageGroup);
@@ -228,16 +228,25 @@
      * annotation.
      */
     private static MessageGroupWrapper getMessageGroup(RoundEnvironment roundEnv) {
-        Set<? extends Element> messagemessageGroupSet = roundEnv.getElementsAnnotatedWith(MessageGroup.class);
+        Set<? extends Element> messageGroupSet = roundEnv.getElementsAnnotatedWith(MessageGroup.class);
 
-        if (messagemessageGroupSet.size() != 1) {
-            var errorMsg = "Invalid number of message groups (classes annotated with @MessageGroup): " +
-                messagemessageGroupSet.size();
+        if (messageGroupSet.isEmpty())
+            throw new ProcessingException("No message groups (classes annotated with @MessageGroup) found");
 
-            throw new ProcessingException(errorMsg);
+        if (messageGroupSet.size() != 1) {
+            List<String> sortedNames = messageGroupSet.stream()
+                .map(Object::toString)
+                .sorted()
+                .collect(Collectors.toList());
+
+            throw new ProcessingException(
+                "Invalid number of message groups (classes annotated with @MessageGroup), " +
+                    "only one can be present in a compilation unit: " + sortedNames
+            );
         }
 
-        Element singleElement = messagemessageGroupSet.iterator().next();
+        Element singleElement = messageGroupSet.iterator().next();
+
         return new MessageGroupWrapper((TypeElement) singleElement);
     }
 
