diff --git a/meta-phosphor/common/recipes-phosphor/dump/phosphor-debug-collector.bb b/meta-phosphor/common/recipes-phosphor/dump/phosphor-debug-collector.bb
index c29c16a..24b233f 100644
--- a/meta-phosphor/common/recipes-phosphor/dump/phosphor-debug-collector.bb
+++ b/meta-phosphor/common/recipes-phosphor/dump/phosphor-debug-collector.bb
@@ -10,6 +10,7 @@
     ${PN}-manager \
     ${PN}-monitor \
     ${PN}-dreport \
+    ${PN}-scripts \
 "
 PACKAGES =+ "${DEBUG_COLLECTOR_PKGS}"
 PACKAGES_remove = "${PN}"
@@ -54,6 +55,9 @@
         bash \
         xz \
 "
+RDEPENDS_${PN}-scripts += " \
+        bash \
+"
 
 MGR_SVC ?= "xyz.openbmc_project.Dump.Manager.service"
 
@@ -62,6 +66,7 @@
 FILES_${PN}-manager += "${sbindir}/phosphor-dump-manager"
 FILES_${PN}-monitor += "${sbindir}/phosphor-dump-monitor"
 FILES_${PN}-dreport += "${bindir}/dreport"
+FILES_${PN}-scripts += "${dreport_dir}"
 
 DBUS_SERVICE_${PN}-manager += "${MGR_SVC}"
 SYSTEMD_SERVICE_${PN}-monitor += "obmc-dump-monitor.service"
@@ -70,10 +75,90 @@
 
 S = "${WORKDIR}/git"
 
-do_install_append() {
-       install -d ${D}${bindir}
-       install -m 0755 ${S}/tools/dreport \
-                       ${D}${bindir}/dreport
+# Install dreport script
+# From tools/dreport.d/dreport to /usr/bin/dreport
+install_dreport() {
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/tools/dreport.d/dreport \
+                    ${D}${bindir}/dreport
+}
+
+# Install dreport sample configuration file
+# From tools/dreport.d/sample.conf
+# to /usr/share/dreport.d/conf.d/dreport.conf
+install_dreport_conf_file() {
+    install -d ${D}${dreport_conf_dir}
+    install -m 0644 ${S}/tools/dreport.d/sample.conf \
+                        ${D}${dreport_conf_dir}/dreport.conf
+}
+
+# Install dreport plugins
+# From tools/dreport.d/plugins.d to /usr/share/dreport.d/plugins.d
+install_dreport_plugins_scripts() {
+    install -d ${D}${dreport_plugin_dir}
+    install -m 0755 ${S}/tools/dreport.d/plugins.d/* ${D}${dreport_plugin_dir}/
+}
+
+# Install dreport utility functions
+# From tools/dreport.d/include.d to /usr/share/dreport.d/include.d
+install_dreport_include_scripts() {
+    install -d ${D}${dreport_include_dir}
+    install -m 0755 ${S}/tools/dreport.d/include.d/* \
+                ${D}${dreport_include_dir}/
+}
+
+# Parse the scripts in base directory, read config value
+# Create user directories based on the dump type value in the config section
+# Create softlinks for the base scripts in the user directories
+python install_dreport_user_scripts() {
+    from shutil import copyfile
+    import stat
+    import re
+    import configparser
+
+    #Read the user types from the dreport.conf file
+    configure = configparser.ConfigParser()
+    conf_dir  = d.getVar('D', True) + d.getVar('dreport_conf_dir', True)
+    confsource = os.path.join(conf_dir, "dreport.conf")
+    configure.read(confsource)
+    section = "DumpType"
+    options = configure.options(section)
+
+    #open the script from base dir and read the config value
+    source = d.getVar('S', True)
+    source_path = os.path.join(source, "tools", "dreport.d", "plugins.d")
+    scripts = os.listdir(source_path)
+    dreport_dir= d.getVar('D', True) + d.getVar('dreport_dir', True)
+    config = ("config:")
+    for script in scripts:
+        srcname = os.path.join(source_path, script)
+        srclink = os.path.join(d.getVar('dreport_plugin_dir', True), script)
+        file = open(srcname, "r")
+        for line in file:
+            if not config in line:
+                continue
+            revalue = re.search('[0-9]+.[0-9]+', line)
+            if not revalue:
+                bb.warn("Invalid format for config value =%s" % line)
+                continue
+            parse_value = revalue.group(0)
+            config_values = re.split('\W+', parse_value, 1)
+            if(len(config_values) != 2):
+                bb.warn("Invalid config value=%s" % parse_value)
+                break;
+            priority = config_values[1]
+            types = [int(d) for d in str(config_values[0])]
+            for type in types:
+                if not configure.has_option(section, str(type)):
+                    bb.warn("Invalid dump type id =%s" % (str(type)))
+                    continue
+                typestr = configure.get(section, str(type))
+                destdir = os.path.join(dreport_dir, ("pl_" + typestr + ".d"))
+                if not os.path.exists(destdir):
+                    os.makedirs(destdir)
+                linkname = "E" + priority + script
+                destlink = os.path.join(destdir, linkname)
+                os.symlink(srclink, destlink)
 }
 
 #Enable ubifs-workaround by MACHINE_FEATURE obmc-ubi-fs.
@@ -82,3 +167,9 @@
        --enable-ubifs-workaround, \
        --disable-ubifs-workaround \
 "
+
+do_install[postfuncs] += "install_dreport"
+do_install[postfuncs] += "install_dreport_conf_file"
+do_install[postfuncs] += "install_dreport_plugins_scripts"
+do_install[postfuncs] += "install_dreport_include_scripts"
+do_install[postfuncs] += "install_dreport_user_scripts"
diff --git a/meta-phosphor/common/recipes-phosphor/dump/phosphor-debug-collector.inc b/meta-phosphor/common/recipes-phosphor/dump/phosphor-debug-collector.inc
index 8fd608b..d5f4af2 100644
--- a/meta-phosphor/common/recipes-phosphor/dump/phosphor-debug-collector.inc
+++ b/meta-phosphor/common/recipes-phosphor/dump/phosphor-debug-collector.inc
@@ -2,4 +2,4 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
 SRC_URI += "git://github.com/openbmc/phosphor-debug-collector"
-SRCREV = "7f2f8027b013c39e28da6b3e1e10f6ddc7d3d042"
+SRCREV = "11eaab7b68d7984199a283bc6c78617ce72b8ca6"
diff --git a/meta-phosphor/common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb b/meta-phosphor/common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
index 50f9065..788bd48 100644
--- a/meta-phosphor/common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
+++ b/meta-phosphor/common/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
@@ -94,6 +94,7 @@
         ${VIRTUAL-RUNTIME_obmc-dump-manager} \
         ${VIRTUAL-RUNTIME_obmc-dump-monitor} \
         phosphor-debug-collector-dreport \
+        phosphor-debug-collector-scripts \
         "
 
 SUMMARY_${PN}-settings = "Settings applications"
