diff --git a/thalerj/openbmctool.py b/thalerj/openbmctool.py
index 2fce508..81e944c 100644
--- a/thalerj/openbmctool.py
+++ b/thalerj/openbmctool.py
@@ -648,6 +648,37 @@
     return eselParts                
 
 
+def getESELSeverity(esel):
+    """
+        Finds the severity type in an eSEL from the User Header section.
+        @param esel - the eSEL data
+        @return severity - e.g. 'Critical'
+    """
+
+    # everything but 1 and 2 are Critical
+    # '1': 'recovered',
+    # '2': 'predictive',
+    # '4': 'unrecoverable',
+    # '5': 'critical',
+    # '6': 'diagnostic',
+    # '7': 'symptom'
+    severities = {
+        '1': 'Informational',
+        '2': 'Warning'
+    }
+
+    try:
+        headerPosition = esel.index('55 48') # 'UH'
+        # The severity is the last byte in the 8 byte section (a byte is '  bb')
+        severity = esel[headerPosition:headerPosition+32].split(' ')[-1]
+        type = severity[0]
+    except ValueError:
+        print("Could not find severity value in UH section in eSEL")
+        type = 'x';
+
+    return severities.get(type, 'Critical')
+
+
 def sortSELs(events):
     """
          sorts the sels by timestamp, then log entry number
@@ -698,6 +729,7 @@
     esel = ""
     eselParts = {}
     i2cdevice= ""
+    eselSeverity = None
     
     'prepare and sort the event entries'
     for key in selEntries:
@@ -747,6 +779,7 @@
                     calloutFound = True
                 if("ESEL" in addDataPiece[i]):
                     esel = str(addDataPiece[i]).strip().split('=')[1]
+                    eselSeverity = getESELSeverity(esel)
                     if args.devdebug:
                         eselParts = parseESEL(args, esel)
                     hasEsel=True
@@ -769,6 +802,15 @@
             if(calloutFound):
                 if fruCallout != "":
                     policyKey = messageID +"||" +  fruCallout
+
+                    # Also use the severity for hostboot errors
+                    if eselSeverity and messageID == 'org.open_power.Host.Error.Event':
+                        policyKey += '||' + eselSeverity
+
+                        # if not in the table, fall back to the original key
+                        if policyKey not in policyTable:
+                            policyKey = policyKey.replace('||'+eselSeverity, '')
+
                     if policyKey not in policyTable:
                         policyKey = messageID
                 else:
