diff --git a/extended/test_uploadimage.py b/extended/test_uploadimage.py
new file mode 100644
index 0000000..44a0963
--- /dev/null
+++ b/extended/test_uploadimage.py
@@ -0,0 +1,173 @@
+#!/usr/bin/env python
+
+r"""
+This module is the python counterpart to test_uploadimage.robot.
+"""
+
+import os
+import sys
+import re
+import string
+import tarfile
+import time
+
+robot_pgm_dir_path = os.path.dirname(__file__) + os.sep
+repo_lib_path = re.sub('/extended/', '/lib', robot_pgm_dir_path)
+repo_data_path = re.sub('/extended/', '/data', robot_pgm_dir_path)
+sys.path.append(repo_lib_path)
+sys.path.append(repo_data_path)
+
+import gen_robot_keyword as grk
+import gen_print as gp
+import variables as var
+from robot.libraries.BuiltIn import BuiltIn
+
+
+###############################################################################
+def get_latest_file(dir_path):
+
+    r"""
+    Get the path to the latest uploaded file.
+
+    Description of argument(s):
+    dir_path    Path to the dir from which the name of the last
+                updated file or folder will be returned to the
+                calling function.
+    """
+
+    grk.run_key_u("Open Connection And Log In")
+    status, ret_values =\
+            grk.run_key("Execute Command On BMC  cd " + dir_path
+            + "; stat -c '%Y %n' * | sort -k1,1nr | head -n 1", ignore=1)
+    return ret_values.split(" ")[-1]
+
+###############################################################################
+
+
+###############################################################################
+def get_version_tar(tar_file_path):
+
+    r"""
+    Read the image version from the MANIFEST inside the tarball.
+
+    Description of argument(s):
+    tar_file_path    The path to a tar file that holds the image
+                     version inside the MANIFEST.
+    """
+
+    tar = tarfile.open(tar_file_path)
+    for member in tar.getmembers():
+        f=tar.extractfile(member)
+        content=f.read()
+        if "version=" in content:
+            content = content.split("\n")
+            content = [x for x in content if "version=" in x]
+            version = content[0].split("=")[-1]
+            break
+    tar.close()
+    return version
+
+###############################################################################
+
+
+###############################################################################
+def get_image_version(file_path):
+
+    r"""
+    Read the file for a version object.
+
+    Description of argument(s):
+    file_path    The path to a file that holds the image version.
+    """
+
+    grk.run_key_u("Open Connection And Log In")
+    status, ret_values =\
+            grk.run_key("Execute Command On BMC  cat "
+            + file_path + " | grep \"version=\"")
+    return ret_values.split("=")[-1]
+
+###############################################################################
+
+
+###############################################################################
+def get_image_purpose(file_path):
+
+    r"""
+    Read the file for a purpose object.
+
+    Description of argument(s):
+    file_path    The path to a file that holds the image purpose.
+    """
+
+    grk.run_key_u("Open Connection And Log In")
+    status, ret_values =\
+            grk.run_key("Execute Command On BMC  cat "
+            + file_path + " | grep \"purpose=\"")
+    return ret_values.split("=")[-1]
+
+###############################################################################
+
+
+###############################################################################
+def get_image_path(image_version):
+
+    r"""
+    Query the upload image dir for the presence of image matching
+    the version that was read from the MANIFEST before uploading
+    the image. Based on the purpose verify the activation object
+    exists and is either READY or INVALID.
+
+    Description of argument(s):
+    image_version    The version of the image that should match one
+                     of the images in the upload dir.
+    """
+
+    upload_dir = BuiltIn().get_variable_value("${UPLOAD_DIR_PATH}")
+    grk.run_key_u("Open Connection And Log In")
+    status, image_list =\
+            grk.run_key("Execute Command On BMC  ls -d " + upload_dir
+            + "*/")
+
+    image_list = image_list.split("\n")
+    retry = 0
+    while (retry < 10):
+        for i in range(0, len(image_list)):
+            version = get_image_version(image_list[i] + "MANIFEST")
+            if (version == image_version):
+                return image_list[i]
+        time.sleep(10)
+        retry += 1
+
+###############################################################################
+
+
+###############################################################################
+def verify_image_upload():
+
+    r"""
+    Verify the image was uploaded correctly and that it created
+    a valid d-bus object
+    """
+
+    image_version = BuiltIn().get_variable_value("${IMAGE_VERSION}")
+    image_path = get_image_path(image_version)
+    image_version_id = image_path.split("/")[-2]
+
+    grk.run_key_u("Open Connection And Log In")
+    image_purpose = get_image_purpose(image_path + "MANIFEST")
+    if (image_purpose == "bmc" or image_purpose == "host"):
+        uri = var.SOFTWARE_VERSION_URI + "/" + image_version_id
+        status, ret_values =\
+        grk.run_key("Read Attribute  " + uri + "  Activation")
+
+        if ((ret_values == var.READY) or (ret_values == var.INVALID)
+            or (ret_values == var.ACTIVE)):
+            return True
+        else:
+            gp.print_var(ret_values)
+            return False
+    else:
+        gp.print_var(versionPurpose)
+        return False
+
+###############################################################################
diff --git a/extended/test_uploadimage.robot b/extended/test_uploadimage.robot
new file mode 100644
index 0000000..19dc35a
--- /dev/null
+++ b/extended/test_uploadimage.robot
@@ -0,0 +1,81 @@
+*** Settings ***
+Documentation         Test Upload Image
+...                   Execution Method :
+...                   python -m robot -v OPENBMC_HOST:<hostname>
+...                   -v TFTP_SERVER:<TFTP server IP>
+...                   -v TFTP_FILE_NAME:<filename.tar>
+...                   -v IMAGE_FILE_PATH:<path/*.tar> test_uploadimage.robot
+
+Resource              ../lib/connection_client.robot
+Resource              ../lib/rest_client.robot
+Resource              ../lib/openbmc_ffdc.robot
+Library               Collections
+Library               String
+Library               OperatingSystem
+Library               test_uploadimage.py
+
+Test Teardown  Upload Image Teardown
+
+*** Variables ***
+${timeout}            10
+${UPLOAD_DIR_PATH}    /tmp/images/
+${QUIET}              ${1}
+${IMAGE_VERSION}      ${EMPTY}
+
+*** Test Cases ***
+
+Upload Image Via REST
+    [Documentation]  Upload an image via REST.
+    [Tags]  Upload_Image_Via_REST
+
+    OperatingSystem.File Should Exist  ${IMAGE_FILE_PATH}
+    ${IMAGE_VERSION}=  Get Version Tar  ${IMAGE_FILE_PATH}
+    ${image_data}=  OperatingSystem.Get Binary File  ${IMAGE_FILE_PATH}
+    Upload Post Request  /upload/image  data=${image_data}
+    ${ret}=  Verify Image Upload
+    Should Be True  True == ${ret}
+
+Upload Image Via TFTP
+    [Documentation]  Upload an image via TFTP.
+    [Tags]  Upload_Image_Via_TFTP
+
+    @{image}=  Create List  ${TFTP_FILE_NAME}  ${TFTP_SERVER}
+    ${data}=  Create Dictionary  data=@{image}
+    ${resp}=  OpenBMC Post Request
+    ...  ${SOFTWARE_VERSION_URI}/action/DownloadViaTFTP  data=${data}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+    Sleep  1 minute
+    ${upload_file}=  Get Latest File  ${UPLOAD_DIR_PATH}
+    ${IMAGE_VERSION}=  Get Image Version
+    ...  ${UPLOAD_DIR_PATH}${upload_file}/MANIFEST
+    ${ret}=  Verify Image Upload
+    Should Be True  True == ${ret}
+
+*** Keywords ***
+
+Upload Image Teardown
+    [Documentation]  Log FFDC if test suite fails and collect SOL log for
+    ...              debugging purposes.
+
+    Close All Connections
+    FFDC On Test Case Fail
+
+Upload Post Request
+    [Arguments]  ${uri}  ${timeout}=10  ${quiet}=${QUIET}  &{kwargs}
+
+    # Description of arguments:
+    # uri             URI for uploading image via REST.
+    # timeout         Time allocated for the REST command to return status.
+    # quiet           If enabled turns off logging to console.
+    # kwargs          A dictionary that maps each keyword to a value.
+
+    Initialize OpenBMC  ${timeout}  quiet=${quiet}
+    ${base_uri}=  Catenate  SEPARATOR=  ${DBUS_PREFIX}  ${uri}
+    ${headers}=  Create Dictionary  Content-Type=application/octet-stream
+    ...  Accept=application/octet-stream
+    Set To Dictionary  ${kwargs}  headers  ${headers}
+    Run Keyword If  '${quiet}' == '${0}'  Log Request  method=Post
+    ...  base_uri=${base_uri}  args=&{kwargs}
+    ${ret}=  Post Request  openbmc  ${base_uri}  &{kwargs}  timeout=${timeout}
+    Run Keyword If  '${quiet}' == '${0}'  Log Response  ${ret}
+    Should Be Equal As Strings  ${ret.status_code}  ${HTTP_OK}
