diff --git a/data/pldm_variables.py b/data/pldm_variables.py
index 482e2b8..515806f 100755
--- a/data/pldm_variables.py
+++ b/data/pldm_variables.py
@@ -80,45 +80,51 @@
 
 # GetPDR parsed response message for record handle.
 # Dictionary value array holds the expected output for record handle 1, 2.
-# e.g. : 'nextrecordhandle': ['0', '2']
 #
 # Note :
 #      Record handle - 0 is default &  has same behaviour as record handle 1
 #      Only record handle 0, 1, 2 are supported as of now.
 
-RESPONSE_DICT_GETPDR = {
-    'nextrecordhandle': ['0', '2', '3'],
+RESPONSE_DICT_GETPDR_SETSTATEEFFECTER = {
     'responsecount': ['29', '30'],
-    'recordhandle': ['1', '2'],
     'pdrheaderversion': ['1'],
     'pdrtype': ['11'],
     'recordchangenumber': ['0'],
     'datalength': ['19', '20'],
     'pldmterminushandle': ['0'],
-    'effecterid': ['1', '2'],
-    'entitytype': ['33', '45'],
+    'effecterid': ['1', '2', '3'],
+    'entitytype': ['33', '45', '31'],
     'entityinstancenumber': ['0'],
     'containerid': ['0'],
     'effectersemanticid': ['0'],
     'effecterinit': ['0'],
     'effecterdescriptionpdr': ['false'],
     'compositeeffectercount': ['1'],
-    'statesetid': ['196', '260'],
+    'statesetid': ['196', '260', '129'],
     'possiblestatessize': ['1', '2'],
-    'possiblestates': ['6', '0']}
+    'possiblestates': ['6', '0', '64']}
 
-RESPONSE_DICT_GETBIOSTABLE_STRTABLE = {
-    'biosstringhandle': ['BIOSString'],
-    '0': ['Allowed'],
-    '1': ['Disabled'],
-    '2': ['Enabled'],
-    '3': ['Not Allowed'],
-    '4': ['Perm'],
-    '5': ['Temp'],
-    '6': ['pvm-fw-boot-side'],
-    '7': ['pvm-inband-code-update'],
-    '8': ['pvm-os-boot-side'],
-    '9': ['pvm-pcie-error-inject'],
-    '10': ['pvm-surveillance'],
-    '11': ['pvm-system-name'],
-    '12': ['vmi-if-count']}
+RESPONSE_DICT_GETPDR_FRURECORDSETIDENTIFIER = {
+    'responsecount': ['20'],
+    'pdrheaderversion': ['1'],
+    'pdrtype': ['20'],
+    'recordchangenumber': ['0'],
+    'datalength': ['10'],
+    'pldmterminushandle': ['0'],
+    'entitytype': ['System Board', 'Chassis front panel board (control panel)',
+                   'Management Controller', '208(OEM)', 'Power converter'],
+    'containerid': ['0', '1']}
+
+RESPONSE_DICT_GETPDR_PDRENTITYASSOCIATION = {
+    'pdrheaderversion': ['1'],
+    'pdrtype': ['15'],
+    'recordchangenumber': ['0'],
+    'containerid': ['1'],
+    'associationtype': ['Physical'],
+    'containerentitytype': ['System Board'],
+}
+
+PLDM_PDR_TYPES = {
+    'PLDM_STATE_EFFECTER_PDR': '11',
+    'PLDM_PDR_FRU_RECORD_SET': '20',
+    'PLDM_PDR_ENTITY_ASSOCIATION': '15'}
diff --git a/lib/pldm_utils.py b/lib/pldm_utils.py
index 13005b3..dd0a91f 100644
--- a/lib/pldm_utils.py
+++ b/lib/pldm_utils.py
@@ -64,6 +64,35 @@
             # Date & Time :
             # YYYY-MM-DD HH:MM:SS - 2020-02-24 06:44:16
             return result['yyyy-mm-dd_hh'].split(' - ')[1]
+
+        # Simplfying dict output for GetPDR with type PDREntityAssociation.
+        # Example :
+
+        # pldmtool platform GetPDR -d 10
+        # Entity Association
+        # nextRecordHandle: 0
+        # responseCount: 56
+        # recordHandle: 10
+        # PDRHeaderVersion: 1
+        # PDRType: 15
+        # recordChangeNumber: 0
+        # dataLength: 46
+        # containerID: 1
+        # associationType: Physical
+        # containerEntityType: System Board
+        # containerEntityInstanceNumber: 1
+        # containerEntityContainerID: 0
+        # containedEntityCount: 6
+        # containedEntityType[1]: Chassis front panel board (control panel)
+        # containedEntityInstanceNumber[1]: 1
+        # containedEntityContainerID[1]: 1
+        # containedEntityType[2]: Chassis front panel board (control panel)
+        # containedEntityInstanceNumber[2]: 2
+        # containedEntityContainerID[2]: 1
+        elif 'containerentitycontainerid' in result:
+            dict_data1, dict_data2 = vf.split_dict_on_key('containerentitycontainerid', result)
+            return dict_data1
+
         return result
 
     return stdout
