diff --git a/redfish/systems/eventlog/test_association.robot b/redfish/systems/eventlog/test_association.robot
new file mode 100755
index 0000000..3366092
--- /dev/null
+++ b/redfish/systems/eventlog/test_association.robot
@@ -0,0 +1,309 @@
+*** Settings ***
+Documentation       REST test Error callout association.
+
+Resource            ../../../lib/bmc_redfish_resource.robot
+Resource            ../../../lib/bmc_redfish_utils.robot
+Resource            ../../../lib/connection_client.robot
+Resource            ../../../lib/openbmc_ffdc.robot
+Resource            ../../../lib/utils.robot
+Resource            ../../../lib/state_manager.robot
+Resource            ../../../lib/boot_utils.robot
+
+
+Suite Setup         Suite Setup Execution
+Suite Teardown      Suite Teardown Execution
+Test Setup          Test Setup Execution
+Test Teardown       FFDC On Test Case Fail
+
+***Variables***
+${target_device_path}  /sys/devices/platform/gpio-fsi/fsi0/slave@00:00/raw
+
+${stack_mode}          skip
+
+*** Test Cases ***
+
+Create Test Error Callout And Verify
+    [Documentation]  Create error log callout and verify via REST.
+    [Tags]  Create_Test_Error_Callout_And_Verify
+
+    Create Test Error With Callout
+    Verify Test Error Log And Callout
+
+
+Create Test Error Callout And Verify AdditionalData
+    [Documentation]  Create Test Error Callout And Verify AdditionalData.
+    [Tags]  Create_Test_Error_Callout_And_Verify_AdditionalData
+
+    # Test error log entry example:
+    #  "/xyz/openbmc_project/logging/entry/1": {
+    #  "AdditionalData": [
+    #      "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00",
+    #      "CALLOUT_ERRNO_TEST=0",
+    #      "DEV_ADDR=0x0DEADEAD"
+    #    ]
+
+    Create Test Error With Callout
+    ${elog_entry}=  Get Elog URL List
+    ${resp}=  OpenBMC Get Request  ${elog_entry[0]}
+    ${jsondata}=  To JSON  ${resp.content}
+    List Should Contain Value
+    ...  ${jsondata["data"]["AdditionalData"]}  CALLOUT_DEVICE_PATH_TEST=${target_device_path}
+    List Should Contain Value  ${jsondata["data"]["AdditionalData"]}  DEV_ADDR=0x0DEADEAD
+
+
+Create Test Error Callout And Verify Associations
+    [Documentation]  Create test error callout and verify associations.
+    [Tags]  Create_Test_Error_Callout_And_Verify_Associations
+
+    # Test error log association entry example:
+    # "associations": [
+    #   [
+    #        "callout",
+    #        "fault",
+    #        "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #   ]
+    # ]
+
+    Create Test Error With Callout
+    ${elog_entry}=  Get Elog URL List
+    ${resp}=  OpenBMC Get Request  ${elog_entry[0]}
+    ${jsondata}=  To JSON  ${resp.content}
+    List Should Contain Value  ${jsondata["data"]["associations"][0]}  callout
+    List Should Contain Value  ${jsondata["data"]["associations"][0]}  fault
+    List Should Contain Value
+    ...  ${jsondata["data"]["associations"][0]}
+    ...  /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0
+
+
+Create Test Error Callout And Delete
+    [Documentation]  Create Test Error Callout And Delete.
+    [Tags]  Create_Test_Error_Callout_And_Delete
+
+    # Test error log entry example:
+    #  "/xyz/openbmc_project/logging/entry/1": {
+    #  "AdditionalData": [
+    #      "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00",
+    #      "CALLOUT_ERRNO_TEST=0",
+    #      "DEV_ADDR=0x0DEADEAD"
+    #    ],
+    #    "Id": 1,
+    #    "Message": "example.xyz.openbmc_project.Example.Elog.TestCallout",
+    #    "Resolved": 0,
+    #    "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
+    #    "Timestamp": 1487747332528,
+    #    "associations": [
+    #        [
+    #          "callout",
+    #          "fault",
+    #          "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #        ]
+    #    ]
+    # },
+    # "/xyz/openbmc_project/logging/entry/1/callout": {
+    #    "endpoints": [
+    #        "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #    ]
+    # },
+
+    Create Test Error With Callout
+    ${elog_entry}=  Get Elog URL List
+    Delete Error Log Entry  ${elog_entry[0]}
+    ${resp}=  OpenBMC Get Request  ${elog_entry[0]}/callout
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
+
+
+Create Two Test Error Callout And Delete
+    [Documentation]  Create Two Test Error Callout And Delete.
+    [Tags]  Create_Two_Test_Error_Callout_And_Delete
+
+    # Test error log entry example:
+    #  "/xyz/openbmc_project/logging/entry/1": {
+    #  "AdditionalData": [
+    #      "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00",
+    #      "CALLOUT_ERRNO_TEST=0",
+    #      "DEV_ADDR=0x0DEADEAD"
+    #    ],
+    #    "Id": 1,
+    #    "Message": "example.xyz.openbmc_project.Example.Elog.TestCallout",
+    #    "Resolved": 0,
+    #    "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
+    #    "Timestamp": 1487747332528,
+    #    "associations": [
+    #        [
+    #          "callout",
+    #          "fault",
+    #          "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #        ]
+    #    ]
+    # },
+    # "/xyz/openbmc_project/logging/entry/1/callout": {
+    #    "endpoints": [
+    #        "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #    ]
+    # },
+    # "/xyz/openbmc_project/logging/entry/2": {
+    #  "AdditionalData": [
+    #      "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00",
+    #      "CALLOUT_ERRNO_TEST=0",
+    #      "DEV_ADDR=0x0DEADEAD"
+    #    ],
+    #    "Id": 2,
+    #    "Message": "example.xyz.openbmc_project.Example.Elog.TestCallout",
+    #    "Resolved": 0,
+    #    "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
+    #    "Timestamp": 1487747332528,
+    #    "associations": [
+    #        [
+    #          "callout",
+    #          "fault",
+    #          "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #        ]
+    #    ]
+    # },
+    # "/xyz/openbmc_project/logging/entry/2/callout": {
+    #    "endpoints": [
+    #        "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #    ]
+    # },
+
+    # Create two error logs.
+    Create Test Error With Callout
+    Create Test Error With Callout
+
+    # Delete entry/2 elog entry.
+    ${elog_entry}=  Get Elog URL List
+    Delete Error Log Entry  ${elog_entry[1]}
+
+    # Verify if entry/1 exist and entry/2 is deleted.
+    ${resp}=  OpenBMC Get Request  ${elog_entry[0]}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+    ${resp}=  OpenBMC Get Request  ${elog_entry[1]}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
+
+
+Create Test Error Callout And Verify LED
+    [Documentation]  Create an error log callout and verify respective
+    ...  LED state.
+    [Tags]  Create_Test_Error_Callout_And_Verify_LED
+
+    Create Test Error With Callout
+
+    ${resp}=  Get LED State XYZ  cpu0_fault
+    Should Be Equal  ${resp}  ${1}
+
+
+Set Resolved Field And Verify Callout Deletion
+    [Documentation]  Set the "Resolved" error log and verify callout is deleted
+    [Tags]  Set_Resolved_Field_And_Verify_Callout_Deletion
+
+    Delete All Error Logs
+    Create Test Error With Callout
+    ${elog_entry}=  Get URL List  ${BMC_LOGGING_ENTRY}
+    ${resp}=  OpenBMC Get Request  ${elog_entry[0]}
+    ${jsondata}=  To JSON  ${resp.content}
+    Should Contain  ${jsondata["data"]["associations"][0]}  callout
+
+    # Set the error log field "Resolved".
+    # By doing so, the callout object should get deleted automatically.
+    ${valueDict}=  Create Dictionary  data=${1}
+    OpenBMC Put Request  ${elog_entry[0]}/attr/Resolved  data=${valueDict}
+
+    # Verify if the callout entry is deleted.
+    ${resp}=  OpenBMC Get Request  ${elog_entry[0]}/callout
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
+
+*** Keywords ***
+
+Callout Test Binary Exist
+    [Documentation]  Verify existence of prerequisite callout-test.
+
+    Open Connection And Log In
+    ${out}  ${stderr}=  Execute Command
+    ...  which /tmp/tarball/bin/callout-test  return_stderr=True
+    Should Be Empty  ${stderr}
+    Should Contain  ${out}  callout-test
+
+
+Create Test Error With Callout
+    [Documentation]  Generate test error log with callout for CPU0.
+
+    # Test error log entry example:
+    #  "/xyz/openbmc_project/logging/entry/4": {
+    #  "AdditionalData": [
+    #      "CALLOUT_DEVICE_PATH_TEST=/sys/devices/platform/fsi-master/slave@00:00",
+    #      "CALLOUT_ERRNO_TEST=0",
+    #      "DEV_ADDR=0x0DEADEAD"
+    #    ],
+    #    "Id": 4,
+    #    "Message": "example.xyz.openbmc_project.Example.Elog.TestCallout",
+    #    "Resolved": 0,
+    #    "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
+    #    "Timestamp": 1487747332528,
+    #    "associations": [
+    #        [
+    #          "callout",
+    #          "fault",
+    #          "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #        ]
+    #    ]
+    # },
+    # "/xyz/openbmc_project/logging/entry/4/callout": {
+    #    "endpoints": [
+    #        "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0"
+    #    ]
+    # },
+
+    BMC Execute Command
+    ...  /tmp/tarball/bin/callout-test ${target_device_path}
+
+Verify Test Error Log And Callout
+    [Documentation]  Verify test error log entries.
+    ${elog_entry}=  Get Elog URL List
+    ${resp}=  OpenBMC Get Request  ${elog_entry[0]}
+    ${json}=  To JSON  ${resp.content}
+
+    Should Be Equal  ${json["data"]["Message"]}
+    ...  example.xyz.openbmc_project.Example.Elog.TestCallout
+
+    Should Be Equal  ${json["data"]["Severity"]}
+    ...  xyz.openbmc_project.Logging.Entry.Level.Error
+
+    ${content}=  Read Attribute  ${elog_entry[0]}/callout  endpoints
+
+    Should Be Equal  ${content[0]}
+    ...  /xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0
+
+
+Test Setup Execution
+    [Documentation]  Do test case setup tasks.
+
+    ${status}=  Run Keyword And Return Status  Callout Test Binary Exist
+    Run Keyword If  ${status} == ${False}  Install Tarball
+    Delete All Error Logs
+
+
+Install Tarball
+    [Documentation]  Install tarball on BMC.
+
+    Run Keyword If  '${DEBUG_TARBALL_PATH}' == '${EMPTY}'  Return from Keyword
+    BMC Execute Command  rm -rf /tmp/tarball
+    Install Debug Tarball On BMC  ${DEBUG_TARBALL_PATH}
+
+
+Suite Setup Execution
+   [Documentation]  Do test case setup tasks.
+
+    Redfish.Login
+
+    Redfish Purge Event Log
+
+    Redfish Power On  stack_mode=skip  quiet=1
+
+    ${status}=  Run Keyword And Return Status  Logging Test Binary Exist
+    Run Keyword If  ${status} == ${False}  Install Tarball
+
+
+Suite Teardown Execution
+    [Documentation]  Do the post suite teardown.
+
+    Redfish.Logout
