private void decodeGroup(String serviceName, OMMFilterEntry serviceFilterEntry)
    {

        byte[] group = null;
        byte[] mergedToGroup = null;
        OMMState groupStatus = null;

        // Get Group, MergedToGroup and Status from the payload
        OMMData serviceFilterEntryData = serviceFilterEntry.getData();
        for (Iterator<?> eliter = ((OMMElementList)serviceFilterEntryData).iterator(); eliter
                .hasNext();)
        {
            OMMElementEntry entry = (OMMElementEntry)eliter.next();
            OMMData data = entry.getData();

            if (entry.getName().equals(RDMService.Group.Group))
            {
                group = ((OMMDataBuffer)data).getBytes().clone();
            }
            else if (entry.getName().equals(RDMService.Group.MergedToGroup))
            {
                mergedToGroup = ((OMMDataBuffer)data).getBytes().clone();
            }
            else if (entry.getName().equals(RDMService.Group.Status))
            {
                groupStatus = (OMMState)data;
            }
        }

        if (group != null)
        {
            // First we need to merge groups
            OMMItemGroup fromGroup = OMMItemGroup.create(group);
            if (mergedToGroup != null)
            {
                OMMItemGroup toGroup = OMMItemGroup.create(mergedToGroup);
                _itemGroupManager.mergeGroup(serviceName, fromGroup, toGroup);
                fromGroup = toGroup;

                System.out.println(_instanceName + " Merged group " + fromGroup + " in "
                        + serviceName + " to group " + toGroup);
            }

            // Then we apply status to the group
            if (groupStatus != null)
            {
                _itemGroupManager.applyStatus(serviceName, fromGroup, groupStatus);
            }
        }
    }