docs: def get_value(data, key):
      """Follow the dot notation to get the proper field, then perform the action
  
         Args:
             data: the data as a dictionary (required to be a dictionary)
             key: the key (as dot notation) into the data that gives the field (IP.src)
  
          Returns:
             the value of the field(subfield) if it exist, otherwise None
      """
      ref = data
      try:
          for subkey in key.split('.'):
              if isinstance(ref, dict):
                  ref = ref[subkey]
              else:
                  print('CRITICAL: Cannot use subkey %s on non-dictionary element' % subkey)
                  return None
          return ref
  
      # In general KeyErrors are expected
      except KeyError:
          return None