diff --git a/fastmodel_dispatcher/AN519.py b/fastmodel_dispatcher/AN519.py
new file mode 100644
index 0000000..a03bf97
--- /dev/null
+++ b/fastmodel_dispatcher/AN519.py
@@ -0,0 +1,319 @@
+#!/usr/bin/env python3
+
+""" an521.py:
+
+    Contains AN519 specific configuration variants. Each configuration is
+    created by a template(defines the expected output of the test) and a
+    decorated class setting the parameters. The whole scope of this module
+    is imported in the config map, to avoid keeping a manual list of the
+    configurations up to date. """
+
+from __future__ import print_function
+import os
+import sys
+
+__copyright__ = """
+/*
+ * Copyright (c) 2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+ """
+__author__ = "Minos Galanakis"
+__email__ = "minos.galanakis@linaro.org"
+__project__ = "Trusted Firmware-M Open CI"
+__status__ = "stable"
+__version__ = "1.1"
+
+try:
+    from tfm_ci_pylib.fastmodel_wrapper import FastmodelConfigMap
+    from tfm_ci_pylib.fastmodel_wrapper import config_variant
+
+    from tfm_ci_pylib.fastmodel_wrapper import \
+        template_default_config, template_regression_config, \
+        template_coreipc_config, template_coreipctfmlevel2_config
+except ImportError:
+    dir_path = os.path.dirname(os.path.realpath(__file__))
+    sys.path.append(os.path.join(dir_path, "../"))
+    from tfm_ci_pylib.fastmodel_wrapper import FastmodelConfigMap
+    from tfm_ci_pylib.fastmodel_wrapper import config_variant
+    from tfm_ci_pylib.fastmodel_wrapper import \
+        template_default_config, template_regression_config, \
+        template_coreipc_config, template_coreipctfmlevel2_config
+# =====================  AN521 Configuration Classes ======================
+# Configurations will be dynamically defined
+
+# =====================  Default Config ======================
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="BL2")
+class an519_armclang_configdefault_debug_bl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="BL2")
+class an519_gnuarm_configdefault_debug_bl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an519_armclang_configdefault_debug_nobl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an519_gnuarm_configdefault_debug_nobl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="BL2")
+class an519_armclang_configdefault_release_bl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="BL2")
+class an519_gnuarm_configdefault_release_bl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="NOBL2")
+class an519_armclang_configdefault_release_nobl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="NOBL2")
+class an519_gnuarm_configdefault_release_nobl2(template_default_config):
+    pass
+
+# =====================  Regressions Config ======================
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="BL2")
+class an519_armclang_configregression_debug_bl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="BL2")
+class an519_gnuarm_configregression_debug_bl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an519_armclang_configregression_debug_nobl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an519_gnuarm_configregression_debug_nobl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="BL2")
+class an519_armclang_configregression_release_bl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="BL2")
+class an519_gnuarm_configregression_release_bl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="NOBL2")
+class an519_armclang_configregression_release_nobl2(
+        template_regression_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="NOBL2")
+class an519_gnuarm_configregression_release_nobl2(template_regression_config):
+    pass
+
+# =====================  CoreIPC Config ======================
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="BL2")
+class an519_armclang_configcoreipc_debug_bl2(template_coreipc_config):
+
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an519_armclang_configcoreipc_debug_nobl2(template_coreipc_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="BL2")
+class an519_armclang_configcoreipc_release_bl2(template_coreipc_config):
+
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="NOBL2")
+class an519_armclang_configcoreipc_release_nobl2(template_coreipc_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="BL2")
+class an519_gnuarm_configcoreipc_debug_bl2(template_coreipc_config):
+
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an519_gnuarm_configcoreipc_debug_nobl2(template_coreipc_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="BL2")
+class an519_gnuarm_configcoreipc_release_bl2(template_coreipc_config):
+
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="NOBL2")
+class an519_gnuarm_configcoreipc_release_nobl2(template_coreipc_config):
+    pass
+
+# =====================  CoreIPCTfmLevel2 Config ======================
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="BL2")
+class an519_armclang_configcoreipctfmlevel2_debug_bl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an519_armclang_configcoreipctfmlevel2_debug_nobl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="BL2")
+class an519_armclang_configcoreipctfmlevel2_release_bl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="NOBL2")
+class an519_armclang_configcoreipctfmlevel2_release_nobl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="BL2")
+class an519_gnuarm_configcoreipctfmlevel2_debug_bl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an519_gnuarm_configcoreipctfmlevel2_debug_nobl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="BL2")
+class an519_gnuarm_configcoreipctfmlevel2_release_bl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN519",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="NOBL2")
+class an519_gnuarm_configcoreipctfmlevel2_release_nobl2(template_coreipctfmlevel2_config):
+    pass
+
+AN519 = FastmodelConfigMap(globals(), "AN519")
+
+if __name__ == "__main__":
+    pass
diff --git a/fastmodel_dispatcher/AN521.py b/fastmodel_dispatcher/AN521.py
new file mode 100644
index 0000000..8953aa1
--- /dev/null
+++ b/fastmodel_dispatcher/AN521.py
@@ -0,0 +1,319 @@
+#!/usr/bin/env python3
+
+""" an521.py:
+
+    Contains AN521 specific configuration variants. Each configuration is
+    created by a template(defines the expected output of the test) and a
+    decorated class setting the parameters. The whole scope of this module
+    is imported in the config map, to avoid keeping a manual list of the
+    configurations up to date. """
+
+from __future__ import print_function
+import os
+import sys
+
+__copyright__ = """
+/*
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+ """
+__author__ = "Minos Galanakis"
+__email__ = "minos.galanakis@linaro.org"
+__project__ = "Trusted Firmware-M Open CI"
+__status__ = "stable"
+__version__ = "1.1"
+
+try:
+    from tfm_ci_pylib.fastmodel_wrapper import FastmodelConfigMap
+    from tfm_ci_pylib.fastmodel_wrapper import config_variant
+
+    from tfm_ci_pylib.fastmodel_wrapper import \
+        template_default_config, template_regression_config, \
+        template_coreipc_config, template_coreipctfmlevel2_config
+except ImportError:
+    dir_path = os.path.dirname(os.path.realpath(__file__))
+    sys.path.append(os.path.join(dir_path, "../"))
+    from tfm_ci_pylib.fastmodel_wrapper import FastmodelConfigMap
+    from tfm_ci_pylib.fastmodel_wrapper import config_variant
+    from tfm_ci_pylib.fastmodel_wrapper import \
+        template_default_config, template_regression_config, \
+        template_coreipc_config, template_coreipctfmlevel2_config
+
+# =====================  AN521 Configuration Classes ======================
+# Configurations will be dynamically defined
+
+# =====================  Default Config ======================
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="BL2")
+class an521_armclang_configdefault_debug_bl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="BL2")
+class an521_gnuarm_configdefault_debug_bl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an521_armclang_configdefault_debug_nobl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an521_gnuarm_configdefault_debug_nobl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="BL2")
+class an521_armclang_configdefault_release_bl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="BL2")
+class an521_gnuarm_configdefault_release_bl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="NOBL2")
+class an521_armclang_configdefault_release_nobl2(template_default_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="NOBL2")
+class an521_gnuarm_configdefault_release_nobl2(template_default_config):
+    pass
+
+# =====================  Regressions Config ======================
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="BL2")
+class an521_armclang_configregression_debug_bl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="BL2")
+class an521_gnuarm_configregression_debug_bl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an521_armclang_configregression_debug_nobl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an521_gnuarm_configregression_debug_nobl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="BL2")
+class an521_armclang_configregression_release_bl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="BL2")
+class an521_gnuarm_configregression_release_bl2(template_regression_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="NOBL2")
+class an521_armclang_configregression_release_nobl2(
+        template_regression_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="NOBL2")
+class an521_gnuarm_configregression_release_nobl2(template_regression_config):
+    pass
+
+# =====================  CoreIPC Config ======================
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="BL2")
+class an521_armclang_configcoreipc_debug_bl2(template_coreipc_config):
+
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an521_armclang_configcoreipc_debug_nobl2(template_coreipc_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="BL2")
+class an521_armclang_configcoreipc_release_bl2(template_coreipc_config):
+
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="NOBL2")
+class an521_armclang_configcoreipc_release_nobl2(template_coreipc_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="BL2")
+class an521_gnuarm_configcoreipc_debug_bl2(template_coreipc_config):
+
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an521_gnuarm_configcoreipc_debug_nobl2(template_coreipc_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="BL2")
+class an521_gnuarm_configcoreipc_release_bl2(template_coreipc_config):
+
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="NOBL2")
+class an521_gnuarm_configcoreipc_release_nobl2(template_coreipc_config):
+    pass
+
+# =====================  CoreIPCTfmLevel2 Config ======================
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="BL2")
+class an521_armclang_configcoreipctfmlevel2_debug_bl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an521_armclang_configcoreipctfmlevel2_debug_nobl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="BL2")
+class an521_armclang_configcoreipctfmlevel2_release_bl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="ARMCLANG",
+                build_type="Release",
+                bootloader="NOBL2")
+class an521_armclang_configcoreipctfmlevel2_release_nobl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="BL2")
+class an521_gnuarm_configcoreipctfmlevel2_debug_bl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Debug",
+                bootloader="NOBL2")
+class an521_gnuarm_configcoreipctfmlevel2_debug_nobl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="BL2")
+class an521_gnuarm_configcoreipctfmlevel2_release_bl2(template_coreipctfmlevel2_config):
+    pass
+
+
+@config_variant(platform="AN521",
+                compiler="GNUARM",
+                build_type="Release",
+                bootloader="NOBL2")
+class an521_gnuarm_configcoreipctfmlevel2_release_nobl2(template_coreipctfmlevel2_config):
+    pass
+
+AN521 = FastmodelConfigMap(globals(), "AN521")
+
+if __name__ == "__main__":
+    pass
diff --git a/fastmodel_dispatcher/fastmodel_dispatcher.py b/fastmodel_dispatcher/fastmodel_dispatcher.py
new file mode 100644
index 0000000..8c12dae
--- /dev/null
+++ b/fastmodel_dispatcher/fastmodel_dispatcher.py
@@ -0,0 +1,222 @@
+#!/usr/bin/env python3
+
+""" fvp_dispatcher.py:
+
+    Fastmodel dispatcher takes an build report input from build_helper and
+    selects the appropriate tests, lauched in separate fastmodel Wrapper
+    instances """
+
+from __future__ import print_function
+
+__copyright__ = """
+/*
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+ """
+__author__ = "Minos Galanakis"
+__email__ = "minos.galanakis@linaro.org"
+__project__ = "Trusted Firmware-M Open CI"
+__status__ = "stable"
+__version__ = "1.1"
+
+import os
+import sys
+import argparse
+from copy import deepcopy
+from fastmodel_dispatcher_configs import fvp_config_map
+
+try:
+    from tfm_ci_pylib.utils import load_json, print_test, save_json, \
+        show_progress
+    from tfm_ci_pylib.fastmodel_wrapper import FastmodelWrapper
+    from tfm_ci_pylib.tfm_build_manager import TFM_Build_Manager
+
+except ImportError:
+    dir_path = os.path.dirname(os.path.realpath(__file__))
+    sys.path.append(os.path.join(dir_path, "../"))
+    from tfm_ci_pylib.utils import load_json, print_test, save_json, \
+        show_progress
+    from tfm_ci_pylib.fastmodel_wrapper import FastmodelWrapper
+    from tfm_ci_pylib.tfm_build_manager import TFM_Build_Manager
+
+
+def cfilter(config_list, match):
+    """Filter a list of items in _text1_text2_ format and only include
+    results who contain the match term between two underscores """
+
+    # Ensure the match has the format of _text_
+    match = "_%s_" % match.strip("_")
+
+    return [n for n in config_list if match in n]
+
+
+def main(user_args):
+    """ Main logic """
+
+    test_config_list = None
+
+    if user_args.list_cfg:
+        print("Built-in configs:")
+        print("\n".join(fvp_config_map.list()))
+        sys.exit(0)
+    elif user_args.single_cfg:
+        try:
+            # Try to fetch the config to validate it exists
+            fvp_config_map.get_config(user_args.single_cfg)
+            test_config_list = [user_args.single_cfg]
+        except Exception as e:
+            print("Error: %s" % e)
+            sys.exit(1)
+    elif user_args.build_all:
+        test_config_list = fvp_config_map.list()
+    # If a build report is provided parse it
+    elif user_args.build_report:
+        build_report = load_json(user_args.build_report)
+
+        build_cfg = build_report["_metadata_"]["input_build_cfg"]
+
+        # build and test configs share common key name enties
+        config_list = list(map(str.lower,
+                               (map(str, build_report["report"].keys()))))
+
+        # Only choose the tests that have been defined in the map
+        test_config_list = [n for n in fvp_config_map.list()
+                            if n in config_list]
+
+        # Use the Build manager to calcuate the rejection list in the same
+        # manner.
+        rj = TFM_Build_Manager.generate_rejection_list(
+            build_cfg["seed_params"],
+            build_cfg["common_params"],
+            fvp_config_map.get_invalid()).keys()
+
+        # Remove every config that is included in the rejection.
+        # Ignore generated rejection configs that have not been set in the
+        # test map.
+        for name in rj:
+            name = name.lower()
+            try:
+                test_config_list.pop(test_config_list.index(name))
+                print("Rejecting config %s" % name)
+            except Exception as e:
+                print("Rejection ignored with exception:", e)
+    else:
+        print("Noting to do. Please provide a report or a config name to test")
+        sys.exit(1)
+
+    # Apply filters if specified by user
+    if user_args.build_armclang:
+        test_config_list = cfilter(test_config_list, "armclang")
+    elif user_args.build_gnuarm:
+        test_config_list = cfilter(test_config_list, "gnuarm")
+    elif user_args.filter:
+        test_config_list = cfilter(test_config_list, user_args.filter)
+    else:
+        pass
+
+    print("Working on Test list: \n%s" % "\n".join(sorted(test_config_list)))
+
+    if user_args.p_command:
+
+        for test_cfg in test_config_list:
+
+            test_cfg_obj = fvp_config_map.get_config_object(test_cfg)
+            _tmp_cfg = FastmodelWrapper(fvp_cfg=test_cfg_obj.get_config())
+
+            print("\nCommand line:")
+            print("")
+            _tmp_cfg.show_cmd()
+            print("\n")
+        sys.exit(0)
+
+    # Run tests
+    rep = []
+    test_count = 0
+    for test_cfg in test_config_list:
+
+        # Check if the config hardcoded binary path is same as the one
+        # in the build report. If not update the config
+        test_cfg_obj = fvp_config_map.get_config_object(test_cfg)
+
+        rep.append(FastmodelWrapper(
+                   fvp_cfg=test_cfg_obj.get_config())
+                   .start().block_wait().test().save_report().get_report())
+        test_count += 1
+        print("Testing progress:")
+        show_progress(test_count, len(test_config_list))
+
+    # Export the report in a file
+    if user_args.report:
+        f_report = {"report": {}, "_metadata_": {}}
+        f_report["report"] = {k["name"]: deepcopy(k) for k in rep}
+        save_json(user_args.report, f_report)
+
+    sl = [x["name"] for x in rep if x["success"] is True]
+    fl = [x["name"] for x in rep if x["success"] is False]
+
+    print("\n")
+
+    if sl:
+        print_test(t_list=sl, status="passed", tname="Tests")
+    if fl:
+        print_test(t_list=fl, status="failed", tname="Tests")
+        if user_args.eif:
+            sys.exit(1)
+
+
+def get_cmd_args():
+    """ Parse command line arguments """
+
+    # Parse command line arguments to override config
+    parser = argparse.ArgumentParser(description="TFM Fastmodel wrapper.")
+    parser.add_argument("-b", "--build_report",
+                        dest="build_report",
+                        action="store",
+                        help="JSON file produced by build_helper (input)")
+    parser.add_argument("-a", "--build_all",
+                        dest="build_all",
+                        action="store_true",
+                        help="If set build every configuration combination")
+    parser.add_argument("-e", "--error_if_failed",
+                        dest="eif",
+                        action="store_true",
+                        help="If set will change the script exit code if one "
+                              "or more tests fail")
+    parser.add_argument("-r", "--report",
+                        dest="report",
+                        action="store",
+                        help="JSON file containing fastmodel report (output)")
+    parser.add_argument("-g", "--build_gnuarm",
+                        dest="build_gnuarm",
+                        action="store_true",
+                        help="If set build every gnuarm configuration")
+    parser.add_argument("-c", "--build_armclang",
+                        dest="build_armclang",
+                        action="store_true",
+                        help="If set build every armclang configuration")
+    parser.add_argument("-f", "--filter",
+                        dest="filter",
+                        action="store",
+                        help="Only select configs that contain this string")
+    parser.add_argument("-l", "--list-configs",
+                        dest="list_cfg",
+                        action="store_true",
+                        help="Print a list of the built-in configurations and"
+                             "exit")
+    parser.add_argument("-s", "--single-config",
+                        dest="single_cfg",
+                        action="store",
+                        help="Launch testing for a single built-in config,  "
+                              "picked by name")
+    parser.add_argument("-p", "--print-command",
+                        dest="p_command",
+                        action="store_true",
+                        help="Print the FPV launch command to console & exit")
+    return parser.parse_args()
+
+
+if __name__ == "__main__":
+    main(get_cmd_args())
diff --git a/fastmodel_dispatcher/fastmodel_dispatcher_configs.py b/fastmodel_dispatcher/fastmodel_dispatcher_configs.py
new file mode 100644
index 0000000..4b698a9
--- /dev/null
+++ b/fastmodel_dispatcher/fastmodel_dispatcher_configs.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+""" run_fvp_configs.py:
+
+    Using Python clas inheritance model to generate modular and easily to scale
+    configuration models for the run_fpv module. Configuration data is also
+    combined with helper methods. If the file is run as a standalone file,
+    it can save json configuration files to disk if requested by --export
+    directive """
+
+from __future__ import print_function
+
+__copyright__ = """
+/*
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+ """
+__author__ = "Minos Galanakis"
+__email__ = "minos.galanakis@linaro.org"
+__project__ = "Trusted Firmware-M Open CI"
+__status__ = "stable"
+__version__ = "1.1"
+
+import sys
+from AN521 import AN521
+from AN519 import AN519
+
+fvp_config_map = AN521 + AN519
+
+if __name__ == "__main__":
+    # Create Json configuration files on user request
+
+    if len(sys.argv) >= 2:
+        if sys.argv[1] == "--export":
+
+            for platform in fvp_config_map.get_object_map().values():
+                for config in platform.values():
+                    config.json_to_file()
