diff --git a/systest/Generate_OS_Inventory.robot b/systest/Generate_OS_Inventory.robot
old mode 100644
new mode 100755
index 733fabe..c63696d
--- a/systest/Generate_OS_Inventory.robot
+++ b/systest/Generate_OS_Inventory.robot
@@ -1,6 +1,6 @@
 ***Settings***
-Documentation      This module is for generating an inventory file using lshw
-...                commands. It will create a JSON file and a YAML file. it
+Documentation      This module generates an inventory file using lshw
+...                commands.  It will create a JSON file and a YAML file. It
 ...                will get the processor, memory and specified I/O devices.
 ...                Requires access to lshw, and json2yaml OS commands. This
 ...                robot file should be run as root or sudo for lshw.
@@ -11,114 +11,13 @@
 Resource           ../syslib/utils_os.robot
 
 ***Variables***
-# List of I/O Devices to Collect
-@{I/O}             communication  disk  display  generic  input  multimedia
-...                network  printer  tape
 
-# Paths of the JSON and YAML files
-${json_tmp_file_path}   ${EXECDIR}${/}inventory.json
-${json_file_path}       ${EXECDIR}${/}data${/}os_inventory.json
-${yaml_file_path}       ${EXECDIR}${/}inventory.yaml
+# Path of the JSON Inventory file
+${json_inventory_file_path}  ${EXECDIR}${/}data${/}os_inventory.json
 
 ***Test Case***
 