diff --git a/pldm/test_pldm_platform.robot b/pldm/test_pldm_platform.robot
index 3c1c0a3..d686531 100644
--- a/pldm/test_pldm_platform.robot
+++ b/pldm/test_pldm_platform.robot
@@ -13,17 +13,18 @@
 Suite Teardown    Pldmtool Platform Suite Cleanup
 
 *** Test Cases ***
-
 Verify GetPDR
     [Documentation]  Verify GetPDR (Platform Descpritor Record) response message.
     [Tags]  Verify_GetPDR
-    [Template]  Verify GetPDR For Record Handle
 
-    # RecordHandle
-    '0'
-    '1'
-    '2'
-
+    ${record_handle}=  Set Variable  ${1}
+    # Note: Record handle count is unknown and it is dynamic in nature.
+    #       Assuming there are 100 record handle.
+    FOR   ${i}  IN RANGE  100
+       ${next_record_handle}=  Run Keyword  Verify GetPDR For Record Handle  ${record_handle}
+       Exit For Loop If  ${next_record_handle} == 0
+       ${record_handle}=  Set Variable  ${next_record_handle}
+    END
 
 Verify SetStateEffecterStates
     [Documentation]  Verify set state effecter states response message.
@@ -32,20 +33,23 @@
 
     # EffecterHandle  Count  EffecterStates (effecterID effecterState)
 
-    '1'  '1'  '1 1'  # (effecterState -> 1 -> 'Boot Not Active')
-    '1'  '1'  '1 2'  # (effecterState -> 2 -> 'Boot Completed')
-    '2'  '1'  '1 9'  # (effecterState -> 9 -> 'System Power is in soft off mode')
+    '1'              '1'    '1 1'  # (effecterState -> 1 -> 'Boot Not Active')
+    '1'              '1'    '1 2'  # (effecterState -> 2 -> 'Boot Completed')
+    '2'              '1'    '1 9'  # (effecterState -> 9 -> 'System Power is in soft off mode')
+    '3'              '1'    '1 6'  # (effecterState -> 6 -> 'Graceful Restart Requested')
 
 *** Keywords ***
 
 Verify GetPDR For Record Handle
-    [Documentation]  Verify GetPDR (Platform Descpritor Record) for given input record handle.
+    [Documentation]  Verify GetPDR (Platform Descpritor Record) for given input
+    ...              record handle and return next record handle.
     [Arguments]  ${record_handle}
 
     # Description of argument(s):
     # ${record_handle}  Record handle.
-    #                   e.g. '1' is record handle 'Boot Progress'.
-    #                        '2' is record handle 'System Power State'.
+    #                   e.g. '1' is record handle 'Boot Progress' (196).
+    #                        '2' is record handle 'System Power State (260)'.
+    #                        '3' is record handle 'Software Termination Status (129)'.
 
     # pldm_output:
     # [responseCount]:                               29
@@ -70,8 +74,15 @@
     ${pldm_cmd}=  Evaluate  $CMD_GETPDR % ${record_handle}
     ${pldm_output}=  Pldmtool  ${pldm_cmd}
     Rprint Vars  pldm_output
-    Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETPDR}
+    Run Keyword If  ${pldm_output['pdrtype']} == ${PLDM_PDR_TYPES['PLDM_STATE_EFFECTER_PDR']}
+    ...  Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETPDR_SETSTATEEFFECTER}
+    ...  ELSE IF  ${pldm_output['pdrtype']} == ${PLDM_PDR_TYPES['PLDM_PDR_FRU_RECORD_SET']}
+    ...  Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETPDR_FRURECORDSETIDENTIFIER}
+    ...  ELSE IF  ${pldm_output['pdrtype']} == ${PLDM_PDR_TYPES['PLDM_PDR_ENTITY_ASSOCIATION']}
+    ...  Valid Dict  pldm_output  valid_values=${RESPONSE_DICT_GETPDR_PDRENTITYASSOCIATION}
 
+    Should be equal as strings  ${pldm_output['recordhandle']}  ${record_handle}
+    [Return]  ${pldm_output['nextrecordhandle']}
 
 Verify SetStateEffecterStates For Effecter States
     [Documentation]  Verify set state effecter states for given input effecter states.
@@ -93,7 +104,6 @@
     Rprint Vars  pldm_output
     Valid Value  pldm_output['setstateeffecterstates']  ['SUCCESS']
 
-
 Pldmtool Platform Suite Cleanup
     [Documentation]    Reset BMC at suite cleanup.
 
