diff --git a/README.rst b/README.rst
index 5e8a6e9..7dc19af 100644
--- a/README.rst
+++ b/README.rst
@@ -485,7 +485,7 @@
          my-list-view:
            enabled: true
            type: ListView
-           include_regex: ".\*."
+           include_regex: ".*"
          my-view:
            # set false to disable
            enabled: true
@@ -493,7 +493,25 @@
 
 View specific params:
 
-- include_regex for ListView
+- include_regex for ListView and CategorizedJobsView
+- categories for CategorizedJobsView
+
+Categorized views
+
+.. code-block:: yaml
+
+    jenkins:
+      client:
+        view:
+          my-categorized-view:
+            enabled: true
+            type: CategorizedJobsView
+            include_regex: ".*"
+            categories:
+              - group_regex: "aptly-.*-nightly-testing"
+                naming_rule: "Nightly -> Testing"
+              - group_regex: "aptly-.*-nightly-production"
+                naming_rule: "Nightly -> Production"
 
 
 Credentials enforcing from client
diff --git a/_states/jenkins_view.py b/_states/jenkins_view.py
index e14d3fd..6f0d995 100644
--- a/_states/jenkins_view.py
+++ b/_states/jenkins_view.py
@@ -1,4 +1,5 @@
 import logging
+from json import dumps
 logger = logging.getLogger(__name__)
 
 add_view_groovy = """\
@@ -12,6 +13,32 @@
     }}else{{
         print("EXISTS")
     }}
+  }}else if(view.getClass().getName().equals("org.jenkinsci.plugins.categorizedview.CategorizedJobsView")){{
+    def jsonSlurper = new groovy.json.JsonSlurper()
+    def inputCategories = jsonSlurper.parseText('{categories_string}')
+    def groupRegexes = inputCategories.stream().map{{e -> e["group_regex"]}}.collect(Collectors.toList())
+    def namingRules = inputCategories.stream().map{{e -> e["naming_rule"]}}.collect(Collectors.toList())
+    def actualCategories = view.categorizationCriteria
+    def equals = !actualCategories.isEmpty()
+    def include_regex="{include_regex}"
+    if(include_regex != "" && !view.getIncludeRegex().equals(include_regex)){{
+        view.setIncludeRegex(include_regex)
+        equals = false
+    }}
+    for(int i=0;i<actualCategories.size();i++){{
+      if(!groupRegexes.contains(actualCategories[i].groupRegex) || !namingRules.contains(actualCategories[i].namingRule)){{
+        equals = false
+      }}
+    }}
+    if(!equals){{
+      view.categorizationCriteria.clear()
+      for(int i=0;i<inputCategories.size();i++){{
+        view.categorizationCriteria.add(new GroupingRule(inputCategories[i].group_regex,inputCategories[i].naming_rule))
+      }}
+      print("ADDED/CHANGED")
+    }}else{{
+      print("EXISTS")
+    }}
   }}else{{
     print("EXISTS")
   }}
@@ -24,7 +51,7 @@
     print("FAILED")
   }}
 }}
-""" # noqa
+"""  # noqa
 
 remove_view_groovy = """\
 view = Jenkins.instance.getView("{view_name}")
@@ -38,7 +65,7 @@
 }}else{{
   print("NOT PRESENT")
 }}
-""" # noqa
+"""  # noqa
 
 
 def present(name, type="ListView", **kwargs):
@@ -79,12 +106,26 @@
         view_def = "view = new {}(\"{}\")".format(type, name)
         # handle view specific params
         include_regex = kwargs.get('include_regex')
+        categories_string = ""
         if type == "ListView":
             if include_regex:
-                view_def += "\nview.setIncludeRegex(\"{}\")".format(include_regex)
+                view_def += "\nview.setIncludeRegex(\"{}\")".format(
+                    include_regex)
+        if type == "CategorizedJobsView":
+            # add imports for categorized views
+            template = "import java.util.stream.Collectors\nimport org.jenkinsci.plugins.categorizedview.CategorizedJobsView\nimport org.jenkinsci.plugins.categorizedview.GroupingRule\n" + template
+            if include_regex:
+                view_def += "\nview.setIncludeRegex(\"{}\")".format(
+                    include_regex)
+            categories = kwargs.get('categories', [])
+            for category in categories:
+                view_def += "\nview.categorizationCriteria.add(new GroupingRule(\"{}\", \"{}\"))".format(
+                    category["group_regex"], category["naming_rule"])
+            # create catogories string readable in groovy
+            categories_string = dumps(categories)
 
         call_result = __salt__['jenkins_common.call_groovy_script'](
-            template, {"view_def": view_def, "view_name": name, "type": type if type else "", "include_regex": include_regex if include_regex else ""})
+            template, {"view_def": view_def, "view_name": name, "type": type if type else "", "include_regex": include_regex if include_regex else "", "categories_string": categories_string if categories_string else ""})
         if call_result["code"] == 200 and call_result["msg"] in success_msgs:
             status = call_result["msg"]
             if status == success_msgs[0]:
@@ -96,6 +137,6 @@
             logger.error(
                 "Jenkins view API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins view API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
