diff --git a/VERSION b/VERSION
index b1b25a5..5859406 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.2.2
+2.2.3
diff --git a/containers/chameleon/Dockerfile.chameleon b/containers/chameleon/Dockerfile.chameleon
index bfb2026..90ae1e1 100644
--- a/containers/chameleon/Dockerfile.chameleon
+++ b/containers/chameleon/Dockerfile.chameleon
@@ -14,7 +14,7 @@
 
 # xosproject/chameleon
 
-FROM xosproject/xos-base:2.2.2
+FROM xosproject/xos-base:2.2.3
 
 # xos-base already has protoc and dependencies installed
 
diff --git a/containers/xos/Dockerfile.client b/containers/xos/Dockerfile.client
index 8253f10..331f503 100644
--- a/containers/xos/Dockerfile.client
+++ b/containers/xos/Dockerfile.client
@@ -14,7 +14,7 @@
 
 # xosproject/xos-client
 
-FROM xosproject/xos-libraries:2.2.2
+FROM xosproject/xos-libraries:2.2.3
 
 # Install XOS client
 COPY lib/xos-api /tmp/xos-api
diff --git a/containers/xos/Dockerfile.libraries b/containers/xos/Dockerfile.libraries
index 24f7bdd..3b87c5a 100644
--- a/containers/xos/Dockerfile.libraries
+++ b/containers/xos/Dockerfile.libraries
@@ -14,7 +14,7 @@
 
 # xosproject/xos-libraries
 
-FROM xosproject/xos-base:2.2.2
+FROM xosproject/xos-base:2.2.3
 
 # Add libraries
 COPY lib /opt/xos/lib
diff --git a/containers/xos/Dockerfile.synchronizer-base b/containers/xos/Dockerfile.synchronizer-base
index f32b590..b27815a 100644
--- a/containers/xos/Dockerfile.synchronizer-base
+++ b/containers/xos/Dockerfile.synchronizer-base
@@ -14,7 +14,7 @@
 
 # xosproject/xos-synchronizer-base
 
-FROM xosproject/xos-client:2.2.2
+FROM xosproject/xos-client:2.2.3
 
 COPY xos/synchronizers/new_base /opt/xos/synchronizers/new_base
 COPY xos/xos/logger.py /opt/xos/xos/logger.py
diff --git a/containers/xos/Dockerfile.xos-core b/containers/xos/Dockerfile.xos-core
index 2e4219d..431f002 100644
--- a/containers/xos/Dockerfile.xos-core
+++ b/containers/xos/Dockerfile.xos-core
@@ -14,7 +14,7 @@
 
 # xosproject/xos-core
 
-FROM xosproject/xos-libraries:2.2.2
+FROM xosproject/xos-libraries:2.2.3
 
 # Install XOS
 ADD xos /opt/xos
diff --git a/lib/xos-genx/xosgenx/generator.py b/lib/xos-genx/xosgenx/generator.py
index 3e650be..af99a23 100644
--- a/lib/xos-genx/xosgenx/generator.py
+++ b/lib/xos-genx/xosgenx/generator.py
@@ -243,9 +243,9 @@
             )
 
         if args.output is not None and not os.path.isabs(args.output):
-            raise Exception("[XosGenX] The output dir must be an absolute path!")
+            raise Exception("[XosGenX] The output dir (%s) must be an absolute path!" % args.output)
         if args.output is not None and not os.path.isdir(args.output):
-            raise Exception("[XosGenX] The output dir must be a directory!")
+            raise Exception("[XosGenX] The output dir (%s) must be a directory!" % args.output)
 
         if hasattr(args, "files"):
             inputs = XOSProcessor._read_input_from_files(args.files)
diff --git a/lib/xos-migrate/xosmigrate/main.py b/lib/xos-migrate/xosmigrate/main.py
index 3bea379..3fcbe89 100644
--- a/lib/xos-migrate/xosmigrate/main.py
+++ b/lib/xos-migrate/xosmigrate/main.py
@@ -32,13 +32,20 @@
 from xosconfig import Config
 from multistructlog import create_logger
 
-
 def get_abs_path(dir_):
+    """ Convert a path specified by the user, which might be relative or based on
+        home directory location, into an absolute path.
+    """
     if os.path.isabs(dir_):
         return os.path.realpath(dir_)
     if dir_[0] == "~" and not os.path.exists(dir_):
         dir_ = os.path.expanduser(dir_)
         return os.path.abspath(dir_)
+    return os.path.abspath(os.path.join(os.getcwd(), dir_))
+
+
+def get_migration_library_path(dir_):
+    """ Return a directory relative to the location of the migration library """
     return os.path.dirname(os.path.realpath(__file__)) + "/" + dir_
 
 
@@ -265,9 +272,9 @@
 
 
 # SETTING ENV
-os.environ["LOG_FILE"] = get_abs_path("django.log")
-os.environ["XOS_CONFIG_SCHEMA"] = get_abs_path("migration_cfg_schema.yaml")
-os.environ["XOS_CONFIG_FILE"] = get_abs_path("migration_cfg.yaml")
+os.environ["LOG_FILE"] = get_migration_library_path("django.log")
+os.environ["XOS_CONFIG_SCHEMA"] = get_migration_library_path("migration_cfg_schema.yaml")
+os.environ["XOS_CONFIG_FILE"] = get_migration_library_path("migration_cfg.yaml")
 os.environ["MIGRATIONS"] = "true"
 # this is populated in case we generate migrations for services and it's used in settings.py
 os.environ["INSTALLED_APPS"] = ""
