diff --git a/tools/dreport.d/ibm.d/gendumpheader b/tools/dreport.d/ibm.d/gendumpheader
new file mode 100755
index 0000000..638cf6d
--- /dev/null
+++ b/tools/dreport.d/ibm.d/gendumpheader
@@ -0,0 +1,199 @@
+#!/bin/bash
+#
+#Header for BMC DUMP
+#This script will create header file only for IBM systems.
+#This script will generate generic IBM dump header format.
+#
+#Note: The dump header will be imposed on the dump file i.e
+#<obmdump file>.tar.xz only on IBM specific systems, user needs to
+#separate out the header before extracting the dump.
+#
+
+#Constants
+declare -rx INVENTORY_MANAGER='xyz.openbmc_project.Inventory.Manager'
+declare -rx INVENTORY_PATH='/xyz/openbmc_project/inventory/system'
+declare -rx INVENTORY_ASSET_INT='xyz.openbmc_project.Inventory.Decorator.Asset'
+declare -rx DUMP_HEADER_ENTRY_SIZE='516'
+
+#Variables
+declare -x FILE="/tmp/dumpheader_$EPOCHTIME"
+declare -x dumpSize=$(ls -al $name_dir.tar.xz | awk '{print $5}')
+declare -x modelNo=$(busctl get-property $INVENTORY_MANAGER $INVENTORY_PATH \
+$INVENTORY_ASSET_INT Model | cut -d " " -f 2 | sed "s/^\(\"\)\(.*\)\1\$/\2/g")
+
+declare -x serialNo=$(busctl get-property $INVENTORY_MANAGER $INVENTORY_PATH \
+$INVENTORY_ASSET_INT SerialNumber | cut -d " " -f 2 | sed "s/^\(\"\)\(.*\)\1\$/\2/g")
+
+declare -x dDay=$(date -d @$EPOCHTIME +'%Y%m%d%H%M%S')
+
+#Function to add NULL
+function add_null () {
+    local a=$1
+    printf '%*s' $a | tr ' ' "\0" >> $FILE
+}
+
+#Function to fetch the size of the dump
+function dump_size () {
+    #Adding 516 bytes as the total dump size is dump tar size
+    #plus the dump header entry in this case
+    #dump_header and dump_entry
+    sizeDump=`expr $dumpSize + $DUMP_HEADER_ENTRY_SIZE`
+    printf -v hex "%x" $sizeDump
+    x=${#hex}
+    if [ $(($x % 2)) -eq 1 ]; then
+        hex=0$hex
+        x=${#hex}
+    fi
+    msize=`expr $x / 2`
+    msize=`expr 8 - $msize`
+    add_null $msize
+    for ((i=0;i<$x;i+=2));
+    do
+        printf \\x${hex:$i:2} >> $FILE
+    done
+}
+
+#Function to set dump id to 8 bytes format
+function get_dump_id () {
+    x=${#dump_id}
+    nulltoadd=`expr 8 - $x`
+    printf '%*s' $nulltoadd | tr ' ' "0" >> $FILE
+    printf $dump_id >> $FILE
+}
+
+#Function to add virtual file directory entry, consists of below entries
+####################FORMAT################
+#Name              Size(bytes)  Value
+#Entry Header      8            FILE
+#Entry Size        2            0x0040
+#Reserved          10           NULL
+#Entry Type        2            0x0001
+#File Name Prefix  2            0x000F
+#Dump File Type    7            BMCDUMP
+#Separator         1            .
+#System Serial No  7            System serial number fetched from system
+#Dump Identifier   8            Dump Identifier value fetched from dump
+#Separator         1            .
+#Time stamp        14           Form should be yyyymmddhhmmss
+#Null Terminator   1            0x00
+function dump_file_entry () {
+    printf "FILE    " >> $FILE
+    add_null 1
+    printf '\x40' >> $FILE #Virtual file directory entry size
+    add_null 11
+    printf '\x01' >> $FILE
+    add_null 1
+    printf '\x0F' >> $FILE
+    printf "BMPDUMP.%s." "$serialNo" >> $FILE
+    get_dump_id
+    printf "." >> $FILE
+    printf $dDay >> $FILE  #UTC time stamp
+    add_null 1
+}
+
+#Function section directory entry, consists of below entries
+####################FORMAT################
+#Name              Size(bytes)  Value
+#Entry Header      8            SECTION
+#Entry Size        2            0x0030
+#Section Priority  2            0x0000
+#Reserved          4            NULL
+#Entry Flags       4            0x00000001
+#Entry Types       2            0x0002
+#Reserved          2            NULL
+#Dump Size         8            Dump size in hex + dump header
+#Optional Section  16           BMCDUMP
+function dump_section_entry () {
+    printf "SECTION " >> $FILE
+    add_null 1
+    printf '\x30' >> $FILE #Section entry size
+    add_null 9
+    printf '\x01' >> $FILE
+    add_null 1
+    printf '\x02' >> $FILE
+    add_null 2
+    dump_size    #Dump size
+    printf "BMCDUMP" >> $FILE
+    add_null 9
+}
+
+#Function to add dump header, consists of below entries
+####################FORMAT################
+#Name              Size(bytes)  Value
+#Dump type         8            BMC DUMP
+#Dump Request time 8            Dump request time stamp (in BCD)
+#Dump Identifier   4            Dump identifer fetched from dump
+#Dump version      2            0x0210
+#Dump header       2            0x200
+#Total dump size   8            Dump size + dump header
+#Panel function    32           System model, feature, type and IPL mode
+#System Name       32           System Name (in ASCII)
+#Serial number     7            System serial number
+#Reserved          1            NULL
+#PLID              4            Comes from errorlog
+#File Header Size  2            0x70
+#Dump SRC Size     2            Dump SRC Size. Currently NULL
+#DUMP SRC          356          DUMP SRC. Currently NULL
+#Dump Req Type     4            Dump requester user interface type.
+#Dump Req ID       32           Dump requester user interface ID
+#Dump Req user ID  8            Dump requester user ID. Currently NULL
+#
+#TODO: Github issue #3707, to populate the unpopulated elements.
+#Note: Unpopulated elements are listed below are set as NULL
+#BCD time stamp
+#PLID
+#SRC size
+#SRC dump
+#Dump requestor
+#Dump requestor user interface ID
+#Dump Requester user ID
+function dump_header () {
+    printf "BMC DUMP" >> $FILE
+    add_null 8 #BCD time stamp
+    add_null 4 #Dump Identifier
+    printf '\x02' >> $FILE #Dump version 0x0210
+    printf '\x10' >> $FILE
+    printf '\x02' >> $FILE #Dump header size 0x0200
+    add_null 1
+    dump_size  #dump size
+    printf $modelNo >> $FILE
+    add_null 24
+    printf "Server-%s-SN-%s" "$modelNo" "$serialNo" >> $FILE
+    add_null 7
+    printf $serialNo >> $FILE
+    add_null 1
+    add_null 4 #PLID
+    printf '\x70' >> $FILE #File header size
+    add_null 2 # SRC size
+    add_null 356 # SRC dump
+    add_null 4 # Dump requester
+    add_null 32 # Dump requester user interface ID
+    add_null 8
+}
+
+#Function to add Dump entry, consists of below entries
+####################FORMAT################
+#Name               Size(bytes)  Value
+#Dump Entry Version 1            0x01
+#BMC Dump Valid     1            0x01
+#No of Dump Entry   2            Number of Dump Entry
+#
+#TODO: Github issue #3707, to populate the unpopulated elements.
+#Note: Unpopulated elements are listed below, currently are set as NULL
+#Number of Dump Entry
+function dump_entry () {
+    printf '\x01' >> $FILE #Dump entry version
+    printf '\x01' >> $FILE #Dump valid
+    add_null 2
+}
+
+#main function
+function gen_header_package () {
+    dump_file_entry
+    dump_section_entry
+    dump_header
+    dump_entry
+}
+
+#Run gen_header_package
+gen_header_package
