diff --git a/ansible/application/README.md b/ansible/application/README.md
index 36f69bd..0e12da4 100644
--- a/ansible/application/README.md
+++ b/ansible/application/README.md
@@ -1,7 +1,7 @@
 # Application specific configuration
 
 This directory is **empty** on purpose in git. Content in this folder is
-populated packaging time (see package.sh/package.conf) and can be modified if needed
+populated in packaging time by build/package.py and can be modified if needed
 also on target server where package is installed.
 
 ## Application configuration
@@ -29,8 +29,6 @@
 Installer supports optional custom pre and post install roles. Custom roles' code folders
 are placed into this directory at packaging time and names of those folders shall be configured in
 application_configuration.yml with variable `application_pre_install_role` and `application_post_install_role`.
-Note that these directory names must correspond to those configured in APP_CONFIGURATION inside package.conf
-during package build time.
 
 Example:
 ```
@@ -44,7 +42,7 @@
 and at least ip addresses need to be changed according to target servers after
 installer installation and before starting installer execution.
 
-So it's better to place also hosts.yml to this application directory and edit it here.
-That can be done either at packaging time same way as application_configuration.yml
-or after package has been installed to server where ansible process are run just
-before lauching any playbooks.
+So it's better to place also hosts.yml to this application directory and edit it there.
+That can be done either at packaging time same way as in application_configuration.yml
+or after package has been installed to the install server where ansible process are run just
+before launching any playbooks.
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index d8fe37d..d3cdfc1 100755
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -9,14 +9,11 @@
 resources_dir:
 
 # tarfile name within resources_dir directory with offline infrastructure binaries.
-# Content of APP_BINARY_RESOURCES_DIR (defined in package.conf) packaged by package.sh to single tar file.
 resources_filename:
 
 # tarfile name within resources_dir directory with auxiliary resources.
-# Content of APP_AUX_BINARIES (defined in package.conf) packaged by package.sh to single tar file.
 # the purpose of auxiliary resources is to provide user an interface
 # to distribute to infra node tar file with application specific files.
-# Docker images in tar format are currently the only supported content of aux_resources package.
 aux_resources_filename:
 
 # resources can be exported via nfs
@@ -101,9 +98,6 @@
 # Helm repository.
 # Content of the folder must be Helm chart directories of the app with Makefile.
 # In case of ONAP OOM it would be <oom_repo>/kubernetes folder content.
-# NOTE: This default value should not be changed if not really needed and it
-# must match with the variable "HELM_CHARTS_DIR_IN_PACKAGE" value in package.sh
-# script!
 app_helm_charts_install_directory: application/helm_charts
 
 # Specify target dir where helm charts are copied into on infra node.
diff --git a/build/package.conf b/build/package.conf
deleted file mode 100644
index d74eac0..0000000
--- a/build/package.conf
+++ /dev/null
@@ -1,80 +0,0 @@
-# For the packaging script it is expected that all artifacts are present on local file system.
-# Artifacts include:
-#  - installer source code (this git repository content)
-#  - all binary artifacts pre-downloaded from internet (docker images, rpm packages, npm packages, Maven artifacts etc.)
-# Script will create 3 packages:
-# offline-${PROJECT_NAME}-${PROJECT_VERSION}-sw.tar
-#       - installer code (ansible dir in this git repo)
-#       - Files/dirs defined by APP_CONFIGURATION if any.
-#       - Directory content of HELM_CHARTS_DIR if defined.
-# offline-${PROJECT_NAME}-${PROJECT_VERSION}-resources.tar
-#       - Directory content of APP_BINARY_RESOURCES_DIR if defined.
-# offline-${PROJECT_NAME}-${PROJECT_VERSION}-aux-resources.tar
-#       - Files defined by APP_AUX_BINARIES if any.
-
-###########################
-# Application Helm charts #
-###########################
-
-# Provide application installed to Kubernetes cluster. Helm chart is the supported format https://helm.sh/.
-# Directory provided here must contain all the Chart directories of the application (https://docs.helm.sh/developing_charts/#charts) and Makefile.
-# E.g. in case of ONAP oom repo it will be the content of kubernetes directory.
-# NOTE: Leaving this variable commented out will mean that no Helm application will be installed to
-# offline Kubernetes cluster. This may be sometimes wanted.
-#HELM_CHARTS_DIR=<oom-clone>/kubernetes
-HELM_CHARTS_DIR=/tmp/oom-clone/kubernetes
-
-#####################################
-# Application install configuration #
-#####################################
-
-# APP_CONFIGURATION array variable can be used to provide files/directories
-# into sw package available for the Ansible process to consume.
-# The main configuration file for your application is
-# "application_configuration.yml" (name of file can be anything) where user
-# shall provide values to control ansible installer process. Yml file is given
-# as command line parameter to ansible run.
-# See more from UserGuide documentation (LINK HERE) how to use installer.
-# Available configuration parameters user can configure are seen from group_vars files:
-#   ansible/group_vars/all.yml
-#   ansible/group_vars/infrastucture.yml
-#   ansible/group_vars/kubernetes.yml
-# Additionally user can optionally provide own ansible roles code to customize install process.
-# At the moment 2 custom ansible roles are supported pre and post install roles, which are
-# run by installer prior Helm install and after Kubernetes app has been installed.
-# In application_configuration.yml those role names are configured with variables:
-#   application_pre_install_role: my-pre-install-role
-#   application_post_install_role: my-post-install-role
-# And according to Ansible functionality, roles' code must be placed to directories
-# with the same name:
-#APP_CONFIGURATION=(
-#    <offline-installer-clone>/config/application_configuration.yml
-#    <offline-installer-clone>/patches/my-pre-install-role
-#    ~/myappfiles/my-post-install-role
-#)
-APP_CONFIGURATION=(
-    /tmp/offline-installer/config/application_configuration.yml
-    /tmp/offline-installer/patches/onap-patch-role
-)
-
-# APP_BINARY_RESOURCES_DIR is variable to directory containing directories and files for offline
-# installer infra and the the application run in that infra.
-# Currently mixed with infra and app binaries to same, maybe to be separated in the future.
-# Following directories and files are expected:
-#       downloads        ... directory with exacutable binaries for offline infra usage (e.g. rancher, kubectl, jq, helm)
-#       git-repo         ... directory with git repos for application needs to be simulated
-#       http             ... directory with http simulation files (e.g. Maven artifacts are simulated here)
-#       offline_data     ... directory with offline infra specific docker images
-#       pkg              ... directory with rpm/deb packages mainly for offline infra
-#       nexus_data.tar   ... tar file with pre-generated nexus blobs containing e.g. docker images for the application.
-#APP_BINARY_RESOURCES_DIR=~/myappfiles/all_binaries
-APP_BINARY_RESOURCES_DIR=/tmp/onap-offline/resources
-
-# APP_AUX_BINARIES is array variable for additional application files.
-# Docker images supported currently in tar format.
-#APP_AUX_BINARIES=(
-#    ~/myappfiles/docker_images_populated_runtime/aaa-component-0.0.1.tar
-#    ~/myappfiles/docker_images_populated_runtime/xyz-component-0.0.1.tar
-#)
-APP_AUX_BINARIES=()
-
diff --git a/build/package.sh b/build/package.sh
deleted file mode 100755
index a3c1ded..0000000
--- a/build/package.sh
+++ /dev/null
@@ -1,267 +0,0 @@
-#! /usr/bin/env bash
-
-#   COPYRIGHT NOTICE STARTS HERE
-#
-#   Copyright 2018-2019 © Samsung Electronics Co., Ltd.
-#
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#
-#   COPYRIGHT NOTICE ENDS HERE
-
-
-# Scope of this packaging script is to generate tarfiles for offline installation
-# Build of any additional artifacts is out of scope for this script
-set -e
-
-crash () {
-    local exit_code="$1"
-    local cause="$2"
-    echo "Packaging script finished prematurely"
-    echo "Cause: $2"
-    exit "${exit_code}"
-}
-
-crash_arguments () {
-    echo "Missing some mandatory arguments!"
-    usage
-    exit 1
-}
-
-usage () {
-    echo "Usage:"
-    echo "   ./$(basename $0) <project_name> <version> <packaging_target_dir> [--conf <file>] [--force]"
-    echo ""
-    echo "Options:"
-    echo "   --force Remove packaging_target_dir if exists prior to script execution"
-    echo "   --conf  Custom configuration file path for script"
-    echo ""
-    echo "Example:"
-    echo "   ./$(basename $0) myproject 1.0.1 /tmp/package --conf ~/myproject.conf"
-    echo ""
-    echo "packaging_target_dir will be created if does not exist. All tars will be produced into it."
-}
-
-function create_tar {
-    local tar_dir="$1"
-    local tar_name="$2"
-
-    cd ${tar_dir}
-    touch ${tar_name} # Trick to avoid sporadic "tar: .: file changed as we read it" warning message
-    tar --exclude=${tar_name} -cf ../${tar_name} .
-    cd - &> /dev/null # Trick to avoid printing new dir on stdout
-
-    # Remove packaged folders
-    find ${tar_dir}/* -maxdepth 0 -type d -exec rm -rf '{}' \;
-    # Remove packaged files
-    find ${tar_dir}/* ! -name ${tar_name} -exec rm '{}' \;
-    echo "Tar file created to $(dirname ${tar_dir})/${tar_name}"
-}
-
-function create_pkg {
-    local pkg_type="$1"
-    echo "[Creating ${pkg_type} package]"
-    create_tar "${PKG_ROOT}" offline-${PROJECT_NAME}-${PROJECT_VERSION}-${pkg_type}.tar
-    rm -rf "${PKG_ROOT}"
-}
-
-function add_metadata {
-    local metafile="$1"
-    echo "Project name: ${PROJECT_NAME}" >> "${metafile}"
-    echo "Project version: ${PROJECT_VERSION}" >> "${metafile}"
-    echo "Package date: ${TIMESTAMP}" >> "${metafile}"
-}
-
-function add_additions {
-    local source="$1"
-    local target="$2"
-    if [ -d "${source}" ]; then
-        mkdir -p "${target}/$(basename $source)"
-        cp -r "${source}" "${target}"
-        echo "Adding directory  ... $(basename $source)"
-    else
-        if [ -f "${source}" ]; then
-             cp "${source}" "${target}"
-             echo "Adding file       ... $(basename $source)"
-        else
-             crash 4 "Invalid source specified for packaging: $1"
-        fi
-    fi
-}
-
-function build_sw_artifacts {
-    cd ${LOCAL_PATH}/../ansible/docker
-    ./build_ansible_image.sh
-    if [ $? -ne 0 ]; then
-        crash 5 "Building of ansible runner image failed."
-    fi
-    cd -
-}
-
-function create_sw_package {
-    PKG_ROOT="${PACKAGING_TARGET_DIR}/sw"
-
-    # Create directory structure of the sw package
-    mkdir -p "${PKG_ROOT}"
-    cp -r ${LOCAL_PATH}/../ansible "${PKG_ROOT}"
-
-    # Add application additional files/dirs into package based on package.conf
-    for item in "${APP_CONFIGURATION[@]}";do
-        # all SW package addons are expected within ./ansible/application folder
-        add_additions "${item}" "${PKG_ROOT}/${APPLICATION_FILES_IN_PACKAGE}"
-    done
-
-    # Application Helm charts
-    # To be consistent with resources and aux dir, create charts dir even if no charts provided.
-    mkdir -p ${PKG_ROOT}/${HELM_CHARTS_DIR_IN_PACKAGE}
-    if [ ! -z "${HELM_CHARTS_DIR}" ];
-    then
-        echo "Add application Helm charts"
-        # Copy charts available for ansible playbook to use/move them to target server/dir
-        cp -r "${HELM_CHARTS_DIR}"/* ${PKG_ROOT}/${HELM_CHARTS_DIR_IN_PACKAGE}
-    else
-        echo "No Helm charts defined, no application will be automatically installed by this package!"
-    fi
-
-    # Add metadata to the package
-    add_metadata "${PKG_ROOT}"/package.info
-
-    # Create sw tar package
-    create_pkg sw
-}
-
-function create_resource_package {
-    PKG_ROOT="${PACKAGING_TARGET_DIR}/resources"
-
-    # Create directory structure of the resource package
-    mkdir -p "${PKG_ROOT}"
-
-    # Add artifacts into resource package based on package.conf config
-    if [ ! -z ${APP_BINARY_RESOURCES_DIR} ]; then
-        cp -r ${APP_BINARY_RESOURCES_DIR}/* ${PKG_ROOT}
-    fi
-
-    # tar file with nexus_data is expected, we should find and untar it
-    # before resource.tar is created
-    for i in `ls -1 ${PKG_ROOT} | grep tar`; do
-        tar tvf "${PKG_ROOT}/${i}" | grep nexus_data &> /dev/null
-        if [ $? -eq 0 ]; then
-            echo "Debug: tar file with nexus blobs detected ${PKG_ROOT}/${i}. Start unarchive ..."
-            tar xf "${PKG_ROOT}/${i}" -C "${PKG_ROOT}" &> /dev/null
-            echo "Debug: unarchive finished. Removing original file"
-            rm -f "${PKG_ROOT}/${i}"
-        fi
-    done
-
-    create_pkg resources
-}
-
-function create_aux_package {
-    PKG_ROOT="${PACKAGING_TARGET_DIR}/aux"
-
-    # Create directory structure of the aux resource package
-    mkdir -p "${PKG_ROOT}"
-
-    # Add artifacts into resource packagee based on package.conf config
-    for item in "${APP_AUX_BINARIES[@]}";do
-        add_additions "${item}" "${PKG_ROOT}"
-    done
-
-    create_pkg aux-resources
-}
-
-#
-# =================== Main ===================
-#
-
-PROJECT_NAME="$1"
-PROJECT_VERSION="$2"
-PACKAGING_TARGET_DIR="$3"
-
-TIMESTAMP=$(date -u +%Y%m%dT%H%M%S)
-SCRIPT_DIR=$(dirname "${0}")
-LOCAL_PATH=$(readlink -f "$SCRIPT_DIR")
-
-# Relative location inside the package for application related files.
-# Application means Kubernetes application installed by Helm charts on ready cluster (e.g. onap).
-APPLICATION_FILES_IN_PACKAGE="ansible/application"
-
-# Relative location inside the package to place Helm charts to be available for
-# Ansible process to transfer them into machine (infra node) running Helm repository.
-# NOTE: This is quite hardcoded place to put them and agreement with Ansible code
-# is done in ansible/group_vars/all.yml with variable "app_helm_charts_install_directory"
-# whihc value must match to value of this variable (with exception of slash '/'
-# prepended so that ansible docker/chroot process can see the dir).
-# This variable can be of course changed in package.conf if really needed if
-# corresponding ansible variable "app_helm_charts_install_directory" value
-# adjusted accordingly.
-HELM_CHARTS_DIR_IN_PACKAGE="${APPLICATION_FILES_IN_PACKAGE}/helm_charts"
-
-if [ $# -eq 0 ]; then
-    crash_arguments
-fi
-
-CONF_FILE=""
-FORCE_REMOVE=0
-arg_ind=0
-for arg in "$@"; do
-  shift
-  ((arg_ind+=1))
-  if [[ ${arg} =~ ^[-]{1,2}[a-zA-Z-]+$ && ${arg_ind} -lt 4 ]]; then
-      echo "Non-positional parameters should follow mandatory arguments!"
-      usage
-      exit 1
-  fi
-  case "$arg" in
-    -c|--conf)
-        CONF_FILE="$1" ;;
-    --force)
-        FORCE_REMOVE=1 ;;
-    *)
-        set -- "$@" "$arg"
-        if [ "$#" -lt 3 ]; then
-	    crash_arguments
-        fi ;;
-  esac
-done
-
-if [ -z ${CONF_FILE} ]; then
-    CONF_FILE=${LOCAL_PATH}/package.conf # Fall to default conf file
-fi
-
-if [ ! -f ${CONF_FILE} ]; then
-    crash 2 "Mandatory config file missing! Provide it with --conf option or ${LOCAL_PATH}/package.conf"
-fi
-
-source ${CONF_FILE}
-pushd ${LOCAL_PATH}
-
-# checking bash capability of parsing arrays
-whotest[0]='test' || (crash 3 "Arrays not supported in this version of bash.")
-
-# Prepare output directory for our packaging
-# Check target dir exists and is not empty
-if [ -d ${PACKAGING_TARGET_DIR} ] && [ "$(ls -A ${PACKAGING_TARGET_DIR})" ]; then
-    if [ ${FORCE_REMOVE} -eq 0 ]; then
-        crash 1 "Target directory not empty. Use --force to overwrite it."
-    else
-        rm -rf ${PACKAGING_TARGET_DIR}
-    fi
-fi
-
-# Create all tars
-build_sw_artifacts
-create_sw_package
-create_resource_package
-create_aux_package
-
-popd
