diff --git a/lib/boot_data.py b/lib/boot_data.py
index e644166..42af3f7 100755
--- a/lib/boot_data.py
+++ b/lib/boot_data.py
@@ -26,6 +26,9 @@
 # The code base directory will be one level up from the directory containing this module.
 code_base_dir_path = os.path.dirname(os.path.dirname(__file__)) + os.sep
 
+redfish_support_trans_state = int(os.environ.get('REDFISH_SUPPORT_TRANS_STATE', 0)) or \
+    int(BuiltIn().get_variable_value("${REDFISH_SUPPORT_TRANS_STATE}", default=0))
+
 
 def create_boot_table(file_path=None,
                       os_host=""):
@@ -47,7 +50,10 @@
                                     boot entries.
     """
     if file_path is None:
-        file_path = os.environ.get('BOOT_TABLE_PATH', 'data/boot_table.json')
+        if redfish_support_trans_state:
+            file_path = os.environ.get('BOOT_TABLE_PATH', 'data/boot_table_redfish.json')
+        else:
+            file_path = os.environ.get('BOOT_TABLE_PATH', 'data/boot_table.json')
 
     if not file_path.startswith("/"):
         file_path = code_base_dir_path + file_path
diff --git a/lib/state.py b/lib/state.py
index fa5d929..61223f0 100755
--- a/lib/state.py
+++ b/lib/state.py
@@ -78,6 +78,9 @@
 
 OBMC_STATES_VERSION = int(os.environ.get('OBMC_STATES_VERSION', 1))
 
+redfish_support_trans_state = int(os.environ.get('REDFISH_SUPPORT_TRANS_STATE', 0)) or \
+    int(BuiltIn().get_variable_value("${REDFISH_SUPPORT_TRANS_STATE}", default=0))
+
 # When a user calls get_state w/o specifying req_states, default_req_states
 # is used as its value.
 default_req_states = ['rest',
@@ -90,9 +93,13 @@
                       'os_login',
                       'os_run_cmd']
 
+if redfish_support_trans_state:
+    default_req_states.remove('operating_system')
+
 # valid_req_states is a list of sub states supported by the get_state function.
 # valid_req_states, default_req_states and master_os_up_match are used by the
 # get_state function.
+
 valid_req_states = ['ping',
                     'packet_loss',
                     'uptime',
@@ -131,50 +138,91 @@
 USE_BMC_EPOCH_TIME = int(os.environ.get('USE_BMC_EPOCH_TIME', 0))
 
 # Useful state constant definition(s).
-# default_state is an initial value which may be of use to callers.
-default_state = DotDict([('rest', '1'),
-                         ('chassis', 'On'),
-                         ('bmc', 'Ready'),
-                         ('boot_progress', 'OSStart'),
-                         ('operating_system', 'BootComplete'),
-                         ('host', 'Running'),
-                         ('os_ping', '1'),
-                         ('os_login', '1'),
-                         ('os_run_cmd', '1')])
+if not redfish_support_trans_state:
+    # default_state is an initial value which may be of use to callers.
+    default_state = DotDict([('rest', '1'),
+                             ('chassis', 'On'),
+                             ('bmc', 'Ready'),
+                             ('boot_progress', 'OSStart'),
+                             ('operating_system', 'BootComplete'),
+                             ('host', 'Running'),
+                             ('os_ping', '1'),
+                             ('os_login', '1'),
+                             ('os_run_cmd', '1')])
 
-# A match state for checking that the system is at "standby".
-standby_match_state = DotDict([('rest', '^1$'),
-                               ('chassis', '^Off$'),
-                               ('bmc', '^Ready$'),
-                               ('boot_progress', '^Off|Unspecified$'),
-                               ('operating_system', '^Inactive$'),
-                               ('host', '^Off$')])
+    # A match state for checking that the system is at "standby".
+    standby_match_state = DotDict([('rest', '^1$'),
+                                   ('chassis', '^Off$'),
+                                   ('bmc', '^Ready$'),
+                                   ('boot_progress', '^Off|Unspecified$'),
+                                   ('operating_system', '^Inactive$'),
+                                   ('host', '^Off$')])
 
-# A match state for checking that the system is at "os running".
-os_running_match_state = DotDict([('chassis', '^On$'),
+    # A match state for checking that the system is at "os running".
+    os_running_match_state = DotDict([('chassis', '^On$'),
+                                      ('bmc', '^Ready$'),
+                                      ('boot_progress',
+                                       'FW Progress, Starting OS|OSStart'),
+                                      ('operating_system', 'BootComplete'),
+                                      ('host', '^Running$'),
+                                      ('os_ping', '^1$'),
+                                      ('os_login', '^1$'),
+                                      ('os_run_cmd', '^1$')])
+
+    # A master dictionary to determine whether the os may be up.
+    master_os_up_match = DotDict([('chassis', '^On$'),
                                   ('bmc', '^Ready$'),
                                   ('boot_progress',
                                    'FW Progress, Starting OS|OSStart'),
                                   ('operating_system', 'BootComplete'),
-                                  ('host', '^Running$'),
-                                  ('os_ping', '^1$'),
-                                  ('os_login', '^1$'),
-                                  ('os_run_cmd', '^1$')])
+                                  ('host', '^Running|Quiesced$')])
 
-# A master dictionary to determine whether the os may be up.
-master_os_up_match = DotDict([('chassis', '^On$'),
-                              ('bmc', '^Ready$'),
-                              ('boot_progress',
-                               'FW Progress, Starting OS|OSStart'),
-                              ('operating_system', 'BootComplete'),
-                              ('host', '^Running|Quiesced$')])
+    invalid_state_match = DotDict([('rest', '^$'),
+                                   ('chassis', '^$'),
+                                   ('bmc', '^$'),
+                                   ('boot_progress', '^$'),
+                                   ('operating_system', '^$'),
+                                   ('host', '^$')])
+else:
+    # default_state is an initial value which may be of use to callers.
+    default_state = DotDict([('rest', '1'),
+                             ('chassis', 'On'),
+                             ('bmc', 'Ready'),
+                             ('boot_progress', 'SystemInitComplete|OSRunning'),
+                             ('host', 'Running'),
+                             ('os_ping', '1'),
+                             ('os_login', '1'),
+                             ('os_run_cmd', '1')])
 
-invalid_state_match = DotDict([('rest', '^$'),
-                               ('chassis', '^$'),
-                               ('bmc', '^$'),
-                               ('boot_progress', '^$'),
-                               ('operating_system', '^$'),
-                               ('host', '^$')])
+    # A match state for checking that the system is at "standby".
+    standby_match_state = DotDict([('rest', '^1$'),
+                                   ('chassis', '^Off$'),
+                                   ('bmc', '^Ready$'),
+                                   ('boot_progress', '^Off|Unspecified$'),
+                                   ('host', '^Off$')])
+
+    # A match state for checking that the system is at "os running".
+    os_running_match_state = DotDict([('chassis', '^On$'),
+                                      ('bmc', '^Ready$'),
+                                      ('boot_progress',
+                                       'SystemInitComplete|OSRunning'),
+                                      ('host', '^Running$'),
+                                      ('os_ping', '^1$'),
+                                      ('os_login', '^1$'),
+                                      ('os_run_cmd', '^1$')])
+
+    # A master dictionary to determine whether the os may be up.
+    master_os_up_match = DotDict([('chassis', '^On$'),
+                                  ('bmc', '^Ready$'),
+                                  ('boot_progress',
+                                   'SystemInitComplete|OSRunning'),
+                                  ('host', '^Running|Quiesced$')])
+
+    invalid_state_match = DotDict([('rest', '^$'),
+                                   ('chassis', '^$'),
+                                   ('bmc', '^$'),
+                                   ('boot_progress', '^$'),
+                                   ('host', '^$')])
 
 
 def return_state_constant(state_name='default_state'):
