diff --git a/tools/org.apache.felix.scr.annotations/changelog.txt b/tools/org.apache.felix.scr.annotations/changelog.txt
index 3f404bb..35b1dd7 100644
--- a/tools/org.apache.felix.scr.annotations/changelog.txt
+++ b/tools/org.apache.felix.scr.annotations/changelog.txt
@@ -1,3 +1,9 @@
+Changes from 1.10.0 to 1.9.12
+-----------------------------
+** Improvement
+    * [FELIX-5072] - Support optional property "pattern" in @SlingFilter annotation
+
+
 Changes from 1.9.12 to 1.9.10
 -----------------------------
 ** Improvement
diff --git a/tools/org.apache.felix.scr.annotations/src/main/java/org/apache/felix/scr/annotations/sling/SlingFilter.java b/tools/org.apache.felix.scr.annotations/src/main/java/org/apache/felix/scr/annotations/sling/SlingFilter.java
index 32f6b3a..541e651 100644
--- a/tools/org.apache.felix.scr.annotations/src/main/java/org/apache/felix/scr/annotations/sling/SlingFilter.java
+++ b/tools/org.apache.felix.scr.annotations/src/main/java/org/apache/felix/scr/annotations/sling/SlingFilter.java
@@ -52,6 +52,12 @@
     int order();
 
     /**
+     * Restrict the filter to paths that match the supplied regular expression. Requires Sling Engine 2.4.0.
+     * @since 1.10.0
+     */
+    String pattern() default "";
+
+    /**
      * The scopes of a filter.
      * If the filter has request scope, it is run once for a request.
      * If the filter has component scope, it is run once for every included
diff --git a/tools/org.apache.felix.scr.annotations/src/main/java/org/apache/felix/scrplugin/processing/SlingAnnotationProcessor.java b/tools/org.apache.felix.scr.annotations/src/main/java/org/apache/felix/scrplugin/processing/SlingAnnotationProcessor.java
index 9ae20a3..d67655e 100644
--- a/tools/org.apache.felix.scr.annotations/src/main/java/org/apache/felix/scrplugin/processing/SlingAnnotationProcessor.java
+++ b/tools/org.apache.felix.scr.annotations/src/main/java/org/apache/felix/scrplugin/processing/SlingAnnotationProcessor.java
@@ -1,5 +1,5 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one
+  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
  * regarding copyright ownership.  The ASF licenses this file
@@ -34,6 +34,7 @@
 import org.apache.felix.scrplugin.description.PropertyDescription;
 import org.apache.felix.scrplugin.description.PropertyType;
 import org.apache.felix.scrplugin.description.ServiceDescription;
+import org.apache.felix.scrplugin.helper.StringUtils;
 
 /**
  * This is the processor for the Apache Felix Sling annotations.
@@ -187,6 +188,19 @@
         }
         classDescription.add(pd);
 
+        // property pattern = sling.filter.pattern
+        final String pattern = cad.getStringValue("pattern", "");
+        if(!StringUtils.isEmpty(pattern)) {
+            final PropertyDescription pdPattern = new PropertyDescription(cad);
+            pdPattern.setName("sling.filter.pattern");
+            pdPattern.setValue(pattern);
+            pdPattern.setType(PropertyType.String);
+            if (metatype) {
+            	pdPattern.setPrivate(true);
+            }
+            classDescription.add(pdPattern);        	
+        }
+        
         // property scope
         final String[] scopes;
         final Object val = cad.getValue("scope");
