diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 9b5dbeb..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,47 +0,0 @@
-# opencord/cord-workflow-airflow
-# To build use: docker build -t opencord/cord-workflow-airflow .
-# To run use: docker run -p 8080:8080 -d opencord/cord-workflow-airflow
-FROM puckel/docker-airflow:1.10.2
-
-USER root
-
-# install dependencies of our plugin
-RUN set -ex \
-    && pip install multistructlog~=2.1.0 \
-    && pip install cord-workflow-controller-client~=0.2.0 \
-    && pip install pyfiglet~=0.7 \
-    && pip install xossynchronizer~=3.2.6 \
-    && pip install xosapi~=3.2.6 \
-    && apt-get purge --auto-remove -yqq $buildDeps \
-    && apt-get autoremove -yqq --purge \
-    && apt-get clean \
-    && rm -rf \
-        /var/lib/apt/lists/* \
-        /tmp/* \
-        /var/tmp/* \
-        /usr/share/man \
-        /usr/share/doc \
-        /usr/share/doc-base
-
-# drop plugin to plugin dir of airflow
-COPY src/cord_workflow_airflow_extensions/cord_workflow_plugin.py /usr/local/airflow/plugins/
-
-USER airflow
-
-# Label image
-ARG org_label_schema_schema_version=1.0
-ARG org_label_schema_name=cord-workflow-airflow
-ARG org_label_schema_version=unknown
-ARG org_label_schema_vcs_url=unknown
-ARG org_label_schema_vcs_ref=unknown
-ARG org_label_schema_build_date=unknown
-ARG org_opencord_vcs_commit_date=unknown
-
-LABEL org.label-schema.schema-version=$org_label_schema_schema_version \
-      org.label-schema.name=$org_label_schema_name \
-      org.label-schema.version=$org_label_schema_version \
-      org.label-schema.vcs-url=$org_label_schema_vcs_url \
-      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
-      org.label-schema.build-date=$org_label_schema_build_date \
-      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date
-
diff --git a/Makefile b/Makefile
index 38dbcde..6a7e698 100644
--- a/Makefile
+++ b/Makefile
@@ -37,14 +37,14 @@
 all: test
 
 docker-build:
-	docker build $(DOCKER_BUILD_ARGS) \
+	 docker build $(DOCKER_BUILD_ARGS) \
     -t ${DOCKER_IMAGENAME} \
     --build-arg org_label_schema_version="${VERSION}" \
     --build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
     --build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
     --build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
     --build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
-    -f Dockerfile .
+    -f ./docker/Dockerfile .
 
 docker-push:
 	docker push ${DOCKER_IMAGENAME}
diff --git a/VERSION b/VERSION
index 9325c3c..79a2734 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.3.0
\ No newline at end of file
+0.5.0
\ No newline at end of file
diff --git a/docker/.dockerignore b/docker/.dockerignore
new file mode 100644
index 0000000..6b8710a
--- /dev/null
+++ b/docker/.dockerignore
@@ -0,0 +1 @@
+.git
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000..c35b212
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,148 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+ARG PYTHON_BASE_IMAGE="python:3.6-slim"
+
+FROM ${PYTHON_BASE_IMAGE}
+
+# Label image
+ARG org_label_schema_schema_version=1.0
+ARG org_label_schema_name=cord-workflow-airflow
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+
+LABEL org.label-schema.schema-version=$org_label_schema_schema_version \
+      org.label-schema.name=$org_label_schema_name \
+      org.label-schema.version=$org_label_schema_version \
+      org.label-schema.vcs-url=$org_label_schema_vcs_url \
+      org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+      org.label-schema.build-date=$org_label_schema_build_date \
+      org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date
+
+
+SHELL ["/bin/bash", "-o", "pipefail", "-e", "-u", "-x", "-c"]
+
+# Make sure noninteractie debian install is used and language variables set
+ENV DEBIAN_FRONTEND=noninteractive LANGUAGE=C.UTF-8 LANG=C.UTF-8 LC_ALL=C.UTF-8 \
+    LC_CTYPE=C.UTF-8 LC_MESSAGES=C.UTF-8 TERM=linux
+
+# Airflow
+ARG AIRFLOW_VERSION=1.10.2
+ARG AIRFLOW_USER=airflow
+ENV AIRFLOW_USER=${AIRFLOW_USER}
+
+ARG HOME=/home/airflow
+ENV HOME=${HOME}
+
+ARG AIRFLOW_HOME=${HOME}/airflow
+ENV AIRFLOW_HOME=${AIRFLOW_HOME}
+
+
+RUN apt-get update -y --no-install-recommends \
+    && apt-get install -y --no-install-recommends \
+        curl \
+        apt-utils \
+        build-essential \
+        curl \
+        freetds-bin \
+        freetds-dev \
+        libffi-dev \
+        libkrb5-dev \
+        libpq-dev \
+        libsasl2-2 \
+        libsasl2-dev \
+        libsasl2-modules \
+        libssl-dev \
+        locales  \
+        netcat \
+        rsync \
+        sasl2-bin \
+        sudo \
+        default-libmysqlclient-dev \
+        krb5-user \
+        net-tools \
+        tmux \
+        unzip \
+        vim \
+    && apt-get autoremove -yqq --purge \
+    && apt-get clean \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV SLUGIFY_USES_TEXT_UNIDECODE=yes
+RUN pip install -U pip setuptools wheel \
+    && pip install pytz \
+    && pip install pyOpenSSL \
+    && pip install ndg-httpsclient \
+    && pip install pyasn1 \
+    && pip install apache-airflow[postgres]==${AIRFLOW_VERSION}
+
+RUN useradd -m ${AIRFLOW_USER} \
+    && echo "${AIRFLOW_USER} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/airflow \
+    && chmod 0440 /etc/sudoers.d/airflow \
+    && chown -R ${AIRFLOW_USER}:${AIRFLOW_USER} ${HOME}
+
+RUN mkdir -pv ${AIRFLOW_HOME} \
+    && chown -R ${AIRFLOW_USER}:${AIRFLOW_USER} ${AIRFLOW_HOME}
+
+COPY ./docker/script/entrypoint.sh ${AIRFLOW_HOME}/entrypoint.sh
+COPY ./docker/config/airflow.cfg ${AIRFLOW_HOME}/airflow.cfg
+
+# CORD Workflow
+RUN pip install multistructlog~=2.1.0 \
+    && pip install cord-workflow-controller-client~=0.3.0 \
+    && pip install pyfiglet~=0.7 \
+    && pip install xossynchronizer~=3.2.6 \
+    && pip install xosapi~=3.2.6
+
+# drop plugin code to plugin dir of airflow
+COPY ./src/cord_workflow_airflow_extensions/cord_workflow_plugin.py ${AIRFLOW_HOME}/plugins/cord_workflow_plugin.py
+
+# drop sample workflow code to dags dir of airflow
+COPY ./workflow_examples/simple-cord-workflow/simple_cord_workflow.py ${AIRFLOW_HOME}/dags/simple_cord_workflow.py
+COPY ./workflow_examples/simple-cord-workflow/simple_cord_workflow_essence.json ${HOME}/simple_cord_workflow_essence.json
+COPY ./workflow_examples/simple-airflow-workflow/simple_airflow_workflow.py ${AIRFLOW_HOME}/dags/simple_airflow_workflow.py
+COPY ./workflow_examples/simple-airflow-workflow/simple_airflow_workflow_essence.json ${HOME}/simple_airflow_workflow_essence.json
+
+# copy scripts
+COPY ./workflow_examples/connection_setup.sh ${HOME}/connection_setup.sh
+COPY ./workflow_examples/register_essence.sh ${HOME}/register_essence.sh
+COPY ./workflow_examples/emit_events_model.sh ${HOME}/emit_events_model.sh
+COPY ./workflow_examples/emit_events_onu.sh ${HOME}/emit_events_onu.sh
+
+# copy kickstarter code & workflow ctl code
+COPY ./src/tools/kickstarter.py ${HOME}/kickstarter.py
+COPY ./src/tools/workflow_ctl.py ${HOME}/workflow_ctl.py
+
+# copy configuration json
+COPY ./src/tools/config.json /etc/cord_workflow_airflow_extensions/config.json
+
+RUN chown -R ${AIRFLOW_USER}:${AIRFLOW_USER} ${HOME} \
+    && chmod 755 ${HOME}/connection_setup.sh \
+    && chmod 755 ${HOME}/register_essence.sh \
+    && chmod 755 ${HOME}/emit_events_model.sh \
+    && chmod 755 ${HOME}/emit_events_onu.sh \
+    && chmod 755 ${HOME}/kickstarter.py \
+    && chmod 755 ${HOME}/workflow_ctl.py
+
+# 8080 for webserver (admin_ui)
+# 8793 for worker log
+EXPOSE 8080 8793
+
+USER ${AIRFLOW_USER}
+WORKDIR ${HOME}
+
+ENTRYPOINT ["/home/airflow/airflow/entrypoint.sh"]
diff --git a/docker/config/airflow.cfg b/docker/config/airflow.cfg
new file mode 100644
index 0000000..0bcbe20
--- /dev/null
+++ b/docker/config/airflow.cfg
@@ -0,0 +1,758 @@
+[core]
+# The folder where your airflow pipelines live, most likely a
+# subfolder in a code repository
+# This path must be absolute
+dags_folder = /home/airflow/airflow/dags
+
+# The folder where airflow should store its log files
+# This path must be absolute
+base_log_folder = /home/airflow/airflow/logs
+
+# Airflow can store logs remotely in AWS S3, Google Cloud Storage or Elastic Search.
+# Users must supply an Airflow connection id that provides access to the storage
+# location. If remote_logging is set to true, see UPDATING.md for additional
+# configuration requirements.
+remote_logging = False
+remote_log_conn_id =
+remote_base_log_folder =
+encrypt_s3_logs = False
+
+# Logging level
+logging_level = INFO
+fab_logging_level = WARN
+
+# Logging class
+# Specify the class that will specify the logging configuration
+# This class has to be on the python classpath
+# logging_config_class = my.path.default_local_settings.LOGGING_CONFIG
+logging_config_class =
+
+# Log format
+# we need to escape the curly braces by adding an additional curly brace
+log_format = [%%(asctime)s] {{%%(filename)s:%%(lineno)d}} %%(levelname)s - %%(message)s
+simple_log_format = %%(asctime)s %%(levelname)s - %%(message)s
+
+# Log filename format
+# we need to escape the curly braces by adding an additional curly brace
+log_filename_template = {{ ti.dag_id }}/{{ ti.task_id }}/{{ ts }}/{{ try_number }}.log
+log_processor_filename_template = {{ filename }}.log
+dag_processor_manager_log_location = /home/airflow/airflow/logs/dag_processor_manager/dag_processor_manager.log
+
+# Hostname by providing a path to a callable, which will resolve the hostname
+hostname_callable = socket:getfqdn
+
+# Default timezone in case supplied date times are naive
+# can be utc (default), system, or any IANA timezone string (e.g. Europe/Amsterdam)
+default_timezone = system
+
+# The executor class that airflow should use. Choices include
+# SequentialExecutor, LocalExecutor, CeleryExecutor, DaskExecutor
+executor = LocalExecutor
+
+# The SqlAlchemy connection string to the metadata database.
+# SqlAlchemy supports many different database engine, more information
+# their website
+#sql_alchemy_conn = sqlite:////tmp/airflow.db
+
+
+# If SqlAlchemy should pool database connections.
+sql_alchemy_pool_enabled = True
+
+# The encoding for the databases
+sql_engine_encoding = utf-8
+
+# The SqlAlchemy pool size is the maximum number of database connections
+# in the pool. 0 indicates no limit.
+sql_alchemy_pool_size = 5
+
+# The SqlAlchemy pool recycle is the number of seconds a connection
+# can be idle in the pool before it is invalidated. This config does
+# not apply to sqlite. If the number of DB connections is ever exceeded,
+# a lower config value will allow the system to recover faster.
+sql_alchemy_pool_recycle = 1800
+
+# How many seconds to retry re-establishing a DB connection after
+# disconnects. Setting this to 0 disables retries.
+sql_alchemy_reconnect_timeout = 300
+
+# The schema to use for the metadata database
+# SqlAlchemy supports databases with the concept of multiple schemas.
+sql_alchemy_schema =
+
+# The amount of parallelism as a setting to the executor. This defines
+# the max number of task instances that should run simultaneously
+# on this airflow installation
+parallelism = 32
+
+# The number of task instances allowed to run concurrently by the scheduler
+dag_concurrency = 16
+
+# Are DAGs paused by default at creation
+dags_are_paused_at_creation = False
+
+# When not using pools, tasks are run in the "default pool",
+# whose size is guided by this config element
+non_pooled_task_slot_count = 128
+
+# The maximum number of active DAG runs per DAG
+max_active_runs_per_dag = 16
+
+# Whether to load the examples that ship with Airflow. It's good to
+# get started, but you probably want to set this to False in a production
+# environment
+load_examples = True
+
+# Where your Airflow plugins are stored
+plugins_folder = /home/airflow/airflow/plugins
+
+# Secret key to save connection passwords in the db
+fernet_key = $FERNET_KEY
+
+# Whether to disable pickling dags
+donot_pickle = False
+
+# How long before timing out a python file import while filling the DagBag
+dagbag_import_timeout = 30
+
+# The class to use for running task instances in a subprocess
+#task_runner = StandardTaskRunner
+# use BashTaskRunner for 1.10.2
+task_runner = BashTaskRunner
+
+# If set, tasks without a `run_as_user` argument will be run with this user
+# Can be used to de-elevate a sudo user running Airflow when executing tasks
+default_impersonation =
+
+# What security module to use (for example kerberos):
+security =
+
+# If set to False enables some unsecure features like Charts and Ad Hoc Queries.
+# In 2.0 will default to True.
+secure_mode = False
+
+# Turn unit test mode on (overwrites many configuration options with test
+# values at runtime)
+unit_test_mode = False
+
+# Name of handler to read task instance logs.
+# Default to use task handler.
+task_log_reader = task
+
+# Whether to enable pickling for xcom (note that this is insecure and allows for
+# RCE exploits). This will be deprecated in Airflow 2.0 (be forced to False).
+enable_xcom_pickling = True
+
+# When a task is killed forcefully, this is the amount of time in seconds that
+# it has to cleanup after it is sent a SIGTERM, before it is SIGKILLED
+killed_task_cleanup_time = 60
+
+# Whether to override params with dag_run.conf. If you pass some key-value pairs through `airflow backfill -c` or
+# `airflow trigger_dag -c`, the key-value pairs will override the existing ones in params.
+dag_run_conf_overrides_params = False
+
+# Worker initialisation check to validate Metadata Database connection
+worker_precheck = False
+
+# When discovering DAGs, ignore any files that don't contain the strings `DAG` and `airflow`.
+dag_discovery_safe_mode = True
+
+[cli]
+# In what way should the cli access the API. The LocalClient will use the
+# database directly, while the json_client will use the api running on the
+# webserver
+api_client = airflow.api.client.local_client
+
+# If you set web_server_url_prefix, do NOT forget to append it here, ex:
+# endpoint_url = http://localhost:8080/myroot
+# So api will look like: http://localhost:8080/myroot/api/experimental/...
+endpoint_url = http://localhost:8080
+
+[api]
+# How to authenticate users of the API
+auth_backend = airflow.api.auth.backend.default
+
+[lineage]
+# what lineage backend to use
+backend =
+
+[atlas]
+sasl_enabled = False
+host =
+port = 21000
+username =
+password =
+
+[operators]
+# The default owner assigned to each new operator, unless
+# provided explicitly or passed via `default_args`
+default_owner = Airflow
+default_cpus = 1
+default_ram = 512
+default_disk = 512
+default_gpus = 0
+
+[hive]
+# Default mapreduce queue for HiveOperator tasks
+default_hive_mapred_queue =
+# Template for mapred_job_name in HiveOperator, supports the following named parameters:
+# hostname, dag_id, task_id, execution_date
+mapred_job_name_template = Airflow HiveOperator task for {hostname}.{dag_id}.{task_id}.{execution_date}
+
+[webserver]
+# The base url of your website as airflow cannot guess what domain or
+# cname you are using. This is used in automated emails that
+# airflow sends to point links to the right web server
+base_url = http://localhost:8080
+
+# The ip specified when starting the web server
+web_server_host = 0.0.0.0
+
+# The port on which to run the web server
+web_server_port = 8080
+
+# Paths to the SSL certificate and key for the web server. When both are
+# provided SSL will be enabled. This does not change the web server port.
+web_server_ssl_cert =
+web_server_ssl_key =
+
+# Number of seconds the webserver waits before killing gunicorn master that doesn't respond
+web_server_master_timeout = 120
+
+# Number of seconds the gunicorn webserver waits before timing out on a worker
+web_server_worker_timeout = 120
+
+# Number of workers to refresh at a time. When set to 0, worker refresh is
+# disabled. When nonzero, airflow periodically refreshes webserver workers by
+# bringing up new ones and killing old ones.
+worker_refresh_batch_size = 1
+
+# Number of seconds to wait before refreshing a batch of workers.
+worker_refresh_interval = 30
+
+# Secret key used to run your flask app
+secret_key = temporary_key
+
+# Number of workers to run the Gunicorn web server
+workers = 4
+
+# The worker class gunicorn should use. Choices include
+# sync (default), eventlet, gevent
+worker_class = sync
+
+# Log files for the gunicorn webserver. '-' means log to stderr.
+access_logfile = -
+error_logfile = -
+
+# Expose the configuration file in the web server
+# This is only applicable for the flask-admin based web UI (non FAB-based).
+# In the FAB-based web UI with RBAC feature,
+# access to configuration is controlled by role permissions.
+expose_config = True
+
+# Set to true to turn on authentication:
+# https://airflow.apache.org/security.html#web-authentication
+authenticate = False
+
+# Filter the list of dags by owner name (requires authentication to be enabled)
+filter_by_owner = False
+
+# Filtering mode. Choices include user (default) and ldapgroup.
+# Ldap group filtering requires using the ldap backend
+#
+# Note that the ldap server needs the "memberOf" overlay to be set up
+# in order to user the ldapgroup mode.
+owner_mode = user
+
+# Default DAG view.  Valid values are:
+# tree, graph, duration, gantt, landing_times
+dag_default_view = tree
+
+# Default DAG orientation. Valid values are:
+# LR (Left->Right), TB (Top->Bottom), RL (Right->Left), BT (Bottom->Top)
+dag_orientation = LR
+
+# Puts the webserver in demonstration mode; blurs the names of Operators for
+# privacy.
+demo_mode = False
+
+# The amount of time (in secs) webserver will wait for initial handshake
+# while fetching logs from other worker machine
+log_fetch_timeout_sec = 5
+
+# By default, the webserver shows paused DAGs. Flip this to hide paused
+# DAGs by default
+hide_paused_dags_by_default = False
+
+# Consistent page size across all listing views in the UI
+page_size = 100
+
+# Use FAB-based webserver with RBAC feature
+rbac = False
+
+# Define the color of navigation bar
+navbar_color = #007A87
+
+# Default dagrun to show in UI
+default_dag_run_display_number = 25
+
+# Enable werkzeug `ProxyFix` middleware
+enable_proxy_fix = False
+
+# Set secure flag on session cookie
+cookie_secure = False
+
+# Set samesite policy on session cookie
+cookie_samesite =
+
+[email]
+email_backend = airflow.utils.email.send_email_smtp
+
+[smtp]
+# If you want airflow to send emails on retries, failure, and you want to use
+# the airflow.utils.email.send_email_smtp function, you have to configure an
+# smtp server here
+smtp_host = localhost
+smtp_starttls = True
+smtp_ssl = False
+# Uncomment and set the user/pass settings if you want to use SMTP AUTH
+# smtp_user = airflow
+# smtp_password = airflow
+smtp_port = 25
+smtp_mail_from = airflow@example.com
+
+[celery]
+# This section only applies if you are using the CeleryExecutor in
+# [core] section above
+
+# The app name that will be used by celery
+celery_app_name = airflow.executors.celery_executor
+
+# The concurrency that will be used when starting workers with the
+# "airflow worker" command. This defines the number of task instances that
+# a worker will take, so size up your workers based on the resources on
+# your worker box and the nature of your tasks
+worker_concurrency = 16
+
+# The maximum and minimum concurrency that will be used when starting workers with the
+# "airflow worker" command (always keep minimum processes, but grow to maximum if necessary).
+# Note the value should be "max_concurrency,min_concurrency"
+# Pick these numbers based on resources on worker box and the nature of the task.
+# If autoscale option is available, worker_concurrency will be ignored.
+# http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-autoscale
+# worker_autoscale = 16,12
+
+# When you start an airflow worker, airflow starts a tiny web server
+# subprocess to serve the workers local log files to the airflow main
+# web server, who then builds pages and sends them to users. This defines
+# the port on which the logs are served. It needs to be unused, and open
+# visible from the main web server to connect into the workers.
+worker_log_server_port = 8793
+
+# The Celery broker URL. Celery supports RabbitMQ, Redis and experimentally
+# a sqlalchemy database. Refer to the Celery documentation for more
+# information.
+# http://docs.celeryproject.org/en/latest/userguide/configuration.html#broker-settings
+broker_url = redis://redis:6379/1
+
+# The Celery result_backend. When a job finishes, it needs to update the
+# metadata of the job. Therefore it will post a message on a message bus,
+# or insert it into a database (depending of the backend)
+# This status is used by the scheduler to update the state of the task
+# The use of a database is highly recommended
+# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-result-backend-settings
+result_backend = db+postgresql://airflow:airflow@postgres/airflow
+
+# Celery Flower is a sweet UI for Celery. Airflow has a shortcut to start
+# it `airflow flower`. This defines the IP that Celery Flower runs on
+flower_host = 0.0.0.0
+
+# The root URL for Flower
+# Ex: flower_url_prefix = /flower
+flower_url_prefix =
+
+# This defines the port that Celery Flower runs on
+flower_port = 5555
+
+# Securing Flower with Basic Authentication
+# Accepts user:password pairs separated by a comma
+# Example: flower_basic_auth = user1:password1,user2:password2
+flower_basic_auth =
+
+# Default queue that tasks get assigned to and that worker listen on.
+default_queue = default
+
+# How many processes CeleryExecutor uses to sync task state.
+# 0 means to use max(1, number of cores - 1) processes.
+sync_parallelism = 0
+
+# Import path for celery configuration options
+celery_config_options = airflow.config_templates.default_celery.DEFAULT_CELERY_CONFIG
+
+# In case of using SSL
+ssl_active = False
+ssl_key =
+ssl_cert =
+ssl_cacert =
+
+[celery_broker_transport_options]
+# This section is for specifying options which can be passed to the
+# underlying celery broker transport.  See:
+# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-broker_transport_options
+
+# The visibility timeout defines the number of seconds to wait for the worker
+# to acknowledge the task before the message is redelivered to another worker.
+# Make sure to increase the visibility timeout to match the time of the longest
+# ETA you're planning to use.
+#
+# visibility_timeout is only supported for Redis and SQS celery brokers.
+# See:
+#   http://docs.celeryproject.org/en/master/userguide/configuration.html#std:setting-broker_transport_options
+#
+#visibility_timeout = 21600
+
+[dask]
+# This section only applies if you are using the DaskExecutor in
+# [core] section above
+
+# The IP address and port of the Dask cluster's scheduler.
+cluster_address = 127.0.0.1:8786
+# TLS/ SSL settings to access a secured Dask scheduler.
+tls_ca =
+tls_cert =
+tls_key =
+
+[scheduler]
+# Task instances listen for external kill signal (when you clear tasks
+# from the CLI or the UI), this defines the frequency at which they should
+# listen (in seconds).
+job_heartbeat_sec = 5
+
+# The scheduler constantly tries to trigger new tasks (look at the
+# scheduler section in the docs for more information). This defines
+# how often the scheduler should run (in seconds).
+scheduler_heartbeat_sec = 5
+
+# after how much time should the scheduler terminate in seconds
+# -1 indicates to run continuously (see also num_runs)
+run_duration = -1
+
+# after how much time (seconds) a new DAGs should be picked up from the filesystem
+min_file_process_interval = 0
+
+# How often (in seconds) to scan the DAGs directory for new files. Default to 5 minutes.
+dag_dir_list_interval = 300
+
+# How often should stats be printed to the logs
+print_stats_interval = 30
+
+# If the last scheduler heartbeat happened more than scheduler_health_check_threshold ago (in seconds),
+# scheduler is considered unhealthy.
+# This is used by the health check in the "/health" endpoint
+# This is used by the health check in the "/health" endpoint
+scheduler_health_check_threshold = 30
+
+child_process_log_directory = /home/airflow/airflow/logs/scheduler
+
+# Local task jobs periodically heartbeat to the DB. If the job has
+# not heartbeat in this many seconds, the scheduler will mark the
+# associated task instance as failed and will re-schedule the task.
+scheduler_zombie_task_threshold = 300
+
+# Turn off scheduler catchup by setting this to False.
+# Default behavior is unchanged and
+# Command Line Backfills still work, but the scheduler
+# will not do scheduler catchup if this is False,
+# however it can be set on a per DAG basis in the
+# DAG definition (catchup)
+catchup_by_default = True
+
+# This changes the batch size of queries in the scheduling main loop.
+# If this is too high, SQL query performance may be impacted by one
+# or more of the following:
+#  - reversion to full table scan
+#  - complexity of query predicate
+#  - excessive locking
+#
+# Additionally, you may hit the maximum allowable query length for your db.
+#
+# Set this to 0 for no limit (not advised)
+max_tis_per_query = 512
+
+# Statsd (https://github.com/etsy/statsd) integration settings
+statsd_on = False
+statsd_host = localhost
+statsd_port = 8125
+statsd_prefix = airflow
+
+# The scheduler can run multiple threads in parallel to schedule dags.
+# This defines how many threads will run.
+max_threads = 2
+
+authenticate = False
+
+# Turn off scheduler use of cron intervals by setting this to False.
+# DAGs submitted manually in the web UI or with trigger_dag will still run.
+use_job_schedule = True
+
+[ldap]
+# set this to ldaps://<your.ldap.server>:<port>
+uri =
+user_filter = objectClass=*
+user_name_attr = uid
+group_member_attr = memberOf
+superuser_filter =
+data_profiler_filter =
+bind_user = cn=Manager,dc=example,dc=com
+bind_password = insecure
+basedn = dc=example,dc=com
+cacert = /etc/ca/ldap_ca.crt
+search_scope = LEVEL
+
+# This setting allows the use of LDAP servers that either return a
+# broken schema, or do not return a schema.
+ignore_malformed_schema = False
+
+[mesos]
+# Mesos master address which MesosExecutor will connect to.
+master = localhost:5050
+
+# The framework name which Airflow scheduler will register itself as on mesos
+framework_name = Airflow
+
+# Number of cpu cores required for running one task instance using
+# 'airflow run <dag_id> <task_id> <execution_date> --local -p <pickle_id>'
+# command on a mesos slave
+task_cpu = 1
+
+# Memory in MB required for running one task instance using
+# 'airflow run <dag_id> <task_id> <execution_date> --local -p <pickle_id>'
+# command on a mesos slave
+task_memory = 256
+
+# Enable framework checkpointing for mesos
+# See http://mesos.apache.org/documentation/latest/slave-recovery/
+checkpoint = False
+
+# Failover timeout in milliseconds.
+# When checkpointing is enabled and this option is set, Mesos waits
+# until the configured timeout for
+# the MesosExecutor framework to re-register after a failover. Mesos
+# shuts down running tasks if the
+# MesosExecutor framework fails to re-register within this timeframe.
+# failover_timeout = 604800
+
+# Enable framework authentication for mesos
+# See http://mesos.apache.org/documentation/latest/configuration/
+authenticate = False
+
+# Mesos credentials, if authentication is enabled
+# default_principal = admin
+# default_secret = admin
+
+# Optional Docker Image to run on slave before running the command
+# This image should be accessible from mesos slave i.e mesos slave
+# should be able to pull this docker image before executing the command.
+# docker_image_slave = puckel/docker-airflow
+
+[kerberos]
+ccache = /tmp/airflow_krb5_ccache
+# gets augmented with fqdn
+principal = airflow
+reinit_frequency = 3600
+kinit_path = kinit
+keytab = airflow.keytab
+
+[github_enterprise]
+api_rev = v3
+
+[admin]
+# UI to hide sensitive variable fields when set to True
+hide_sensitive_variable_fields = True
+
+[elasticsearch]
+elasticsearch_host =
+# we need to escape the curly braces by adding an additional curly brace
+elasticsearch_log_id_template = {dag_id}-{task_id}-{execution_date}-{try_number}
+elasticsearch_end_of_log_mark = end_of_log
+
+[kubernetes]
+# The repository, tag and imagePullPolicy of the Kubernetes Image for the Worker to Run
+worker_container_repository =
+worker_container_tag =
+worker_container_image_pull_policy = IfNotPresent
+
+# If True (default), worker pods will be deleted upon termination
+delete_worker_pods = True
+
+# Number of Kubernetes Worker Pod creation calls per scheduler loop
+worker_pods_creation_batch_size = 1
+
+# The Kubernetes namespace where airflow workers should be created. Defaults to `default`
+namespace = default
+
+# The name of the Kubernetes ConfigMap Containing the Airflow Configuration (this file)
+airflow_configmap =
+
+# For docker image already contains DAGs, this is set to `True`, and the worker will search for dags in dags_folder,
+# otherwise use git sync or dags volume claim to mount DAGs
+dags_in_image = False
+
+# For either git sync or volume mounted DAGs, the worker will look in this subpath for DAGs
+dags_volume_subpath =
+
+# For DAGs mounted via a volume claim (mutually exclusive with git-sync and host path)
+dags_volume_claim =
+
+# For volume mounted logs, the worker will look in this subpath for logs
+logs_volume_subpath =
+
+# A shared volume claim for the logs
+logs_volume_claim =
+
+
+# For DAGs mounted via a hostPath volume (mutually exclusive with volume claim and git-sync)
+# Useful in local environment, discouraged in production
+dags_volume_host =
+
+# A hostPath volume for the logs
+# Useful in local environment, discouraged in production
+logs_volume_host =
+
+# A list of configMapsRefs to envFrom. If more than one configMap is
+# specified, provide a comma separated list: configmap_a,configmap_b
+env_from_configmap_ref =
+
+# A list of secretRefs to envFrom. If more than one secret is
+# specified, provide a comma separated list: secret_a,secret_b
+env_from_secret_ref =
+
+# Git credentials and repository for DAGs mounted via Git (mutually exclusive with volume claim)
+git_repo =
+git_branch =
+git_subpath =
+# Use git_user and git_password for user authentication or git_ssh_key_secret_name and git_ssh_key_secret_key
+# for SSH authentication
+git_user =
+git_password =
+git_sync_root = /git
+git_sync_dest = repo
+# Mount point of the volume if git-sync is being used.
+# i.e. /root/airflow/dags
+git_dags_folder_mount_point =
+
+# To get Git-sync SSH authentication set up follow this format
+#
+# airflow-secrets.yaml:
+# ---
+# apiVersion: v1
+# kind: Secret
+# metadata:
+#   name: airflow-secrets
+# data:
+#   # key needs to be gitSshKey
+#   gitSshKey: <base64_encoded_data>
+# ---
+# airflow-configmap.yaml:
+# apiVersion: v1
+# kind: ConfigMap
+# metadata:
+#   name: airflow-configmap
+# data:
+#   known_hosts: |
+#       github.com ssh-rsa <...>
+#   airflow.cfg: |
+#       ...
+#
+# git_ssh_key_secret_name = airflow-secrets
+# git_ssh_known_hosts_configmap_name = airflow-configmap
+git_ssh_key_secret_name =
+git_ssh_known_hosts_configmap_name =
+
+# For cloning DAGs from git repositories into volumes: https://github.com/kubernetes/git-sync
+git_sync_container_repository = k8s.gcr.io/git-sync
+git_sync_container_tag = v3.1.1
+git_sync_init_container_name = git-sync-clone
+
+# The name of the Kubernetes service account to be associated with airflow workers, if any.
+# Service accounts are required for workers that require access to secrets or cluster resources.
+# See the Kubernetes RBAC documentation for more:
+#   https://kubernetes.io/docs/admin/authorization/rbac/
+worker_service_account_name =
+
+# Any image pull secrets to be given to worker pods, If more than one secret is
+# required, provide a comma separated list: secret_a,secret_b
+image_pull_secrets =
+
+# GCP Service Account Keys to be provided to tasks run on Kubernetes Executors
+# Should be supplied in the format: key-name-1:key-path-1,key-name-2:key-path-2
+gcp_service_account_keys =
+
+# Use the service account kubernetes gives to pods to connect to kubernetes cluster.
+# It's intended for clients that expect to be running inside a pod running on kubernetes.
+# It will raise an exception if called from a process not running in a kubernetes environment.
+in_cluster = True
+
+# When running with in_cluster=False change the default cluster_context or config_file
+# options to Kubernetes client. Leave blank these to use default behaviour like `kubectl` has.
+# cluster_context =
+# config_file =
+
+
+# Affinity configuration as a single line formatted JSON object.
+# See the affinity model for top-level key names (e.g. `nodeAffinity`, etc.):
+#   https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#affinity-v1-core
+affinity =
+
+# A list of toleration objects as a single line formatted JSON array
+# See:
+#   https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#toleration-v1-core
+tolerations =
+
+# Worker pods security context options
+# See:
+#   https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
+
+# Specifies the uid to run the first process of the worker pods containers as
+run_as_user =
+
+# Specifies a gid to associate with all containers in the worker pods
+# if using a git_ssh_key_secret_name use an fs_group
+# that allows for the key to be read, e.g. 65533
+fs_group =
+
+[kubernetes_node_selectors]
+# The Key-value pairs to be given to worker pods.
+# The worker pods will be scheduled to the nodes of the specified key-value pairs.
+# Should be supplied in the format: key = value
+
+[kubernetes_annotations]
+# The Key-value annotations pairs to be given to worker pods.
+# Should be supplied in the format: key = value
+
+[kubernetes_environment_variables]
+# The scheduler sets the following environment variables into your workers. You may define as
+# many environment variables as needed and the kubernetes launcher will set them in the launched workers.
+# Environment variables in this section are defined as follows
+#     <environment_variable_key> = <environment_variable_value>
+#
+# For example if you wanted to set an environment variable with value `prod` and key
+# `ENVIRONMENT` you would follow the following format:
+#     ENVIRONMENT = prod
+#
+# Additionally you may override worker airflow settings with the AIRFLOW__<SECTION>__<KEY>
+# formatting as supported by airflow normally.
+
+[kubernetes_secrets]
+# The scheduler mounts the following secrets into your workers as they are launched by the
+# scheduler. You may define as many secrets as needed and the kubernetes launcher will parse the
+# defined secrets and mount them as secret environment variables in the launched workers.
+# Secrets in this section are defined as follows
+#     <environment_variable_mount> = <kubernetes_secret_object>=<kubernetes_secret_key>
+#
+# For example if you wanted to mount a kubernetes secret key named `postgres_password` from the
+# kubernetes secret object `airflow-secret` as the environment variable `POSTGRES_PASSWORD` into
+# your workers you would follow the following format:
+#     POSTGRES_PASSWORD = airflow-secret=postgres_credentials
+#
+# Additionally you may override worker airflow settings with the AIRFLOW__<SECTION>__<KEY>
+# formatting as supported by airflow normally.
diff --git a/docker-compose-LocalExecutor.yml b/docker/docker-compose.yml
similarity index 71%
rename from docker-compose-LocalExecutor.yml
rename to docker/docker-compose.yml
index 13d480b..3f14ec5 100644
--- a/docker-compose-LocalExecutor.yml
+++ b/docker/docker-compose.yml
@@ -23,22 +23,20 @@
             - POSTGRES_USER=airflow
             - POSTGRES_PASSWORD=airflow
             - POSTGRES_DB=airflow
+        ports:
+            - "5432:5432"
 
-    webserver:
-        image: opencord/cord-workflow-airflow
+    controller:
+        image: opencord/cord-workflow-controller:0.5.0
+        ports:
+            - "3030:3030"
+
+    airflow:
+        # image: opencord/cord-workflow-airflow
+        image: cord-workflow-airflow:0.5.0
         restart: always
         depends_on:
             - postgres
-        environment:
-            - LOAD_EX=n
-            - EXECUTOR=Local
-        volumes:
-            - ./dags:/usr/local/airflow/dags
+            - controller
         ports:
             - "8080:8080"
-        command: webserver
-        healthcheck:
-            test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
-            interval: 30s
-            timeout: 30s
-            retries: 3
diff --git a/docker/script/entrypoint.sh b/docker/script/entrypoint.sh
new file mode 100755
index 0000000..9cf381f
--- /dev/null
+++ b/docker/script/entrypoint.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+
+# Copyright Matthieu "Puckel_" Roisil (https://github.com/puckel)
+#
+# 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.
+
+POSTGRES_HOST="postgres"
+POSTGRES_PORT=5432
+POSTGRES_USER="airflow"
+POSTGRES_PASSWORD="airflow"
+POSTGRES_DB="airflow"
+
+export AIRFLOW__CORE__FERNET_KEY=$(python -c "from cryptography.fernet import Fernet; fk = Fernet.generate_key().decode(); print(fk)")
+echo "export AIRFLOW__CORE__FERNET_KEY=${AIRFLOW__CORE__FERNET_KEY}" >> ~/.bashrc
+export AIRFLOW__CORE__LOAD_EXAMPLES=False
+echo "export AIRFLOW__CORE__LOAD_EXAMPLES=${AIRFLOW__CORE__LOAD_EXAMPLES}" >> ~/.bashrc
+export AIRFLOW__CORE__SQL_ALCHEMY_CONN="postgresql+psycopg2://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB"
+echo "export AIRFLOW__CORE__SQL_ALCHEMY_CONN=${AIRFLOW__CORE__SQL_ALCHEMY_CONN}" >> ~/.bashrc
+
+TRY=20
+
+wait_for_port() {
+  local name="$1" host="$2" port="$3"
+  local j=0
+  while ! nc -z "$host" "$port" >/dev/null 2>&1 < /dev/null; do
+    j=$((j+1))
+    if [ $j -ge $TRY ]; then
+      echo >&2 "$(date) - $host:$port still not reachable, giving up"
+      exit 1
+    fi
+    echo "$(date) - waiting for $name... $j/$TRY"
+    sleep 5
+  done
+}
+
+wait_for_port "Postgres" "$POSTGRES_HOST" "$POSTGRES_PORT"
+
+airflow initdb
+airflow scheduler &
+airflow webserver
diff --git a/requirements.txt b/requirements.txt
index 0e6a84b..05986fb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,8 +1,8 @@
 jinja2~=2.10.1
 werkzeug~=0.15
-apache-airflow~=1.10.2
+apache-airflow~=1.10.3
 multistructlog~=2.1.0
 pyfiglet~=0.7
-cord-workflow-controller-client~=0.2.0
+cord-workflow-controller-client~=0.5.0
 xossynchronizer~=3.2.6
 xosapi~=3.2.6
\ No newline at end of file
diff --git a/src/cord_workflow_airflow_extensions/config.yml b/src/cord_workflow_airflow_extensions/config.yml
new file mode 100644
index 0000000..a137ecd
--- /dev/null
+++ b/src/cord_workflow_airflow_extensions/config.yml
@@ -0,0 +1,29 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+name: cord-workflow-airflow-extensions
+accessor:
+  username: "admin@opencord.org"
+  password: "letmein"
+  endpoint: "xos-core:50051"
+logging:
+  version: 1
+  handlers:
+    console:
+      class: logging.StreamHandler
+  loggers:
+    '':
+      handlers:
+        - console
+      level: DEBUG
diff --git a/src/cord_workflow_airflow_extensions/cord_workflow_plugin.py b/src/cord_workflow_airflow_extensions/cord_workflow_plugin.py
index 152862f..2532477 100644
--- a/src/cord_workflow_airflow_extensions/cord_workflow_plugin.py
+++ b/src/cord_workflow_airflow_extensions/cord_workflow_plugin.py
@@ -65,13 +65,28 @@
             # find connection info from database or environment
             # ENV: AIRFLOW_CONN_CORD_CONTROLLER_DEFAULT
             connection_params = self.get_connection(self.controller_conn_id)
-            # connection_params have three fields
+            # 'connection_params' has following fields
+            # schema
             # host
+            # port
             # login - we don't use this yet
             # password - we don't use this yet
             try:
                 self.workflow_run_client = WorkflowRun(self.workflow_id, self.workflow_run_id)
-                self.workflow_run_client.connect(connection_params.host)
+                schema = connection_params.schema
+                if not schema:
+                    schema = 'http'
+
+                host = connection_params.host
+                if not host:
+                    host = 'localhost'
+
+                port = connection_params.port
+                if (not port) or (port <= 0):
+                    port = 3030
+
+                url = '%s://%s:%s' % (schema, host, port)
+                self.workflow_run_client.connect(url)
             except BaseException as ex:
                 raise CORDWorkflowControllerException(ex)
 
@@ -89,17 +104,6 @@
 
         self.workflow_run_client = None
 
-    def update_status(self, task_id, status):
-        """
-        Update status of the workflow run.
-        'state' should be one of ['begin', 'end']
-        """
-        client = self.get_conn()
-        try:
-            return client.update_status(task_id, status)
-        except BaseException as ex:
-            raise CORDWorkflowControllerException(ex)
-
     def count_events(self):
         """
         Count queued events for the workflow run.
@@ -191,6 +195,8 @@
             **kwargs):
         super().__init__(*args, **kwargs)
 
+        self.log.debug('Initializing CORD EventSensor for topic %s' % topic)
+
         self.topic = topic
         self.key_field = key_field
         self.controller_conn_id = controller_conn_id
@@ -201,20 +207,20 @@
         """
         Return connection hook.
         """
+        self.log.debug('Creating a hook for run_id %s' % context['dag_run'].run_id)
         return CORDWorkflowControllerHook(self.dag_id, context['dag_run'].run_id, self.controller_conn_id)
 
     def execute(self, context):
         """
         Overridden to allow messages to be passed to next tasks via XCOM
         """
+        self.log.debug('Executing a task %s for run_id %s' % (self.task_id, context['dag_run'].run_id))
+
         if self.hook is None:
             self.hook = self.__create_hook(context)
 
-        self.hook.update_status(self.task_id, 'begin')
-
         super().execute(context)
 
-        self.hook.update_status(self.task_id, 'end')
         self.hook.close_conn()
         self.hook = None
         return self.message
@@ -223,6 +229,7 @@
         # we need to use notification to immediately react at event
         # https://github.com/apache/airflow/blob/master/airflow/sensors/base_sensor_operator.py#L122
         self.log.info('Poking : trying to fetch a message with a topic %s', self.topic)
+
         event = self.hook.fetch_event(self.task_id, self.topic)
         if event:
             self.message = event
@@ -244,7 +251,7 @@
             *args,
             **kwargs):
         topic = 'datamodel.%s' % model_name
-        super().__init__(topic=topic, *args, **kwargs)
+        super().__init__(topic=topic, key_field=key_field, controller_conn_id=controller_conn_id, *args, **kwargs)
 
 
 """
@@ -254,7 +261,7 @@
 
 # Defining the plugin class
 class CORD_Workflow_Airflow_Plugin(AirflowPlugin):
-    name = "CORD_Workflow_Airflow_Plugin"
+    name = "cord_workflow_plugin"
     operators = [CORDModelOperator]
     sensors = [CORDEventSensor, CORDModelSensor]
     hooks = [CORDWorkflowControllerHook]
diff --git a/src/cord_workflow_airflow_extensions/kickstarter.py b/src/cord_workflow_airflow_extensions/kickstarter.py
deleted file mode 100644
index 6f9924e..0000000
--- a/src/cord_workflow_airflow_extensions/kickstarter.py
+++ /dev/null
@@ -1,236 +0,0 @@
-#!/usr/bin/env python3
-
-# Copyright 2019-present Open Networking Foundation
-#
-# 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.
-
-"""
-Workflow Kickstarter
-
-This module kickstarts Airflow workflows for requests from Workflow Controller
-"""
-
-import json
-import os.path
-import argparse
-import pyfiglet
-import traceback
-import socket
-import time
-
-from multistructlog import create_logger
-from cord_workflow_controller_client.manager import Manager
-from importlib import import_module
-from urlparse import urlparse
-from airflow import configuration as AirflowConf
-from airflow import api
-from airflow.models import DagRun
-
-
-log = create_logger()
-manager = None
-airflow_client = None
-
-progargs = {
-    'controller_url': 'http://localhost:3030',
-    'logging': None
-}
-
-DEFAULT_CONFIG_FILE_PATH = '/etc/cord_workflow_airflow_extensions/config.json'
-SOCKET_CONNECTION_TEST_TIMEOUT = 5
-DEFAULT_CONNECTION_TEST_DELAY = 5
-DEFAULT_CONNECTION_TEST_RETRY = 999999
-
-
-def print_graffiti():
-    result = pyfiglet.figlet_format("CORD\nWorkflow\nKickstarter", font="graffiti")
-    print(result)
-
-
-def get_arg_parser():
-    parser = argparse.ArgumentParser(description='CORD Workflow Kickstarter Daemon.', prog='kickstarter')
-    parser.add_argument('--config', help='locate a configuration file')
-    parser.add_argument('--controller', help='CORD Workflow Controller URL')
-    return parser
-
-
-def read_config(path):
-    if os.path.exists(path):
-        with open(path) as json_config_file:
-            data = json.load(json_config_file)
-            return data
-    return {}
-
-
-def pretty_format_json(j):
-    dumps = json.dumps(j, sort_keys=True, indent=4, separators=(',', ': '))
-    return dumps
-
-
-def is_port_open(url, timeout):
-    o = urlparse(url)
-    hostname = o.hostname
-    port = o.port
-
-    if (not port) or port <= 0:
-        if o.scheme.lower() == 'http':
-            port = 80
-        elif o.scheme.lower() == 'https':
-            port = 443
-
-    succeed = False
-    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-    sock.settimeout(timeout)
-    try:
-        sock.connect((hostname, int(port)))
-        sock.shutdown(socket.SHUT_RDWR)
-        succeed = True
-    except BaseException:
-        pass
-    finally:
-        sock.close()
-
-    return succeed
-
-
-def check_web_live(url,
-                   retry=DEFAULT_CONNECTION_TEST_RETRY,
-                   delay=DEFAULT_CONNECTION_TEST_DELAY,
-                   timeout=SOCKET_CONNECTION_TEST_TIMEOUT):
-    ipup = False
-    for _ in range(retry):
-        if is_port_open(url, timeout):
-            ipup = True
-            break
-        else:
-            time.sleep(delay)
-    return ipup
-
-
-def on_kickstart(workflow_id, workflow_run_id):
-    if manager and airflow_client:
-        try:
-            log.info('> Kickstarting a workflow (%s) => workflow run (%s)' % (workflow_id, workflow_run_id))
-
-            airflow_client.trigger_dag(dag_id=workflow_id, run_id=workflow_run_id)
-            message = airflow_client.trigger_dag(
-                dag_id=workflow_id,
-                run_id=workflow_run_id
-            )
-            log.info('> Airflow Response: %s' % message)
-
-            # let controller know that the new workflow run is created
-            log.info('> Notifying a workflow (%s), a workflow run (%s)' % (workflow_id, workflow_run_id))
-            manager.notify_new_workflow_run(workflow_id, workflow_run_id)
-        except Exception as e:
-            log.error('> Error : %s' % e)
-            log.debug(traceback.format_exc())
-
-
-def on_check_state(workflow_id, workflow_run_id):
-    if manager and airflow_client:
-        try:
-            log.info('> Checking state of a workflow (%s) => workflow run (%s)' % (workflow_id, workflow_run_id))
-
-            run = DagRun.find(dag_id=workflow_id, run_id=workflow_run_id)
-            state = 'unknown'
-            if run:
-                # run is an array
-                # this should be one of ['success', 'running', 'failed']
-                state = run[0].state
-            else:
-                log.error(
-                    'Cannot retrieve state of a workflow run (%s, %s)' %
-                    (workflow_id, workflow_run_id)
-                )
-                state = 'unknown'
-
-            log.info('> state : %s' % state)
-
-            # let controller know the state of the workflow run
-            log.info(
-                '> Notifying update of state of a workflow (%s), a workflow run (%s) - state : %s' %
-                (workflow_id, workflow_run_id, state)
-            )
-            manager.report_workflow_run_state(workflow_id, workflow_run_id, state)
-        except Exception as e:
-            log.error('> Error : %s' % e)
-            log.debug(traceback.format_exc())
-
-
-# for command-line execution
-def main(args):
-    print_graffiti()
-
-    # check if config path is set
-    config_file_path = DEFAULT_CONFIG_FILE_PATH
-    if args.config:
-        config_file_path = args.config
-
-    if os.path.exists(config_file_path):
-        # read config
-        config = read_config(config_file_path)
-        if config:
-            global progargs
-            for k in progargs:
-                # overwrite
-                progargs[k] = config[k]
-
-    global log
-    log = create_logger(progargs["logging"])
-
-    if args.controller:
-        progargs['controller_url'] = args.controller
-
-    print('=CONFIG=')
-    config_json_string = pretty_format_json(progargs)
-    print(config_json_string)
-    print('\n')
-
-    # checking controller and airflow web interface
-    log.info('Checking if Workflow Controller (%s) is live...' % progargs['controller_url'])
-    controller_live = check_web_live(progargs['controller_url'])
-    if not controller_live:
-        log.error('Controller (%s) appears to be down' % progargs['controller_url'])
-        raise IOError('Controller (%s) appears to be down' % progargs['controller_url'])
-
-    # connect to workflow controller
-    log.info('Connecting to Workflow Controller (%s)...' % progargs['controller_url'])
-    global manager
-    manager = Manager(logger=log)
-    manager.connect(progargs['controller_url'])
-    manager.set_handlers({'kickstart': on_kickstart})
-
-    # connect to airflow
-    global airflow_client
-    log.info('Connecting to Airflow...')
-
-    api.load_auth()
-    api_module = import_module(AirflowConf.get('cli', 'api_client'))
-    airflow_client = api_module.Client(
-        api_base_url=AirflowConf.get('cli', 'endpoint_url'),
-        auth=api.api_auth.client_auth
-    )
-
-    log.info('Waiting for kickstart events from Workflow Controller...')
-    try:
-        manager.wait()
-    finally:
-        log.info('Terminating the program...')
-        manager.disconnect()
-
-
-if __name__ == "__main__":
-    parser = get_arg_parser()
-    args = parser.parse_args()
-    main(args)
diff --git a/src/tools/__init__.py b/src/tools/__init__.py
new file mode 100644
index 0000000..19d1424
--- /dev/null
+++ b/src/tools/__init__.py
@@ -0,0 +1,13 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
diff --git a/src/tools/config.json b/src/tools/config.json
new file mode 100644
index 0000000..601d686
--- /dev/null
+++ b/src/tools/config.json
@@ -0,0 +1,4 @@
+{
+    "controller_url": "http://controller:3030",
+    "airflow_bin": "/usr/local/bin"
+}
diff --git a/src/cord_workflow_airflow_extensions/essence_extractor.py b/src/tools/essence_extractor.py
similarity index 99%
rename from src/cord_workflow_airflow_extensions/essence_extractor.py
rename to src/tools/essence_extractor.py
index 72c8fdb..6335dc8 100644
--- a/src/cord_workflow_airflow_extensions/essence_extractor.py
+++ b/src/tools/essence_extractor.py
@@ -611,7 +611,8 @@
             global progargs
             for k in progargs:
                 # overwrite
-                progargs[k] = config[k]
+                if k in config:
+                    progargs[k] = config[k]
 
     log = create_logger(progargs["logging"])
 
diff --git a/src/tools/kickstarter.py b/src/tools/kickstarter.py
new file mode 100644
index 0000000..7c5a9de
--- /dev/null
+++ b/src/tools/kickstarter.py
@@ -0,0 +1,377 @@
+#!/usr/bin/env python3
+
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+"""
+Workflow Kickstarter
+
+This module kickstarts Airflow workflows for requests from Workflow Controller
+"""
+
+import json
+import os
+import os.path
+import argparse
+import pyfiglet
+import traceback
+import socket
+import time
+import subprocess
+
+from multistructlog import create_logger
+from cord_workflow_controller_client.manager import Manager
+
+# We can't use experimental APIs for managing workflows/workflow runs of Airflow
+# - REST API does not provide sufficient features at this version
+# - API_Client does not work if a caller is not in main thread
+
+# from importlib import import_module
+# from airflow import configuration as AirflowConf
+# from airflow import api
+# from airflow.models import DagRun
+
+try:
+    from urllib.parse import urlparse
+except ImportError:
+    from urlparse import urlparse
+
+log = create_logger()
+manager = None
+# airflow_client = None
+
+airflow_bin = os.getenv('AIRFLOW_BIN', '/usr/local/bin')
+
+progargs = {
+    'controller_url': 'http://localhost:3030',
+    'airflow_bin': airflow_bin,
+    'logging': None
+}
+
+DEFAULT_CONFIG_FILE_PATH = '/etc/cord_workflow_airflow_extensions/config.json'
+SOCKET_CONNECTION_TEST_TIMEOUT = 5
+DEFAULT_CONNECTION_TEST_DELAY = 5
+DEFAULT_CONNECTION_TEST_RETRY = 999999
+
+
+def print_graffiti():
+    result = pyfiglet.figlet_format("CORD\nWorkflow\nKickstarter", font="graffiti")
+    print(result)
+
+
+def get_arg_parser():
+    parser = argparse.ArgumentParser(description='CORD Workflow Kickstarter Daemon.', prog='kickstarter')
+    parser.add_argument('--config', help='locate a configuration file')
+    parser.add_argument('--controller', help='CORD Workflow Controller URL')
+    return parser
+
+
+def read_config(path):
+    if os.path.exists(path):
+        with open(path) as json_config_file:
+            data = json.load(json_config_file)
+            return data
+    return {}
+
+
+def pretty_format_json(j):
+    dumps = json.dumps(j, sort_keys=True, indent=4, separators=(',', ': '))
+    return dumps
+
+
+def is_port_open(url, timeout):
+    o = urlparse(url)
+    hostname = o.hostname
+    port = o.port
+
+    if (not port) or port <= 0:
+        if o.scheme.lower() == 'http':
+            port = 80
+        elif o.scheme.lower() == 'https':
+            port = 443
+
+    succeed = False
+    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    sock.settimeout(timeout)
+    try:
+        sock.connect((hostname, int(port)))
+        sock.shutdown(socket.SHUT_RDWR)
+        succeed = True
+    except BaseException:
+        pass
+    finally:
+        sock.close()
+
+    return succeed
+
+
+def check_web_live(url,
+                   retry=DEFAULT_CONNECTION_TEST_RETRY,
+                   delay=DEFAULT_CONNECTION_TEST_DELAY,
+                   timeout=SOCKET_CONNECTION_TEST_TIMEOUT):
+    ipup = False
+    for _ in range(retry):
+        if is_port_open(url, timeout):
+            ipup = True
+            break
+        else:
+            time.sleep(delay)
+    return ipup
+
+
+def get_airflow_cli():
+    return os.path.join(progargs['airflow_bin'], 'airflow')
+
+
+def check_airflow_live():
+    try:
+        subprocess.check_call([get_airflow_cli(), 'list_dags'])
+        return True
+    except subprocess.CalledProcessError as e:
+        log.error(e)
+        return False
+
+
+def on_kickstart(workflow_id, workflow_run_id):
+    # if manager and airflow_client:
+    if manager:
+        try:
+            created = False
+            log.info('> Kickstarting a workflow (%s) => workflow run (%s)' % (workflow_id, workflow_run_id))
+            # message = airflow_client.trigger_dag(
+            #     dag_id=workflow_id,
+            #     run_id=workflow_run_id
+            # )
+            # log.info('> Airflow Response: %s' % message)
+
+            output = subprocess.Popen(
+                [get_airflow_cli(), 'trigger_dag', '-r', workflow_run_id, workflow_id],
+                stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
+                encoding='utf8'
+            )
+
+            for line in output.stdout.readlines():
+                if 'Created <DagRun ' in line:
+                    created = True
+                    break
+
+            if created:
+                # let controller know that the new workflow run is created
+                log.info('> Notifying a new workflow run (%s) for a workflow (%s)' % (workflow_run_id, workflow_id))
+                manager.report_new_workflow_run(workflow_id, workflow_run_id)
+        except subprocess.CalledProcessError as e:
+            # when shell exited with non-zero code
+            log.error('> Error : %s' % e)
+        except Exception as e:
+            log.error('> Error : %s' % e)
+            log.debug(traceback.format_exc())
+
+
+def on_check_status(workflow_id, workflow_run_id):
+    # if manager and airflow_client:
+    if manager:
+        try:
+            status = 'unknown'
+            log.info('> Checking status of workflow run (%s)' % (workflow_run_id))
+
+            # run = DagRun.find(dag_id=workflow_id, run_id=workflow_run_id)
+            # status = 'unknown'
+            # if run:
+            #     # run is an array
+            #     # this should be one of ['success', 'running', 'failed']
+            #     status = run[0].state
+            # else:
+            #     log.error(
+            #         'Cannot retrieve status of a workflow run (%s, %s)' %
+            #         (workflow_id, workflow_run_id)
+            #     )
+            #     status = 'unknown'
+
+            output = subprocess.Popen(
+                [get_airflow_cli(), 'list_dag_runs', workflow_id],
+                stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
+                encoding='utf8'
+            )
+
+            title = False
+            body = False
+            for line in output.stdout.readlines():
+                if 'DAG RUNS' in line:
+                    title = True
+                elif title and ('--------' in line):
+                    body = True
+                elif body:
+                    # id  | run_id | state | execution_date | state_date |
+                    if workflow_run_id in line:
+                        # found the line
+                        # 1 | ssss | running | 2019-07-25T21:35:06+00:00 |
+                        # 2019-07-25T21:35:06.242130+00:00 |
+                        fields = line.split('|')
+                        status = fields[2].strip()
+                        break
+
+            log.info('> status : %s' % status)
+
+            # let controller know the status of the workflow run
+            log.info(
+                '> Updating status of a workflow run (%s) - status : %s' %
+                (workflow_run_id, status)
+            )
+            manager.report_workflow_run_status(workflow_id, workflow_run_id, status)
+        except subprocess.CalledProcessError as e:
+            # when shell exited with non-zero code
+            log.error('> Error : %s' % e)
+        except Exception as e:
+            log.error('> Error : %s' % e)
+            log.debug(traceback.format_exc())
+
+
+def on_check_status_bulk(requests):
+    # if manager and airflow_client:
+    if requests:
+        req = {}
+        for req in requests:
+            workflow_id = req['workflow_id']
+            workflow_run_id = req['workflow_run_id']
+
+            if workflow_id not in req:
+                req[workflow_id] = []
+
+            req[workflow_id].append(workflow_run_id)
+
+        if manager:
+            try:
+                log.info('> Checking status of workflow runs')
+
+                statuses = []
+                for workflow_id in req:
+                    workflow_run_ids = req[workflow_id]
+
+                    output = subprocess.Popen(
+                        [get_airflow_cli(), 'list_dag_runs', workflow_id],
+                        stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
+                        encoding='utf8'
+                    )
+
+                    title = False
+                    body = False
+                    for line in output.stdout.readlines():
+                        if 'DAG RUNS' in line:
+                            title = True
+                        elif title and ('--------' in line):
+                            body = True
+                        elif body:
+                            # id  | run_id | state | execution_date | state_date |
+                            for workflow_run_id in workflow_run_ids:
+                                if workflow_run_id in line:
+                                    # found the line
+                                    # 1 | ssss | running | 2019-07-25T21:35:06+00:00 |
+                                    # 2019-07-25T21:35:06.242130+00:00 |
+                                    fields = line.split('|')
+                                    status = fields[2].strip()
+
+                                    log.info('> status of a workflow run (%s) : %s' % (workflow_run_id, status))
+                                    statuses.append({
+                                        'workflow_id': workflow_id,
+                                        'workflow_run_id': workflow_run_id,
+                                        'status': status
+                                    })
+
+                # let controller know statuses of workflow runs
+                log.info('> Updating status of workflow runs')
+                manager.report_workflow_run_status_bulk(statuses)
+            except subprocess.CalledProcessError as e:
+                # when shell exited with non-zero code
+                log.error('> Error : %s' % e)
+            except Exception as e:
+                log.error('> Error : %s' % e)
+                log.debug(traceback.format_exc())
+
+
+# for command-line execution
+def main(args):
+    print_graffiti()
+
+    # check if config path is set
+    config_file_path = DEFAULT_CONFIG_FILE_PATH
+    if args.config:
+        config_file_path = args.config
+
+    if os.path.exists(config_file_path):
+        # read config
+        config = read_config(config_file_path)
+        if config:
+            global progargs
+            for k in progargs:
+                # overwrite
+                if k in config:
+                    progargs[k] = config[k]
+
+    global log
+    log = create_logger(progargs["logging"])
+
+    if args.controller:
+        progargs['controller_url'] = args.controller
+
+    print('=CONFIG=')
+    config_json_string = pretty_format_json(progargs)
+    print(config_json_string)
+    print('\n')
+
+    # checking controller and airflow web interface
+    log.info('Checking if Workflow Controller (%s) is live...' % progargs['controller_url'])
+    controller_live = check_web_live(progargs['controller_url'])
+    if not controller_live:
+        log.error('Controller (%s) appears to be down' % progargs['controller_url'])
+        raise IOError('Controller (%s) appears to be down' % progargs['controller_url'])
+
+    airflow_live = check_airflow_live()
+    if not airflow_live:
+        log.error('Airflow appears to be down')
+        raise IOError('Airflow appears to be down')
+
+    # connect to workflow controller
+    log.info('Connecting to Workflow Controller (%s)...' % progargs['controller_url'])
+    global manager
+    manager = Manager(logger=log)
+    manager.connect(progargs['controller_url'])
+    manager.set_handlers({
+        'kickstart': on_kickstart,
+        'check_status': on_check_status,
+        'check_status_bulk': on_check_status_bulk
+    })
+
+    # connect to airflow
+    # global airflow_client
+    # log.info('Connecting to Airflow...')
+
+    # api.load_auth()
+    # api_module = import_module(AirflowConf.get('cli', 'api_client'))
+    # airflow_client = api_module.Client(
+    #     api_base_url=AirflowConf.get('cli', 'endpoint_url'),
+    #     auth=api.api_auth.client_auth
+    # )
+
+    log.info('Waiting for kickstart events from Workflow Controller...')
+    try:
+        manager.wait()
+    finally:
+        log.info('Terminating the program...')
+        manager.disconnect()
+
+
+if __name__ == "__main__":
+    parser = get_arg_parser()
+    args = parser.parse_args()
+    main(args)
diff --git a/src/cord_workflow_airflow_extensions/workflow_ctl.py b/src/tools/workflow_ctl.py
similarity index 70%
rename from src/cord_workflow_airflow_extensions/workflow_ctl.py
rename to src/tools/workflow_ctl.py
index 563d966..751356a 100644
--- a/src/cord_workflow_airflow_extensions/workflow_ctl.py
+++ b/src/tools/workflow_ctl.py
@@ -23,9 +23,11 @@
 import json
 import os.path
 import argparse
+import re
 
 from multistructlog import create_logger
 from cord_workflow_controller_client.manager import Manager
+from cord_workflow_controller_client.probe import Probe
 
 
 log = create_logger()
@@ -72,6 +74,27 @@
     return None
 
 
+def read_json_string(str):
+    if str:
+        try:
+            return json.loads(str)
+        except json.decoder.JSONDecodeError:
+            return load_dirty_json(str)
+    return None
+
+
+def load_dirty_json(dirty_json):
+    regex_replace = [
+        (r"([ \{,:\[])(u)?'([^']+)'", r'\1"\3"'),
+        (r" False([, \}\]])", r' false\1'),
+        (r" True([, \}\]])", r' true\1')
+    ]
+    for r, s in regex_replace:
+        dirty_json = re.sub(r, s, dirty_json)
+    clean_json = json.loads(dirty_json)
+    return clean_json
+
+
 def register_workflow(args):
     # expect args should be a list of essence files
     if not args:
@@ -95,7 +118,7 @@
             log.info('Registering an essence file (%s)...' % essence_file)
             result = manager.register_workflow_essence(essence)
             if result:
-                log.inof('registered an essence file (%s)' % essence_file)
+                log.info('registered an essence file (%s)' % essence_file)
             else:
                 log.error('cannot register an essence file (%s)' % essence_file)
 
@@ -107,6 +130,33 @@
     return results
 
 
+def emit_event(args):
+    # expect args should be a json event
+    if not args or len(args) != 2:
+        raise InputError('parameter should be <topic> <message>')
+
+    log.info('Connecting to Workflow Controller (%s)...' % progargs['controller_url'])
+    probe = Probe(logger=log)
+    connected = False
+
+    try:
+        probe.connect(progargs['controller_url'])
+        connected = True
+
+        topic = args[0]
+        message = read_json_string(args[1])
+
+        log.info('Emitting an event (%s - %s)...' % (topic, message))
+        probe.emit_event(topic, message)
+        log.info('Emitted an event (%s - %s)...' % (topic, message))
+        return True
+    finally:
+        if connected:
+            probe.disconnect()
+
+    return False
+
+
 # for command-line execution
 def main(args):
     # check if config path is set
@@ -121,7 +171,8 @@
             global progargs
             for k in progargs:
                 # overwrite
-                progargs[k] = config[k]
+                if k in config:
+                    progargs[k] = config[k]
 
     global log
     log = create_logger(progargs["logging"])
@@ -133,6 +184,9 @@
         if args.cmd.strip().lower() in ['reg', 'register', 'register_workflow']:
             results = register_workflow(args.cmd_args)
             print(results)
+        elif args.cmd.strip().lower() in ['emit', 'send', 'event', 'message']:
+            results = emit_event(args.cmd_args)
+            print(results)
         else:
             log.error('unknown command %s' % args.cmd)
             raise InputError('unknown command %s' % args.cmd)
diff --git a/test/test_essence_extractor.py b/test/test_essence_extractor.py
index 8024611..1eb09e6 100644
--- a/test/test_essence_extractor.py
+++ b/test/test_essence_extractor.py
@@ -18,7 +18,7 @@
 import os
 import collections
 
-from cord_workflow_airflow_extensions.essence_extractor import EssenceExtractor
+from tools.essence_extractor import EssenceExtractor
 
 
 test_path = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
diff --git a/test/test_kickstarter.py b/test/test_kickstarter.py
index c121a57..3c2cd89 100644
--- a/test/test_kickstarter.py
+++ b/test/test_kickstarter.py
@@ -15,7 +15,7 @@
 from __future__ import absolute_import
 import unittest
 
-from cord_workflow_airflow_extensions.kickstarter import check_web_live
+from tools.kickstarter import check_web_live
 
 
 class TestKickstarter(unittest.TestCase):
diff --git a/test/test_workflow_ctl.py b/test/test_workflow_ctl.py
index 38090d7..c65a09d 100644
--- a/test/test_workflow_ctl.py
+++ b/test/test_workflow_ctl.py
@@ -15,7 +15,7 @@
 from __future__ import absolute_import
 import unittest
 
-from cord_workflow_airflow_extensions.workflow_ctl import register_workflow
+from tools.workflow_ctl import register_workflow
 
 
 class TestWorkflowCtl(unittest.TestCase):
diff --git a/workflow_examples/connection_setup.sh b/workflow_examples/connection_setup.sh
new file mode 100644
index 0000000..8952d50
--- /dev/null
+++ b/workflow_examples/connection_setup.sh
@@ -0,0 +1,18 @@
+#! /bin/bash
+
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+# setup connection
+airflow connections --add --conn_id local_cord_controller --conn_type http --conn_host controller --conn_schema http --conn_port 3030
diff --git a/workflow_examples/emit_events_model.sh b/workflow_examples/emit_events_model.sh
new file mode 100644
index 0000000..6adbcbb
--- /dev/null
+++ b/workflow_examples/emit_events_model.sh
@@ -0,0 +1,18 @@
+#! /bin/bash
+
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+# emit events
+python ./workflow_ctl.py emit "datamodel.cordWorkflowDriverServiceInstance" "{'event_type': 'update', 'serialNumber': 'testSerialXXX', 'other': 'test_other_field'}"
diff --git a/workflow_examples/emit_events_onu.sh b/workflow_examples/emit_events_onu.sh
new file mode 100644
index 0000000..03888e7
--- /dev/null
+++ b/workflow_examples/emit_events_onu.sh
@@ -0,0 +1,18 @@
+#! /bin/bash
+
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+# emit events
+python ./workflow_ctl.py emit "onu.events" "{'serialNumber': 'testSerialXXX', 'other': 'test_other_field'}"
diff --git a/workflow_examples/register_essence.sh b/workflow_examples/register_essence.sh
new file mode 100644
index 0000000..1d1f4c0
--- /dev/null
+++ b/workflow_examples/register_essence.sh
@@ -0,0 +1,19 @@
+#! /bin/bash
+
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+# register essence
+python ./workflow_ctl.py reg ./simple_cord_workflow_essence.json
+python ./workflow_ctl.py reg ./simple_airflow_workflow_essence.json
diff --git a/workflow_examples/simple-airflow-workflow/simple_airflow_workflow.py b/workflow_examples/simple-airflow-workflow/simple_airflow_workflow.py
new file mode 100644
index 0000000..d59809a
--- /dev/null
+++ b/workflow_examples/simple-airflow-workflow/simple_airflow_workflow.py
@@ -0,0 +1,79 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+"""
+Example workflow using Airflow
+"""
+
+
+import logging
+from datetime import datetime
+from airflow import DAG
+from airflow.sensors.http_sensor import HttpSensor
+from airflow.operators.python_operator import PythonOperator
+
+log = logging.getLogger(__name__)
+
+args = {
+    # hard coded date
+    'start_date': datetime(2019, 1, 1),
+    'owner': 'iychoi'
+}
+
+dag = DAG(
+    dag_id='simple_airflow_workflow',
+    default_args=args,
+    # this dag will be triggered by external systems
+    schedule_interval=None
+)
+
+dag.doc_md = __doc__
+
+
+def handler(ds, **kwargs):
+    log.info('Handler is called!')
+    print(ds)
+    return
+
+
+def check_http(response):
+    content = response.text
+    if len(content) > 0:
+        log.info('the server responsed http content - %s' % content)
+        return True
+
+    log.info('the server did not respond')
+    return False
+
+
+sensor = HttpSensor(
+    task_id='http_sensor',
+    # 'http_default' goes to https://google.com
+    http_conn_id='http_default',
+    endpoint='',
+    request_params={},
+    response_check=check_http,
+    poke_interval=5,
+    dag=dag,
+)
+
+handler = PythonOperator(
+    task_id='python_operator',
+    provide_context=True,
+    python_callable=handler,
+    dag=dag
+)
+
+
+sensor >> handler
diff --git a/workflow_examples/simple-airflow-workflow/simple_airflow_workflow_essence.json b/workflow_examples/simple-airflow-workflow/simple_airflow_workflow_essence.json
new file mode 100644
index 0000000..bd7e298
--- /dev/null
+++ b/workflow_examples/simple-airflow-workflow/simple_airflow_workflow_essence.json
@@ -0,0 +1,129 @@
+{
+    "simple_airflow_workflow": {
+        "dag": {
+            "dag_id": "simple_airflow_workflow",
+            "local_variable": "dag"
+        },
+        "dependencies": {
+            "http_sensor": {
+                "children": [
+                    "python_operator"
+                ]
+            },
+            "python_operator": {
+                "parents": [
+                    "http_sensor"
+                ]
+            }
+        },
+        "tasks": {
+            "http_sensor": {
+                "class": "HttpSensor",
+                "dag": "dag",
+                "dag_id": "simple_airflow_workflow",
+                "endpoint": "https://www.google.com",
+                "http_conn_id": "http_default",
+                "local_variable": "sensor",
+                "poke_interval": 5,
+                "request_params": {
+                    "Dict": {
+                        "keys": [],
+                        "values": []
+                    }
+                },
+                "response_check": {
+                    "Lambda": {
+                        "args": {
+                            "arguments": {
+                                "args": [
+                                    {
+                                        "arg": {
+                                            "annotation": null,
+                                            "arg": "response"
+                                        }
+                                    }
+                                ],
+                                "defaults": [],
+                                "kw_defaults": [],
+                                "kwarg": null,
+                                "kwonlyargs": [],
+                                "vararg": null
+                            }
+                        },
+                        "body": {
+                            "IfExp": {
+                                "body": {
+                                    "NameConstant": {
+                                        "value": true
+                                    }
+                                },
+                                "orelse": {
+                                    "NameConstant": {
+                                        "value": false
+                                    }
+                                },
+                                "test": {
+                                    "Compare": {
+                                        "comparators": [
+                                            {
+                                                "Num": {
+                                                    "n": 0
+                                                }
+                                            }
+                                        ],
+                                        "left": {
+                                            "Call": {
+                                                "args": [
+                                                    {
+                                                        "Call": {
+                                                            "args": [],
+                                                            "func": {
+                                                                "Attribute": {
+                                                                    "attr": "json",
+                                                                    "ctx": "Load",
+                                                                    "value": {
+                                                                        "Name": {
+                                                                            "ctx": "Load",
+                                                                            "id": "response"
+                                                                        }
+                                                                    }
+                                                                }
+                                                            },
+                                                            "keywords": []
+                                                        }
+                                                    }
+                                                ],
+                                                "func": {
+                                                    "Name": {
+                                                        "ctx": "Load",
+                                                        "id": "len"
+                                                    }
+                                                },
+                                                "keywords": []
+                                            }
+                                        },
+                                        "ops": [
+                                            {
+                                                "Eq": {}
+                                            }
+                                        ]
+                                    }
+                                }
+                            }
+                        }
+                    }
+                },
+                "task_id": "http_sensor"
+            },
+            "python_operator": {
+                "class": "PythonOperator",
+                "dag": "dag",
+                "dag_id": "simple_airflow_workflow",
+                "local_variable": "handler",
+                "provide_context": true,
+                "python_callable": "handler",
+                "task_id": "python_operator"
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/workflow_examples/simple-att-workflow/att_dag.py b/workflow_examples/simple-cord-workflow/simple_cord_workflow.py
similarity index 69%
rename from workflow_examples/simple-att-workflow/att_dag.py
rename to workflow_examples/simple-cord-workflow/simple_cord_workflow.py
index fd40b28..0eee50d 100644
--- a/workflow_examples/simple-att-workflow/att_dag.py
+++ b/workflow_examples/simple-cord-workflow/simple_cord_workflow.py
@@ -13,39 +13,40 @@
 # limitations under the License.
 
 """
-Example AT&T workflow using Airflow
+Example CORD workflow using Airflow
 """
 
 
 import logging
 from datetime import datetime
 from airflow import DAG
-from cord_workflow_airflow_extensions.sensors import CORDEventSensor, CORDModelSensor
-from cord_workflow_airflow_extensions.operators import CORDModelOperator
+from airflow.sensors.cord_workflow_plugin import CORDEventSensor, CORDModelSensor
+from airflow.operators.cord_workflow_plugin import CORDModelOperator
 
 
 log = logging.getLogger(__name__)
 
 args = {
-    'start_date': datetime.utcnow(),
-    'owner': 'iychoi',
+    # hard coded date
+    'start_date': datetime(2019, 1, 1),
+    'owner': 'iychoi'
 }
 
-dag_att = DAG(
-    dag_id='simple_att_workflow',
+dag_cord = DAG(
+    dag_id='simple_cord_workflow',
     default_args=args,
     # this dag will be triggered by external systems
-    schedule_interval=None,
+    schedule_interval=None
 )
 
-dag_att.doc_md = __doc__
+dag_cord.doc_md = __doc__
 
 
 def ONU_event(model_accessor, message, **kwargs):
     log.info('onu.events: received an event - %s' % message)
 
     """
-    si = find_or_create_att_si(model_accessor, logging, message)
+    si = find_or_create_cord_si(model_accessor, logging, message)
     if message['status'] == 'activated':
         logging.info('onu.events: activated onu', message=message)
         si.no_sync = False
@@ -67,7 +68,7 @@
     log.info('authentication.events: received an event - %s' % message)
 
     """
-    si = find_or_create_att_si(model_accessor, logging, message)
+    si = find_or_create_cord_si(model_accessor, logging, message)
     logging.debug('authentication.events: Updating service instance', si=si)
     si.authentication_state = message['authenticationState']
     si.save_changed_fields(always_update_timestamp=True)
@@ -78,7 +79,7 @@
     log.info('dhcp.events: received an event - %s' % message)
 
     """
-    si = find_or_create_att_si(model_accessor, logging, message)
+    si = find_or_create_cord_si(model_accessor, logging, message)
     logging.debug('dhcp.events: Updating service instance', si=si)
     si.dhcp_state = message['messageType']
     si.ip_address = message['ipAddress']
@@ -94,13 +95,13 @@
     event_type = message['event_type']
 
     go = False
-    si = find_or_create_att_si(model_accessor, logging, message)
+    si = find_or_create_cord_si(model_accessor, logging, message)
 
     if event_type == 'create':
-        logging.debug('MODEL_POLICY: handle_create for AttWorkflowDriverServiceInstance %s ' % si.id)
+        logging.debug('MODEL_POLICY: handle_create for cordWorkflowDriverServiceInstance %s ' % si.id)
         go = True
     elif event_type == 'update':
-        logging.debug('MODEL_POLICY: handle_update for AttWorkflowDriverServiceInstance %s ' %
+        logging.debug('MODEL_POLICY: handle_update for cordWorkflowDriverServiceInstance %s ' %
                           (si.id), onu_state=si.admin_onu_state, authentication_state=si.authentication_state)
         go = True
     elif event_type == 'delete':
@@ -138,14 +139,14 @@
     key_field='serialNumber',
     controller_conn_id='local_cord_controller',
     poke_interval=5,
-    dag=dag_att
+    dag=dag_cord
 )
 
 onu_event_handler = CORDModelOperator(
     task_id='onu_event_handler',
     python_callable=ONU_event,
     cord_event_sensor_task_id='onu_event_sensor',
-    dag=dag_att
+    dag=dag_cord
 )
 
 auth_event_sensor = CORDEventSensor(
@@ -154,14 +155,14 @@
     key_field='serialNumber',
     controller_conn_id='local_cord_controller',
     poke_interval=5,
-    dag=dag_att
+    dag=dag_cord
 )
 
 auth_event_handler = CORDModelOperator(
     task_id='auth_event_handler',
     python_callable=AUTH_event,
     cord_event_sensor_task_id='auth_event_sensor',
-    dag=dag_att
+    dag=dag_cord
 )
 
 dhcp_event_sensor = CORDEventSensor(
@@ -170,65 +171,65 @@
     key_field='serialNumber',
     controller_conn_id='local_cord_controller',
     poke_interval=5,
-    dag=dag_att
+    dag=dag_cord
 )
 
 dhcp_event_handler = CORDModelOperator(
     task_id='dhcp_event_handler',
     python_callable=DHCP_event,
     cord_event_sensor_task_id='dhcp_event_sensor',
-    dag=dag_att
+    dag=dag_cord
 )
 
-att_model_event_sensor1 = CORDModelSensor(
-    task_id='att_model_event_sensor1',
-    model_name='AttWorkflowDriverServiceInstance',
+cord_model_event_sensor1 = CORDModelSensor(
+    task_id='cord_model_event_sensor1',
+    model_name='cordWorkflowDriverServiceInstance',
     key_field='serialNumber',
     controller_conn_id='local_cord_controller',
     poke_interval=5,
-    dag=dag_att
+    dag=dag_cord
 )
 
-att_model_event_handler1 = CORDModelOperator(
-    task_id='att_model_event_handler1',
+cord_model_event_handler1 = CORDModelOperator(
+    task_id='cord_model_event_handler1',
     python_callable=DriverService_event,
-    cord_event_sensor_task_id='att_model_event_sensor1',
-    dag=dag_att
+    cord_event_sensor_task_id='cord_model_event_sensor1',
+    dag=dag_cord
 )
 
-att_model_event_sensor2 = CORDModelSensor(
-    task_id='att_model_event_sensor2',
-    model_name='AttWorkflowDriverServiceInstance',
+cord_model_event_sensor2 = CORDModelSensor(
+    task_id='cord_model_event_sensor2',
+    model_name='cordWorkflowDriverServiceInstance',
     key_field='serialNumber',
     controller_conn_id='local_cord_controller',
     poke_interval=5,
-    dag=dag_att
+    dag=dag_cord
 )
 
-att_model_event_handler2 = CORDModelOperator(
-    task_id='att_model_event_handler2',
+cord_model_event_handler2 = CORDModelOperator(
+    task_id='cord_model_event_handler2',
     python_callable=DriverService_event,
-    cord_event_sensor_task_id='att_model_event_sensor2',
-    dag=dag_att
+    cord_event_sensor_task_id='cord_model_event_sensor2',
+    dag=dag_cord
 )
 
-att_model_event_sensor3 = CORDModelSensor(
-    task_id='att_model_event_sensor3',
-    model_name='AttWorkflowDriverServiceInstance',
+cord_model_event_sensor3 = CORDModelSensor(
+    task_id='cord_model_event_sensor3',
+    model_name='cordWorkflowDriverServiceInstance',
     key_field='serialNumber',
     controller_conn_id='local_cord_controller',
     poke_interval=5,
-    dag=dag_att
+    dag=dag_cord
 )
 
-att_model_event_handler3 = CORDModelOperator(
-    task_id='att_model_event_handler3',
+cord_model_event_handler3 = CORDModelOperator(
+    task_id='cord_model_event_handler3',
     python_callable=DriverService_event,
-    cord_event_sensor_task_id='att_model_event_sensor3',
-    dag=dag_att
+    cord_event_sensor_task_id='cord_model_event_sensor3',
+    dag=dag_cord
 )
 
 
-onu_event_sensor >> onu_event_handler >> att_model_event_sensor1 >> att_model_event_handler1 >> \
-    auth_event_sensor >> auth_event_handler >> att_model_event_sensor2 >> att_model_event_handler2 >> \
-    dhcp_event_sensor >> dhcp_event_handler >> att_model_event_sensor3 >> att_model_event_handler3
+onu_event_sensor >> onu_event_handler >> cord_model_event_sensor1 >> cord_model_event_handler1 >> \
+    auth_event_sensor >> auth_event_handler >> cord_model_event_sensor2 >> cord_model_event_handler2 >> \
+    dhcp_event_sensor >> dhcp_event_handler >> cord_model_event_sensor3 >> cord_model_event_handler3
diff --git a/workflow_examples/simple-cord-workflow/simple_cord_workflow_essence.json b/workflow_examples/simple-cord-workflow/simple_cord_workflow_essence.json
new file mode 100644
index 0000000..9d4499b
--- /dev/null
+++ b/workflow_examples/simple-cord-workflow/simple_cord_workflow_essence.json
@@ -0,0 +1,222 @@
+{
+    "simple_cord_workflow": {
+        "dag": {
+            "dag_id": "simple_cord_workflow",
+            "local_variable": "dag_cord"
+        },
+        "dependencies": {
+            "cord_model_event_handler1": {
+                "children": [
+                    "auth_event_sensor"
+                ],
+                "parents": [
+                    "cord_model_event_sensor1"
+                ]
+            },
+            "cord_model_event_handler2": {
+                "children": [
+                    "dhcp_event_sensor"
+                ],
+                "parents": [
+                    "cord_model_event_sensor2"
+                ]
+            },
+            "cord_model_event_handler3": {
+                "parents": [
+                    "cord_model_event_sensor3"
+                ]
+            },
+            "cord_model_event_sensor1": {
+                "children": [
+                    "cord_model_event_handler1"
+                ],
+                "parents": [
+                    "onu_event_handler"
+                ]
+            },
+            "cord_model_event_sensor2": {
+                "children": [
+                    "cord_model_event_handler2"
+                ],
+                "parents": [
+                    "auth_event_handler"
+                ]
+            },
+            "cord_model_event_sensor3": {
+                "children": [
+                    "cord_model_event_handler3"
+                ],
+                "parents": [
+                    "dhcp_event_handler"
+                ]
+            },
+            "auth_event_handler": {
+                "children": [
+                    "cord_model_event_sensor2"
+                ],
+                "parents": [
+                    "auth_event_sensor"
+                ]
+            },
+            "auth_event_sensor": {
+                "children": [
+                    "auth_event_handler"
+                ],
+                "parents": [
+                    "cord_model_event_handler1"
+                ]
+            },
+            "dhcp_event_handler": {
+                "children": [
+                    "cord_model_event_sensor3"
+                ],
+                "parents": [
+                    "dhcp_event_sensor"
+                ]
+            },
+            "dhcp_event_sensor": {
+                "children": [
+                    "dhcp_event_handler"
+                ],
+                "parents": [
+                    "cord_model_event_handler2"
+                ]
+            },
+            "onu_event_handler": {
+                "children": [
+                    "cord_model_event_sensor1"
+                ],
+                "parents": [
+                    "onu_event_sensor"
+                ]
+            },
+            "onu_event_sensor": {
+                "children": [
+                    "onu_event_handler"
+                ]
+            }
+        },
+        "tasks": {
+            "cord_model_event_handler1": {
+                "class": "CORDModelOperator",
+                "cord_event_sensor_task_id": "cord_model_event_sensor1",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "local_variable": "cord_model_event_handler1",
+                "python_callable": "DriverService_event",
+                "task_id": "cord_model_event_handler1"
+            },
+            "cord_model_event_handler2": {
+                "class": "CORDModelOperator",
+                "cord_event_sensor_task_id": "cord_model_event_sensor2",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "local_variable": "cord_model_event_handler2",
+                "python_callable": "DriverService_event",
+                "task_id": "cord_model_event_handler2"
+            },
+            "cord_model_event_handler3": {
+                "class": "CORDModelOperator",
+                "cord_event_sensor_task_id": "cord_model_event_sensor3",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "local_variable": "cord_model_event_handler3",
+                "python_callable": "DriverService_event",
+                "task_id": "cord_model_event_handler3"
+            },
+            "cord_model_event_sensor1": {
+                "class": "CORDModelSensor",
+                "controller_conn_id": "local_cord_controller",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "key_field": "serialNumber",
+                "local_variable": "cord_model_event_sensor1",
+                "model_name": "cordWorkflowDriverServiceInstance",
+                "poke_interval": 5,
+                "task_id": "cord_model_event_sensor1"
+            },
+            "cord_model_event_sensor2": {
+                "class": "CORDModelSensor",
+                "controller_conn_id": "local_cord_controller",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "key_field": "serialNumber",
+                "local_variable": "cord_model_event_sensor2",
+                "model_name": "cordWorkflowDriverServiceInstance",
+                "poke_interval": 5,
+                "task_id": "cord_model_event_sensor2"
+            },
+            "cord_model_event_sensor3": {
+                "class": "CORDModelSensor",
+                "controller_conn_id": "local_cord_controller",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "key_field": "serialNumber",
+                "local_variable": "cord_model_event_sensor3",
+                "model_name": "cordWorkflowDriverServiceInstance",
+                "poke_interval": 5,
+                "task_id": "cord_model_event_sensor3"
+            },
+            "auth_event_handler": {
+                "class": "CORDModelOperator",
+                "cord_event_sensor_task_id": "auth_event_sensor",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "local_variable": "auth_event_handler",
+                "python_callable": "AUTH_event",
+                "task_id": "auth_event_handler"
+            },
+            "auth_event_sensor": {
+                "class": "CORDEventSensor",
+                "controller_conn_id": "local_cord_controller",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "key_field": "serialNumber",
+                "local_variable": "auth_event_sensor",
+                "poke_interval": 5,
+                "task_id": "auth_event_sensor",
+                "topic": "authentication.events"
+            },
+            "dhcp_event_handler": {
+                "class": "CORDModelOperator",
+                "cord_event_sensor_task_id": "dhcp_event_sensor",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "local_variable": "dhcp_event_handler",
+                "python_callable": "DHCP_event",
+                "task_id": "dhcp_event_handler"
+            },
+            "dhcp_event_sensor": {
+                "class": "CORDEventSensor",
+                "controller_conn_id": "local_cord_controller",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "key_field": "serialNumber",
+                "local_variable": "dhcp_event_sensor",
+                "poke_interval": 5,
+                "task_id": "dhcp_event_sensor",
+                "topic": "dhcp.events"
+            },
+            "onu_event_handler": {
+                "class": "CORDModelOperator",
+                "cord_event_sensor_task_id": "onu_event_sensor",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "local_variable": "onu_event_handler",
+                "python_callable": "ONU_event",
+                "task_id": "onu_event_handler"
+            },
+            "onu_event_sensor": {
+                "class": "CORDEventSensor",
+                "controller_conn_id": "local_cord_controller",
+                "dag": "dag_cord",
+                "dag_id": "simple_cord_workflow",
+                "key_field": "serialNumber",
+                "local_variable": "onu_event_sensor",
+                "poke_interval": 5,
+                "task_id": "onu_event_sensor",
+                "topic": "onu.events"
+            }
+        }
+    }
+}
\ No newline at end of file