-Create YAML Inventory File
-    [Documentation]  Create a JSON inventory file, and make a YAML copy.
-    [Tags]  Create_YAML_Inventory_File
-    Login To OS
-    Compile Inventory JSON
-    Run  json2yaml ${json_tmp_file_path} ${yaml_file_path}
-    # Format to JSON pretty print to file.
-    Run  python -m json.tool ${json_tmp_file_path} > ${json_file_path}
-
-***Keywords***
-
-Compile Inventory JSON
-    [Documentation]  Compile the Inventory into a JSON file.
-    Create File  ${json_tmp_file_path}
-    Write New JSON List  ${json_tmp_file_path}  Inventory
-    Retrieve HW Info And Write  processor  ${json_tmp_file_path}
-    Retrieve HW Info And Write  memory  ${json_tmp_file_path}
-    Retrieve HW Info And Write List  ${I/O}  ${json_tmp_file_path}  I/O  last
-    Close New JSON List  ${json_tmp_file_path}
-
-Write New JSON List
-    [Documentation]  Start a new JSON list element in file.
-    [Arguments]  ${json_tmp_file_path}  ${json_field_name}
-    # Description of argument(s):
-    # json_tmp_file_path   Name of file to write to.
-    # json_field_name      Name to give json list element.
-    Append to File  ${json_tmp_file_path}  { "${json_field_name}" : [
-
-Close New JSON List
-    [Documentation]  Close JSON list element in file.
-    [Arguments]  ${json_tmp_file_path}
-    # Description of argument(s):
-    # json_tmp_file_path  Path of file to write to.
-    Append to File  ${json_tmp_file_path}  ]}
-
-Retrieve HW Info And Write
-    [Documentation]  Retrieve and write info, add a comma if not last item.
-    [Arguments]  ${class}  ${json_tmp_file_path}  ${last}=false
-    # Description of argument(s):
-    # class               Device class to retrieve with lshw.
-    # json_tmp_file_path  Path of file to write to.
-    # last                Is this the last element in the parent JSON?
-    Write New JSON List  ${json_tmp_file_path}  ${class}
-    ${output} =  Retrieve Hardware Info  ${class}
-    ${output} =  Clean Up String  ${output}
-    Run Keyword if  ${output.__class__ is not type(None)}
-    ...  Append To File  ${json_tmp_file_path}  ${output}
-    Close New JSON List  ${json_tmp_file_path}
-    Run Keyword if  '${last}' == 'false'
-    ...  Append to File  ${json_tmp_file_path}  ,
-
-Retrieve HW Info And Write List
-    [Documentation]  Does a Retrieve/Write with a list of classes and
-    ...              encapsulates them into one large JSON element.
-    [Arguments]  ${list}  ${json_tmp_file_path}  ${json_field_name}
-    ...          ${last}=false
-    # Description of argument(s):
-    # list                 The list of devices classes to retrieve with lshw.
-    # json_tmp_file_path   Path of file to write to.
-    # json_field_name      Name of the JSON element to encapsulate this list.
-    # last                 Is this the last element in the parent JSON?
-    Write New JSON List  ${json_tmp_file_path}  ${json_field_name}
-    : FOR  ${class}  IN  @{list}
-    \  ${tail}  Get From List  ${list}  -1
-    \  Run Keyword if  '${tail}' == '${class}'
-    \  ...  Retrieve HW Info And Write  ${class}  ${json_tmp_file_path}  true
-    \  ...  ELSE  Retrieve HW Info And Write  ${class}  ${json_tmp_file_path}
-    Close New JSON List  ${json_tmp_file_path}
-    Run Keyword if  '${last}' == 'false'
-    ...  Append to File  ${json_tmp_file_path}  ,
-
-Retrieve Hardware Info
-    [Documentation]  Retrieves the lshw output of the device class as JSON.
-    [Arguments]  ${class}
-    # Description of argument(s):
-    # class  Device class to retrieve with lshw.
-    ${output} =  Execute Command On OS  lshw -c ${class} -json
-    ${output} =  Verify JSON string  ${output}
-    [Return]  ${output}
-
-Verify JSON String
-    [Documentation]  Ensure the JSON string content is seperated by commas.
-    [Arguments]  ${unver_string}
-    # Description of argument(s):
-    # unver_string  JSON String we will be checking for lshw comma errors.
-    ${unver_string} =  Convert to String  ${unver_string}
-    ${ver_string} =  Replace String Using Regexp  ${unver_string}  }\\s*{  },{
-    [Return]  ${ver_string}
-
-Clean Up String
-    [Documentation]  Remove extra whitespace and trailing commas.
-    [Arguments]  ${dirty_string}
-    # Description of argument(s):
-    # dirty_string  String that will be space stripped and have comma removed.
-    ${clean_string} =  Strip String  ${dirty_string}
-    ${last_char} =  Get Substring  ${clean_string}  -1
-    ${trimmed_string} =  Get Substring  ${clean_string}  0  -1
-    ${clean_string} =  Set Variable If  '${last_char}' == ','
-    ...  ${trimmed_string}  ${clean_string}
-    [Return]  ${clean_string}
+Create An Inventory
+    [Documentation]  Snapshot system inventory to a JSON file.
+    [Tags]  Inventory Test
+    Create JSON Inventory File  ${json_inventory_file_path}
diff --git a/systest/htx_hardbootme_test.robot b/systest/htx_hardbootme_test.robot
old mode 100644
new mode 100755
index 428bf11..be2d920
--- a/systest/htx_hardbootme_test.robot
+++ b/systest/htx_hardbootme_test.robot
@@ -1,7 +1,32 @@
 *** Settings ***
-Documentation    Stress the system using HTX exerciser.
 
-Resource         ../syslib/utils_os.robot
+Documentation  Stress the system using HTX exerciser.
+
+# Test Parameters:
+# OPENBMC_HOST        The BMC host name or IP address.
+# OS_HOST             The OS host name or IP Address.
+# OS_USERNAME         The OS login userid (usually root).
+# OS_PASSWORD         The password for the OS login.
+# HTX_DURATION        Duration of HTX run, for example, 8 hours, or
+#                     30 minutes.
+# HTX_LOOP            The number of times to loop HTX.
+# HTX_INTERVAL        The time delay between consecutive checks of HTX
+#                     status, for example, 30s.
+#                     In summary: Run HTX for $HTX_DURATION, looping
+#                     $HTX_LOOP times checking every $HTX_INTERVAL.
+# HTX_KEEP_RUNNING    If set to 1, this indicates that the HTX is to
+#                     continue running after an error.
+# CHECK_INVENTORY     If set to 1, this enables OS inventory checking
+#                     before and after each HTX run.  This parameter
+#                     is optional.
+# PREV_INV_FILE_PATH  The file path and name of a previous inventory
+#                     snapshot file.  After HTX start the system inventory
+#                     is compared to the contents of this file.  Setting this
+#                     parameter is optional.  CHECK_INVENTORY does not
+#                     need to be set if PREV_INV_FILE_PATH is set.
+
+Resource        ../syslib/utils_os.robot
+Library         ../syslib/utils_keywords.py
 
 Suite Setup     Run Key  Start SOL Console Logging
 Test Setup      Pre Test Case Execution
@@ -9,7 +34,13 @@
 
 *** Variables ****
 
-${stack_mode}        skip
+${stack_mode}                skip
+${json_initial_file_path}    ${EXECDIR}/data/os_inventory_initial.json
+${json_final_file_path}      ${EXECDIR}/data/os_inventory_final.json
+${json_diff_file_path}       ${EXECDIR}/data/os_inventory_diff.json
+${last_inventory_file_path}  ${EMPTY}
+${run_the_inventory}         0
+&{ignore_dict}               processor=size
 
 *** Test Cases ***
 
@@ -20,26 +51,49 @@
     Rprintn
     Rpvars  HTX_DURATION  HTX_INTERVAL
 
-    Repeat Keyword  ${HTX_LOOP} times  Start HTX Exerciser
+    # Set last inventory file to PREV_INV_FILE_PATH otherwise set
+    # it to ${EMPTY}.
+    ${last_inventory_file_path}=  Get Variable Value  ${PREV_INV_FILE_PATH}
+    ...  ${EMPTY}
+
+    # Set ${run_the_inventory} if PREV_INV_FILE_PATH was specified,
+    # else set ${run_the_inventory} from the ${CHECK_INVENTORY} parameter.
+    ${run_the_inventory}=  Run Keyword If
+    ...  '${last_inventory_file_path}' != '${EMPTY}'  Set Variable  ${1}
+    ...  ELSE  Run Keyword If  '${last_inventory_file_path}' == '${EMPTY}'
+    ...  Get Variable Value  ${CHECK_INVENTORY}  ${EMPTY}
+
+    Set Suite Variable  ${run_the_inventory}  children=true
+    Set Suite Variable  ${last_inventory_file_path}  children=true
+
+    Repeat Keyword  ${HTX_LOOP} times  Run HTX Exerciser
 
 
 *** Keywords ***
 
-Start HTX Exerciser
-    [Documentation]  Start HTX exerciser.
+Run HTX Exerciser
+    [Documentation]  Run HTX exerciser.
     # Test Flow:
-    #              - Power on
-    #              - Establish SSH connection session
-    #              - Create HTX mdt profile
-    #              - Run HTX exerciser
-    #              - Check HTX status for errors
-    #              - Power off
+    # - Power on.
+    # - Establish SSH connection session.
+    # - Do inventory collection, compare with
+    #   previous inventory run if applicable.
+    # - Create HTX mdt profile.
+    # - Run HTX exerciser.
+    # - Check HTX status for errors.
+    # - Do inventory collection, compare with
+    #   previous inventory run.
+    # - Power off.
 
     Boot To OS
 
     # Post Power off and on, the OS SSH session needs to be established.
     Login To OS
 
+    Run Keyword If  '${run_the_inventory}' != '${EMPTY}'
+    ...  Do Inventory And Compare  ${json_initial_file_path}
+    ...  ${last_inventory_file_path}
+
     Run Keyword If  '${HTX_MDT_PROFILE}' == 'mdt.bu'
     ...  Create Default MDT Profile
 
@@ -49,6 +103,10 @@
 
     Shutdown HTX Exerciser
 
+    Run Keyword If  '${run_the_inventory}' != '${EMPTY}'
+    ...  Do Inventory And Compare  ${json_final_file_path}
+    ...  ${last_inventory_file_path}
+
     Power Off Host
 
     # Close all SSH and REST active sessions.
@@ -58,9 +116,51 @@
     Rprint Timen  HTX Test ran for: ${HTX_DURATION}
 
 
+Do Inventory and Compare
+    [Documentation]  Do inventory and compare.
+    [Arguments]  ${inventory_file_path}  ${last_inventory_file_path}
+    # Description of argument(s):
+    # inventory_file_path        The file to receive the inventory snapshot.
+    # last_inventory_file_path   The previous inventory to compare with.
+
+    Create JSON Inventory File  ${inventory_file_path}
+    Run Keyword If  '${last_inventory_file_path}' != '${EMPTY}'
+    ...  Compare Json Inventory Files  ${inventory_file_path}
+    ...  ${last_inventory_file_path}
+    ${last_inventory_file_path}=   Set Variable  ${inventory_file_path}
+    Set Suite Variable  ${last_inventory_file_path}  children=true
+
+
+Compare Json Inventory Files
+    [Documentation]  Compare JSON inventory files.
+    [Arguments]  ${file1}  ${file2}
+    # Description of argument(s):
+    # file1   A file that has an inventory snapshot in JSON format.
+    # file2   A file that has an inventory snapshot, to compare with file1.
+
+    ${diff_rc}=  JSON_Inv_File_Diff_Check  ${file1}
+     ...  ${file2}  ${json_diff_file_path}  ${ignore_dict}
+    Run Keyword If  '${diff_rc}' != '${0}'
+    ...  Report Inventory Mismatch  ${diff_rc}  ${json_diff_file_path}
+
+
+Report Inventory Mismatch
+    [Documentation]  Report inventory mismatch.
+    [Arguments]  ${diff_rc}  ${json_diff_file_path}
+    # Description of argument(s):
+    # diff_rc              The failing return code from the difference check.
+    # json_diff_file_path  The file that has the latest inventory snapshot.
+
+    Log To Console  Difference in inventory found, return code:
+    ...  no_newline=true
+    Log to Console  ${diff_rc}
+    Log to Console  Differences are listed in file:  no_newline=true
+    Log to Console  ${json_diff_file_path}
+    Fail  Inventory mismatch, rc=${diff_rc}
+
+
 Loop HTX Health Check
     [Documentation]  Run until HTX exerciser fails.
-
     Repeat Keyword  ${HTX_DURATION}
     ...  Run Keywords  Check HTX Run Status
     ...  AND  Sleep  ${HTX_INTERVAL}
@@ -73,7 +173,8 @@
     # 3. Close all open SSH connections.
 
     # Keep HTX running if user set HTX_KEEP_RUNNING to 1.
-    Run Keyword If  '${TEST_STATUS}' == 'FAIL' and ${HTX_KEEP_RUNNING} == ${0}
+    Run Keyword If
+    ...  '${TEST_STATUS}' == 'FAIL' and ${HTX_KEEP_RUNNING} == ${0}
     ...  Shutdown HTX Exerciser
 
     ${keyword_buf}=  Catenate  Stop SOL Console Logging
