diff --git a/openpower/ext_interfaces/test_vmicert_management.robot b/openpower/ext_interfaces/test_vmicert_management.robot
new file mode 100644
index 0000000..a939438
--- /dev/null
+++ b/openpower/ext_interfaces/test_vmicert_management.robot
@@ -0,0 +1,213 @@
+*** Settings ***
+
+Documentation    VMI certificate exchange tests.
+
+Resource         ../../lib/resource.robot
+Resource         ../../lib/bmc_redfish_resource.robot
+Resource         ../../lib/openbmc_ffdc.robot
+Resource         ../../lib/bmc_redfish_utils.robot
+Resource         ../../lib/utils.robot
+
+Suite Setup       Suite Setup Execution
+Test Teardown     FFDC On Test Case Fail
+Suite Teardown    Suite Teardown Execution
+
+
+*** Variables ***
+
+# users           User Name               password
+@{ADMIN}          admin_user              TestPwd123
+@{OPERATOR}       operator_user           TestPwd123
+&{USERS}          Administrator=${ADMIN}  Operator=${OPERATOR}
+${VMI_BASE_URI}   /ibm/v1/
+${CSR_FILE}       csr_server.csr
+${CSR_KEY}        csr_server.key
+
+*** Test Cases ***
+
+Get CSR Request Signed By VMI And Verify
+    [Documentation]  Get CSR request signed by VMI using different user roles and verify.
+    [Tags]  Get_CSR_Request_Signed_By_VMI_And_Verify
+    [Template]  Get Certificate Signed By VMI
+
+    # username           password             force_create  valid_csr  valid_status_code
+    ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}  ${True}       ${True}    ${HTTP_OK}
+    operator_user        TestPwd123           ${False}      ${True}    ${HTTP_FORBIDDEN}
+
+
+Get Root Certificate Using Different Privilege Users Roles
+    [Documentation]  Get root certificate using different users.
+    [Tags]  Get_Root_Certificate_Using_Different_Users
+    [Template]  Get Root Certificate
+
+    # username     password    force_create  valid_csr  valid_status_code
+    admin_user     TestPwd123  ${True}       ${True}    ${HTTP_OK}
+    operator_user  TestPwd123  ${False}      ${True}    ${HTTP_FORBIDDEN}
+
+
+*** Keywords ***
+
+Generate CSR String
+    [Documentation]  Generate a csr string.
+
+    # Note: Generates and returns csr string.
+    ${ssl_cmd}=  Set Variable  openssl req -new -newkey rsa:2048 -nodes -keyout ${CSR_KEY} -out ${CSR_FILE}
+    ${ssl_sub}=  Set Variable
+    ...  -subj "/C=XY/ST=Abcd/L=Efgh/O=ABC/OU=Systems/CN=abc.com/emailAddress=xyz@xx.ABC.com"
+
+    # Run openssl command to create a new private key and use that to generate a CSR string
+    # in server.csr file.
+    ${output}=  Run  ${ssl_cmd} ${ssl_sub}
+    ${csr}=  OperatingSystem.Get File  server.csr
+
+    [Return]  ${csr}
+
+
+Send CSR To VMI And Get Signed
+    [Arguments]  ${csr}  ${force_create}  ${username}  ${password}
+
+    # Description of argument(s):
+    # csr                    Certificate request from client to VMI.
+    # force_create           Create a new REST session if True.
+    # username               Username to create a REST session.
+    # password               Password to create a REST session.
+
+    Run Keyword If  "${XAUTH_TOKEN}" != "${EMPTY}" or ${force_create} == ${True}
+    ...  Initialize OpenBMC  rest_username=${username}  rest_password=${password}
+
+    ${data}=  Create Dictionary
+    ${headers}=  Create Dictionary  X-Auth-Token=${XAUTH_TOKEN}
+    ...  Content-Type=application/json
+
+    ${cert_uri}=  Set Variable  ${VMI_BASE_URI}Host/Actions/SignCSR
+
+    # For SignCSR request, we need to pass CSR string generated by openssl command.
+    ${csr_data}=  Create Dictionary  CsrString  ${csr}
+    Set To Dictionary  ${data}  data  ${csr_data}
+
+    ${resp}=  Post Request  openbmc  ${cert_uri}  &{data}  headers=${headers}
+
+    [Return]  ${resp}
+
+
+Get Root Certificate
+    [Documentation]  Get root certificate from VMI.
+    [Arguments]  ${username}=${OPENBMC_USERNAME}  ${password}=${OPENBMC_PASSWORD}
+    ...  ${force_create}=${False}  ${valid_csr}=${True}  ${valid_status_code}=${HTTP_OK}
+
+    # Description of argument(s):
+    # cert_type          Type of the certificate requesting. eg. root or SignCSR.
+    # username           Username to create a REST session.
+    # password           Password to create a REST session.
+    # force_create       Create a new REST session if True.
+    # valid_csr          Uses valid CSR string in the REST request if True.
+    #                    This is not applicable for root certificate.
+    # valid_status_code  Expected status code from REST request.
+
+    Run Keyword If  "${XAUTH_TOKEN}" != "${EMPTY}" or ${force_create} == ${True}
+    ...  Initialize OpenBMC  rest_username=${username}  rest_password=${password}
+
+    ${data}=  Create Dictionary
+    ${headers}=  Create Dictionary  X-Auth-Token=${XAUTH_TOKEN}
+    ...  Content-Type=application/json
+
+    ${cert_uri}=  Set Variable  ${VMI_BASE_URI}Host/Certificate/root
+
+    ${resp}=  Get Request  openbmc  ${cert_uri}  &{data}  headers=${headers}
+
+    Should Be Equal As Strings  ${resp.status_code}  ${valid_status_code}
+    Return From Keyword If  ${resp.status_code} != ${HTTP_OK}
+
+    ${cert}=  Evaluate  json.loads('''${resp.text}''', strict=False)  json
+    Should Contain  ${cert["Certificate"]}  BEGIN CERTIFICATE
+    Should Contain  ${cert["Certificate"]}  END CERTIFICATE
+
+
+Get Subject
+    [Documentation]  Generate a csr string.
+    [Arguments]  ${file_name}  ${is_csr_file}
+
+    # Description of argument(s):
+    # file_name          Name of CSR or signed CERT file.
+    # is_csr_file        A True value means a CSR while a False is for signed CERT file.
+
+    ${subject}=  Run Keyword If  ${is_csr_file}  Run  openssl req -in ${file_name} -text -noout | grep Subject:
+    ...   ELSE  Run  openssl x509 -in ${file_name} -text -noout | grep Subject:
+
+    [Return]  ${subject}
+
+
+Get Public Key
+    [Documentation]  Generate a csr string.
+    [Arguments]  ${file_name}  ${is_csr_file}
+
+    # Description of argument(s):
+    # file_name          Name of CSR or CERT file.
+    # is_csr_file        A True value means a CSR while a False is for signed CERT file.
+
+    ${PublicKey}=  Run Keyword If  ${is_csr_file}  Run  openssl req -in ${file_name} -noout -pubkey
+    ...   ELSE  Run  openssl x509 -in ${file_name} -noout -pubkey
+
+    [Return]  ${PublicKey}
+
+
+Get Certificate Signed By VMI
+    [Documentation]  Get signed certificate from VMI.
+    [Arguments]  ${username}=${OPENBMC_USERNAME}  ${password}=${OPENBMC_PASSWORD}
+    ...  ${force_create}=${False}  ${valid_csr}=${True}  ${valid_status_code}=${HTTP_OK}
+
+    # Description of argument(s):
+    # cert_type          Type of the certificate requesting. eg. root or SignCSR.
+    # username           Username to create a REST session.
+    # password           Password to create a REST session.
+    # force_create       Create a new REST session if True.
+    # valid_csr          Uses valid CSR string in the REST request if True.
+    #                    This is not applicable for root certificate.
+    # valid_status_code  Expected status code from REST request.
+
+    Set Test Variable  ${CSR}  CSR
+    Set Test Variable  ${CORRUPTED_CSR}  CORRUPTED_CSR
+
+    ${CSR}=  Generate CSR String
+
+    # For SignCSR request, we need to pass CSR string generated by openssl command
+    ${csr_str}=  Set Variable If  ${valid_csr} == ${True}  ${CSR}  ${CORRUPTED_CSR}
+
+    ${resp}=  Send CSR To VMI And Get Signed  ${csr_str}  ${force_create}  ${username}  ${password}
+
+    Should Be Equal As Strings  ${resp.status_code}  ${valid_status_code}
+    Return From Keyword If  ${resp.status_code} != ${HTTP_OK}
+
+    ${cert}=  Evaluate  json.loads('''${resp.text}''', strict=False)  json
+    Should Contain  ${cert["Certificate"]}  BEGIN CERTIFICATE
+    Should Contain  ${cert["Certificate"]}  END CERTIFICATE
+
+    # Now do subject and public key verification
+    ${subject_csr}=  Get Subject  ${CSR_FILE}  True
+    ${pubKey_csr}=  Get Public Key  ${CSR_FILE}  True
+
+    # create a crt file with certificate string
+    ${signed_cert}=  Set Variable  ${cert["Certificate"]}
+
+    Create File  test_certificate.crt  ${signed_cert}
+    ${subject_signed_csr}=  Get Subject  test_certificate.crt  False
+    ${pubKey_signed_csr}=  Get Public Key  test_certificate.crt  False
+
+    Should be equal as strings    ${subject_signed_csr}    ${subject_csr}
+    Should be equal as strings    ${pubKey_signed_csr}     ${pubKey_csr}
+
+
+Suite Setup Execution
+    [Documentation]  Suite setup execution.
+
+    # Create different user accounts.
+    Redfish.Login
+    Create Users With Different Roles  users=${USERS}  force=${True}
+
+
+Suite Teardown Execution
+    [Documentation]  Suite teardown execution.
+
+    Delete BMC Users Via Redfish  users=${USERS}
+    Delete All Sessions
+    Redfish.Logout
