diff --git a/Makefile.am b/Makefile.am
index 94600cc..27885d3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -43,11 +43,12 @@
 
 generated.cpp:
 	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/pimgen.py $(PIMGEN_ARGS) -d \
-		$(base_yamldir) -o $(builddir) generate-cpp
+		$(base_yamldir) -o $(builddir) -b $(BUSNAME) generate-cpp
 
 gen_serialization.hpp:
 	$(AM_V_GEN)$(PYTHON) $(top_srcdir)/pimgen.py $(PIMGEN_ARGS) -d \
-		$(base_yamldir) -o $(builddir) generate-serialization
+		$(base_yamldir) -o $(builddir) -b $(BUSNAME) \
+		generate-serialization
 
 SUBDIRS = . test
 
diff --git a/example/events.d/match1.yaml b/example/events.d/match1.yaml
index 3763093..6246dbd 100644
--- a/example/events.d/match1.yaml
+++ b/example/events.d/match1.yaml
@@ -78,8 +78,19 @@
 
     - name: startup event example
       description: >
-          Create /createme3 at startup.
+          Create /createme3 at startup if ExampleProperty1 on /changeme
+          equals changed.
       type: startup
+      filters:
+          - name: propertyIs
+            path: /changeme
+            interface: xyz.openbmc_project.Example.Iface1
+            property: ExampleProperty1
+            value:
+                value: changed
+                type: string
+            dbusMember: "sdbusplus::xyz::openbmc_project::Example::\
+                server::Iface1"
       actions:
           - name: createObjects
             objs:
diff --git a/pimgen.py b/pimgen.py
index de5419d..7c9ee53 100755
--- a/pimgen.py
+++ b/pimgen.py
@@ -26,6 +26,10 @@
 from sdbusplus.renderer import Renderer
 
 
+# Global busname for use within classes where necessary
+busname = "xyz.openbmc_project.Inventory.Manager"
+
+
 def cppTypeName(yaml_type):
     ''' Convert yaml types to cpp types.'''
     return sdbusplus.property.Property(type=yaml_type).cppTypeName
@@ -269,6 +273,14 @@
         super(PathCondition, self).__init__(**kw)
 
 
+class GetProperty(MethodCall):
+    '''Convenience type for getting inventory properties'''
+
+    def __init__(self, **kw):
+        kw['name'] = 'make_get_property'
+        super(GetProperty, self).__init__(**kw)
+
+
 class CreateObjects(MethodCall):
     '''Assemble a createObjects functor.'''
 
@@ -388,8 +400,10 @@
             path = TrivialArgument(value=path, type='string')
 
         args.append(path)
-        args.append(TrivialArgument(value=kw.pop('interface'), type='string'))
-        args.append(TrivialArgument(value=kw.pop('property'), type='string'))
+        iface = TrivialArgument(value=kw.pop('interface'), type='string')
+        args.append(iface)
+        prop = TrivialArgument(value=kw.pop('property'), type='string')
+        args.append(prop)
         args.append(TrivialArgument(
             decorators=[
                 Literal(kw['value'].get('type', None))], **kw.pop('value')))
@@ -398,6 +412,34 @@
         if service:
             args.append(TrivialArgument(value=service, type='string'))
 
+        dbusMember = kw.pop('dbusMember', None)
+        if dbusMember:
+            # Inventory manager's service name is required
+            if not service or service != busname:
+                args.append(TrivialArgument(value=busname, type='string'))
+
+            gpArgs = []
+            gpArgs.append(path)
+            gpArgs.append(iface)
+            # Prepend '&' and append 'getPropertyByName' function on dbusMember
+            gpArgs.append(TrivialArgument(
+                value='&'+dbusMember+'::getPropertyByName'))
+            gpArgs.append(prop)
+            fArg = MethodCall(
+                name='getProperty',
+                namespace=['functor'],
+                templates=[Template(
+                    name=dbusMember,
+                    namespace=[])],
+                args=gpArgs)
+
+            # Append getProperty functor
+            args.append(GetProperty(
+                templates=[Template(
+                    name=dbusMember+'::PropertiesVariant',
+                    namespace=[])],
+                    args=[fArg]))
+
         kw['args'] = args
         kw['namespace'] = ['functor']
         super(PropertyIs, self).__init__(**kw)
@@ -505,6 +547,8 @@
                 os.path.join(args.inputdir, 'extra_interfaces.d'))
         interface_composite.update(extra_interface_composite)
         interface_composite = InterfaceComposite(interface_composite)
+        # Update busname if configured differenly than the default
+        busname = args.busname
 
         return Everything(
             *events,
@@ -613,6 +657,10 @@
         default=os.path.join(script_dir, 'example'),
         help='Location of files to process.')
     parser.add_argument(
+        '-b', '--bus-name', dest='busname',
+        default='xyz.openbmc_project.Inventory.Manager',
+        help='Inventory manager busname.')
+    parser.add_argument(
         'command', metavar='COMMAND', type=str,
         choices=valid_commands.keys(),
         help='%s.' % " | ".join(valid_commands.keys()))
