Repository: NVIDIA/NVFlare (language: python)

Issue:
Removed the app_opt scan
Fixes # .

### Description

Removed the app_opt scan, to solve the slow server / client and simulator startup issue.


### Types of changes
<!--- Put an `x` in all the boxes that apply, and remove the not applicable items -->
- [x] Non-breaking change (fix or new feature that would not break existing functionality).
- [ ] Breaking change (fix or new feature that would cause existing functionality to change).
- [ ] New tests added to cover the changes.
- [ ] Quick tests passed locally by running `./runtest.sh`.
- [ ] In-line docstrings updated.
- [ ] Documentation updated.

more app_opt scan example changes
Fixes # .

### Description

More examples app_opt scan "name" --> "path" changes.


### Types of changes
<!--- Put an `x` in all the boxes that apply, and remove the not applicable items -->
- [x] Non-breaking change (fix or new feature that would not break existing functionality).
- [ ] Breaking change (fix or new feature that would cause existing functionality to change).
- [ ] New tests added to cover the changes.
- [ ] Quick tests passed locally by running `./runtest.sh`.
- [ ] In-line docstrings updated.
- [ ] Documentation updated.



Discussion / hints:
/build
/build

Fix patch:
diff --git a/docs/resources/init_weights_1_config_fed_server.json b/docs/resources/init_weights_1_config_fed_server.json
index 5a9703e3a9..614f50753d 100644
--- a/docs/resources/init_weights_1_config_fed_server.json
+++ b/docs/resources/init_weights_1_config_fed_server.json
@@ -36,14 +36,14 @@
     "workflows": [
         {
             "id": "pre_train",
-            "name": "InitializeGlobalWeights",
+            "path": "nvflare.app_common.workflows.initialize_global_weights.InitializeGlobalWeights",
             "args": {
                 "task_name": "get_weights"
             }
         },
         {
             "id": "scatter_and_gather",
-            "name": "ScatterAndGather",
+            "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
             "args": {
                 "min_clients": 2,
                 "num_rounds": 2,
@@ -58,7 +58,7 @@
         },
         {
             "id": "cross_site_validate",
-            "name": "CrossSiteModelEval",
+            "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
             "args": {
                 "model_locator_id": "model_locator"
             }
diff --git a/examples/advanced/bionemo/task_fitting/jobs/fedavg/app/config/config_fed_server.json b/examples/advanced/bionemo/task_fitting/jobs/fedavg/app/config/config_fed_server.json
index 9dcf40dbcd..9c76702fe3 100644
--- a/examples/advanced/bionemo/task_fitting/jobs/fedavg/app/config/config_fed_server.json
+++ b/examples/advanced/bionemo/task_fitting/jobs/fedavg/app/config/config_fed_server.json
@@ -15,17 +15,17 @@
         },
         {
             "id": "shareable_generator",
-            "name": "FullModelShareableGenerator",
+            "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
             "args": {}
         },
         {
             "id": "aggregator",
-            "name": "InTimeAccumulateWeightedAggregator",
+            "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
             "args": {}
         },
         {
             "id": "model_selector",
-            "name": "IntimeModelSelector",
+            "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
             "args": {
                 "key_metric": "accuracy"
             }
@@ -39,14 +39,14 @@
         },
         {
             "id": "json_generator",
-            "name": "ValidationJsonGenerator",
+	    "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
             "args": {}
         }
     ],
     "workflows": [
         {
             "id": "scatter_gather_ctl",
-            "name": "ScatterAndGather",
+            "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
             "args": {
                 "min_clients": "{min_clients}",
                 "num_rounds": "{num_rounds}",
@@ -61,7 +61,7 @@
         },
         {
             "id": "cross_site_model_eval",
-            "name": "CrossSiteModelEval",
+            "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
             "args": {
                 "model_locator_id": "model_locator",
                 "submit_model_timeout": 600,
@@ -70,4 +70,4 @@
             }
         }
     ]
-}
\ No newline at end of file
+}
diff --git a/examples/advanced/brats18/configs/brats_central/app/config/config_fed_client.json b/examples/advanced/brats18/configs/brats_central/app/config/config_fed_client.json
index 3f8def02de..3b19f4ccf3 100644
--- a/examples/advanced/brats18/configs/brats_central/app/config/config_fed_client.json
+++ b/examples/advanced/brats18/configs/brats_central/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "brats-learner"
         }
diff --git a/examples/advanced/brats18/configs/brats_central/app/config/config_fed_server.json b/examples/advanced/brats18/configs/brats_central/app/config/config_fed_server.json
index c586f9bfc1..55d4e01ea2 100644
--- a/examples/advanced/brats18/configs/brats_central/app/config/config_fed_server.json
+++ b/examples/advanced/brats18/configs/brats_central/app/config/config_fed_server.json
@@ -36,17 +36,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -55,7 +55,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/brats18/configs/brats_fedavg/app/config/config_fed_client.json b/examples/advanced/brats18/configs/brats_fedavg/app/config/config_fed_client.json
index 3f8def02de..3b19f4ccf3 100644
--- a/examples/advanced/brats18/configs/brats_fedavg/app/config/config_fed_client.json
+++ b/examples/advanced/brats18/configs/brats_fedavg/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "brats-learner"
         }
diff --git a/examples/advanced/brats18/configs/brats_fedavg/app/config/config_fed_server.json b/examples/advanced/brats18/configs/brats_fedavg/app/config/config_fed_server.json
index 694ee740c2..5b3b203dc2 100644
--- a/examples/advanced/brats18/configs/brats_fedavg/app/config/config_fed_server.json
+++ b/examples/advanced/brats18/configs/brats_fedavg/app/config/config_fed_server.json
@@ -36,17 +36,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -55,7 +55,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/brats18/configs/brats_fedavg_dp/app/config/config_fed_client.json b/examples/advanced/brats18/configs/brats_fedavg_dp/app/config/config_fed_client.json
index 6e0ea08c41..457b3c775c 100644
--- a/examples/advanced/brats18/configs/brats_fedavg_dp/app/config/config_fed_client.json
+++ b/examples/advanced/brats18/configs/brats_fedavg_dp/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "brats-learner"
         }
diff --git a/examples/advanced/brats18/configs/brats_fedavg_dp/app/config/config_fed_server.json b/examples/advanced/brats18/configs/brats_fedavg_dp/app/config/config_fed_server.json
index 694ee740c2..5b3b203dc2 100644
--- a/examples/advanced/brats18/configs/brats_fedavg_dp/app/config/config_fed_server.json
+++ b/examples/advanced/brats18/configs/brats_fedavg_dp/app/config/config_fed_server.json
@@ -36,17 +36,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -55,7 +55,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_he/cifar10_fedavg_he/config/config_fed_server.json b/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_he/cifar10_fedavg_he/config/config_fed_server.json
index f94a64521f..a18266665a 100644
--- a/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_he/cifar10_fedavg_he/config/config_fed_server.json
+++ b/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_he/cifar10_fedavg_he/config/config_fed_server.json
@@ -53,7 +53,7 @@
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {}
     },
     {
@@ -65,14 +65,14 @@
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
       "args": {}
     }
   ],
   "workflows": [
       {
         "id": "scatter_gather_ctl",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : "{min_clients}",
             "num_rounds" : "{num_rounds}",
diff --git a/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_stream_tb/cifar10_fedavg_stream_tb/config/config_fed_client.json b/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_stream_tb/cifar10_fedavg_stream_tb/config/config_fed_client.json
index c53409cd13..6aa8e5ca71 100644
--- a/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_stream_tb/cifar10_fedavg_stream_tb/config/config_fed_client.json
+++ b/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_stream_tb/cifar10_fedavg_stream_tb/config/config_fed_client.json
@@ -32,14 +32,14 @@
         },
         {
             "id": "analytic_sender",
-            "name": "AnalyticsSender",
+            "path": "nvflare.app_common.widgets.streaming.AnalyticsSender",
             "args": {
                 "event_type": "analytix_log_stats"
             }
         },
         {
             "id": "tb_analytics_receive",
-            "name": "TBAnalyticsReceiver",
+            "path": "nvflare.app_opt.tracking.tb.tb_receiver.TBAnalyticsReceiver",
             "args": {
                 "events": [
                     "analytix_log_stats"
@@ -48,7 +48,7 @@
         },
         {
             "id": "event_to_fed",
-            "name": "ConvertToFedEvent",
+            "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
             "args": {
                 "events_to_convert": [
                     "analytix_log_stats"
diff --git a/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_stream_tb/cifar10_fedavg_stream_tb/config/config_fed_server.json b/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_stream_tb/cifar10_fedavg_stream_tb/config/config_fed_server.json
index 41792cb7a1..dd9f080d86 100644
--- a/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_stream_tb/cifar10_fedavg_stream_tb/config/config_fed_server.json
+++ b/examples/advanced/cifar10/cifar10-real-world/jobs/cifar10_fedavg_stream_tb/cifar10_fedavg_stream_tb/config/config_fed_server.json
@@ -31,17 +31,17 @@
         },
         {
             "id": "shareable_generator",
-            "name": "FullModelShareableGenerator",
+            "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
             "args": {}
         },
         {
             "id": "aggregator",
-            "name": "InTimeAccumulateWeightedAggregator",
+            "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
             "args": {}
         },
         {
             "id": "model_selector",
-            "name": "IntimeModelSelector",
+            "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
             "args": {}
         },
         {
@@ -53,12 +53,12 @@
         },
         {
             "id": "json_generator",
-            "name": "ValidationJsonGenerator",
+            "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
             "args": {}
         },
         {
             "id": "tb_analytics_receive",
-            "name": "TBAnalyticsReceiver",
+            "path": "nvflare.app_opt.tracking.tb.tb_receiver.TBAnalyticsReceiver",
             "args": {
                 "events": [
                     "fed.analytix_log_stats"
@@ -69,7 +69,7 @@
     "workflows": [
         {
             "id": "scatter_gather_ctl",
-            "name": "ScatterAndGather",
+            "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
             "args": {
                 "min_clients": "{min_clients}",
                 "num_rounds": "{num_rounds}",
@@ -84,7 +84,7 @@
         },
         {
             "id": "cross_site_model_eval",
-            "name": "CrossSiteModelEval",
+            "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
             "args": {
                 "model_locator_id": "model_locator",
                 "submit_model_timeout": 600,
diff --git a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_central/cifar10_central/config/config_fed_server.json b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_central/cifar10_central/config/config_fed_server.json
index 08506cf818..aea2c7f98d 100644
--- a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_central/cifar10_central/config/config_fed_server.json
+++ b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_central/cifar10_central/config/config_fed_server.json
@@ -22,7 +22,7 @@
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {}
     },
     {
@@ -34,14 +34,14 @@
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
       "args": {}
     }
   ],
   "workflows": [
       {
           "id": "fedavg_ctl",
-          "name": "FedAvg",
+          "path": "nvflare.app_common.workflows.fed_avg.FedAvg",
           "args": {
               "num_clients": "{num_clients}",
               "num_rounds": "{num_rounds}",
@@ -50,7 +50,7 @@
       },
       {
         "id": "cross_site_model_eval",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator",
           "submit_model_timeout": 600,
diff --git a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedavg/cifar10_fedavg/config/config_fed_server.json b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedavg/cifar10_fedavg/config/config_fed_server.json
index 9c85cc8374..ad83aac034 100644
--- a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedavg/cifar10_fedavg/config/config_fed_server.json
+++ b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedavg/cifar10_fedavg/config/config_fed_server.json
@@ -31,7 +31,7 @@
         },
         {
             "id": "model_selector",
-            "name": "IntimeModelSelector",
+            "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
             "args": {}
         },
         {
@@ -43,14 +43,14 @@
         },
         {
             "id": "json_generator",
-            "name": "ValidationJsonGenerator",
+            "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
             "args": {}
         }
     ],
     "workflows": [
         {
             "id": "fedavg_ctl",
-            "name": "FedAvg",
+            "path": "nvflare.app_common.workflows.fed_avg.FedAvg",
             "args": {
                 "num_clients": "{num_clients}",
                 "num_rounds": "{num_rounds}",
@@ -59,7 +59,7 @@
         },
         {
             "id": "cross_site_model_eval",
-            "name": "CrossSiteModelEval",
+            "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
             "args": {
                 "model_locator_id": "model_locator",
                 "submit_model_timeout": 600,
diff --git a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedopt/cifar10_fedopt/config/config_fed_server.json b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedopt/cifar10_fedopt/config/config_fed_server.json
index 8a88d9f388..40e16170c2 100644
--- a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedopt/cifar10_fedopt/config/config_fed_server.json
+++ b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedopt/cifar10_fedopt/config/config_fed_server.json
@@ -60,13 +60,13 @@
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {
       }
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {}
     },
     {
@@ -78,14 +78,14 @@
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
       "args": {}
     }
   ],
   "workflows": [
       {
         "id": "scatter_gather_ctl",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : "{min_clients}",
             "num_rounds" : "{num_rounds}",
@@ -100,7 +100,7 @@
       },
       {
         "id": "cross_site_model_eval",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator",
           "submit_model_timeout": 600,
diff --git a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedprox/cifar10_fedprox/config/config_fed_server.json b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedprox/cifar10_fedprox/config/config_fed_server.json
index ab7762f368..d8cfebe9ea 100644
--- a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedprox/cifar10_fedprox/config/config_fed_server.json
+++ b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_fedprox/cifar10_fedprox/config/config_fed_server.json
@@ -34,7 +34,7 @@
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {}
     },
     {
@@ -46,14 +46,14 @@
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
       "args": {}
     }
   ],
   "workflows": [
       {
         "id": "fedavg_ctl",
-        "name": "FedAvg",
+        "path": "nvflare.app_common.workflows.fed_avg.FedAvg",
         "args": {
             "num_clients": "{num_clients}",
             "num_rounds": "{num_rounds}",
@@ -62,7 +62,7 @@
       },
       {
         "id": "cross_site_model_eval",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator",
           "submit_model_timeout": 600,
diff --git a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_scaffold/cifar10_scaffold/config/config_fed_server.json b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_scaffold/cifar10_scaffold/config/config_fed_server.json
index 3af5c7d895..34e097b3f6 100644
--- a/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_scaffold/cifar10_scaffold/config/config_fed_server.json
+++ b/examples/advanced/cifar10/cifar10-sim/jobs/cifar10_scaffold/cifar10_scaffold/config/config_fed_server.json
@@ -31,7 +31,7 @@
         },
         {
             "id": "model_selector",
-            "name": "IntimeModelSelector",
+            "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
             "args": {}
         },
         {
@@ -43,14 +43,14 @@
         },
         {
             "id": "json_generator",
-            "name": "ValidationJsonGenerator",
+            "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
             "args": {}
         }
     ],
     "workflows": [
         {
             "id": "scaffold_ctl",
-            "name": "Scaffold",
+            "path": "nvflare.app_common.workflows.scaffold.Scaffold",
             "args": {
                 "num_clients": "{num_clients}",
                 "num_rounds": "{num_rounds}",
@@ -60,7 +60,7 @@
         },
         {
             "id": "cross_site_model_eval",
-            "name": "CrossSiteModelEval",
+            "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
             "args": {
                 "model_locator_id": "model_locator",
                 "submit_model_timeout": 600,
diff --git a/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-mlflow/app/config/config_fed_client.conf b/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-mlflow/app/config/config_fed_client.conf
index 05c235266e..22f7a34e4a 100644
--- a/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-mlflow/app/config/config_fed_client.conf
+++ b/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-mlflow/app/config/config_fed_client.conf
@@ -38,7 +38,7 @@
     },
     {
       "id": "event_to_fed",
-      "name": "ConvertToFedEvent",
+      "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
       "args": {"events_to_convert": ["analytix_log_stats"], "fed_event_prefix": "fed."}
     }
   ]
diff --git a/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-mlflow/app/config/config_fed_server.conf b/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-mlflow/app/config/config_fed_server.conf
index 5b0f694a6a..f8a4e58b55 100644
--- a/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-mlflow/app/config/config_fed_server.conf
+++ b/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-mlflow/app/config/config_fed_server.conf
@@ -66,7 +66,7 @@
   "workflows": [
       {
         "id": "scatter_and_gather",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : 2,
             "num_rounds" : 1,
@@ -81,7 +81,7 @@
       },
       {
         "id": "cross_site_validate",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator"
         }
diff --git a/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-tb-mlflow/app/config/config_fed_client.conf b/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-tb-mlflow/app/config/config_fed_client.conf
index 76b893fb2a..5f9a1be186 100644
--- a/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-tb-mlflow/app/config/config_fed_client.conf
+++ b/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-tb-mlflow/app/config/config_fed_client.conf
@@ -38,7 +38,7 @@
     },
     {
       "id": "event_to_fed",
-      "name": "ConvertToFedEvent",
+      "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
       "args": {"events_to_convert": ["analytix_log_stats"], "fed_event_prefix": "fed."}
     }
   ]
diff --git a/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-tb-mlflow/app/config/config_fed_server.conf b/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-tb-mlflow/app/config/config_fed_server.conf
index 9f9932eb76..223a3dfb07 100644
--- a/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-tb-mlflow/app/config/config_fed_server.conf
+++ b/examples/advanced/experiment-tracking/mlflow/jobs/hello-pt-tb-mlflow/app/config/config_fed_server.conf
@@ -18,12 +18,12 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {
         "expected_data_kind": "WEIGHTS"
       }
@@ -67,7 +67,7 @@
   "workflows": [
       {
         "id": "scatter_and_gather",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : 2,
             "num_rounds" : 1,
@@ -82,7 +82,7 @@
       },
       {
         "id": "cross_site_validate",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator"
         }
diff --git a/examples/advanced/experiment-tracking/tensorboard/jobs/tensorboard-streaming/app/config/config_fed_client.json b/examples/advanced/experiment-tracking/tensorboard/jobs/tensorboard-streaming/app/config/config_fed_client.json
index 76b893fb2a..5f9a1be186 100644
--- a/examples/advanced/experiment-tracking/tensorboard/jobs/tensorboard-streaming/app/config/config_fed_client.json
+++ b/examples/advanced/experiment-tracking/tensorboard/jobs/tensorboard-streaming/app/config/config_fed_client.json
@@ -38,7 +38,7 @@
     },
     {
       "id": "event_to_fed",
-      "name": "ConvertToFedEvent",
+      "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
       "args": {"events_to_convert": ["analytix_log_stats"], "fed_event_prefix": "fed."}
     }
   ]
diff --git a/examples/advanced/experiment-tracking/tensorboard/jobs/tensorboard-streaming/app/config/config_fed_server.json b/examples/advanced/experiment-tracking/tensorboard/jobs/tensorboard-streaming/app/config/config_fed_server.json
index a16deff3ac..9efd8e9503 100644
--- a/examples/advanced/experiment-tracking/tensorboard/jobs/tensorboard-streaming/app/config/config_fed_server.json
+++ b/examples/advanced/experiment-tracking/tensorboard/jobs/tensorboard-streaming/app/config/config_fed_server.json
@@ -19,12 +19,12 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {
         "expected_data_kind": "WEIGHTS"
       }
@@ -43,14 +43,14 @@
     },
     {
       "id": "tb_analytics_receiver",
-      "name": "TBAnalyticsReceiver",
+      "path": "nvflare.app_opt.tracking.tb.tb_receiver.TBAnalyticsReceiver",
       "args": {"events": ["fed.analytix_log_stats"]}
     }
   ],
   "workflows": [
       {
         "id": "scatter_and_gather",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : 2,
             "num_rounds" : 1,
@@ -65,7 +65,7 @@
       },
       {
         "id": "cross_site_validate",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator"
         }
diff --git a/examples/advanced/experiment-tracking/wandb/jobs/hello-pt-wandb/app/config/config_fed_client.json b/examples/advanced/experiment-tracking/wandb/jobs/hello-pt-wandb/app/config/config_fed_client.json
index 4ac428232c..b9169df934 100644
--- a/examples/advanced/experiment-tracking/wandb/jobs/hello-pt-wandb/app/config/config_fed_client.json
+++ b/examples/advanced/experiment-tracking/wandb/jobs/hello-pt-wandb/app/config/config_fed_client.json
@@ -38,7 +38,7 @@
     },
     {
       "id": "event_to_fed",
-      "name": "ConvertToFedEvent",
+      "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
       "args": {"events_to_convert": ["analytix_log_stats"], "fed_event_prefix": "fed."}
     }
   ]
diff --git a/examples/advanced/experiment-tracking/wandb/jobs/hello-pt-wandb/app/config/config_fed_server.json b/examples/advanced/experiment-tracking/wandb/jobs/hello-pt-wandb/app/config/config_fed_server.json
index dc170f82ae..5f0ac1347f 100644
--- a/examples/advanced/experiment-tracking/wandb/jobs/hello-pt-wandb/app/config/config_fed_server.json
+++ b/examples/advanced/experiment-tracking/wandb/jobs/hello-pt-wandb/app/config/config_fed_server.json
@@ -60,7 +60,7 @@
   "workflows": [
       {
         "id": "scatter_and_gather",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : 2,
             "num_rounds" : 1,
@@ -75,7 +75,7 @@
       },
       {
         "id": "cross_site_validate",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator"
         }
diff --git a/examples/advanced/federated-statistics/df_stats/jobs/df_stats/app/config/config_fed_client.json b/examples/advanced/federated-statistics/df_stats/jobs/df_stats/app/config/config_fed_client.json
index 9733b3f274..858431b138 100644
--- a/examples/advanced/federated-statistics/df_stats/jobs/df_stats/app/config/config_fed_client.json
+++ b/examples/advanced/federated-statistics/df_stats/jobs/df_stats/app/config/config_fed_client.json
@@ -19,7 +19,7 @@
       "tasks": ["fed_stats"],
       "filters":[
         {
-          "name": "StatisticsPrivacyFilter",
+          "path": "nvflare.app_common.filters.statistics_privacy_filter.StatisticsPrivacyFilter",
           "args": {
             "result_cleanser_ids": [
               "min_count_cleanser",
diff --git a/examples/advanced/federated-statistics/image_stats/jobs/image_stats/app/config/config_fed_client.json b/examples/advanced/federated-statistics/image_stats/jobs/image_stats/app/config/config_fed_client.json
index d712868200..7751a578e9 100644
--- a/examples/advanced/federated-statistics/image_stats/jobs/image_stats/app/config/config_fed_client.json
+++ b/examples/advanced/federated-statistics/image_stats/jobs/image_stats/app/config/config_fed_client.json
@@ -19,7 +19,7 @@
       "tasks": ["fed_stats"],
       "filters":[
         {
-          "name": "StatisticsPrivacyFilter",
+          "path": "nvflare.app_common.filters.statistics_privacy_filter.StatisticsPrivacyFilter",
           "args": {
             "result_cleanser_ids": [
               "min_count_cleanser"
diff --git a/examples/advanced/federated-statistics/local/privacy.json b/examples/advanced/federated-statistics/local/privacy.json
index ce7ae9940f..88c11b45f2 100644
--- a/examples/advanced/federated-statistics/local/privacy.json
+++ b/examples/advanced/federated-statistics/local/privacy.json
@@ -4,7 +4,7 @@
       "name": "data-exploratory-policy",
       "task_result_filters": [
         {
-          "name": "StatisticsPrivacyFilter",
+          "path": "nvflare.app_common.filters.statistics_privacy_filter.StatisticsPrivacyFilter",
           "args": {
             "result_cleanser_ids": [
               "min_count_cleanser",
diff --git a/examples/advanced/finance/jobs/2_bagging/app_server/config/config_fed_server.json b/examples/advanced/finance/jobs/2_bagging/app_server/config/config_fed_server.json
index 69f12e3cc3..061bad10a7 100644
--- a/examples/advanced/finance/jobs/2_bagging/app_server/config/config_fed_server.json
+++ b/examples/advanced/finance/jobs/2_bagging/app_server/config/config_fed_server.json
@@ -28,7 +28,7 @@
     "workflows": [
         {
             "id": "scatter_and_gather",
-            "name": "ScatterAndGather",
+            "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
             "args": {
                 "min_clients": 2,
                 "num_rounds": 100,
diff --git a/examples/advanced/finance/jobs/2_bagging/app_site-1/config/config_fed_client.json b/examples/advanced/finance/jobs/2_bagging/app_site-1/config/config_fed_client.json
index c2ffb5e6a3..06fef9ab2d 100644
--- a/examples/advanced/finance/jobs/2_bagging/app_site-1/config/config_fed_client.json
+++ b/examples/advanced/finance/jobs/2_bagging/app_site-1/config/config_fed_client.json
@@ -7,7 +7,7 @@
             ],
             "executor": {
                 "id": "Executor",
-                "name": "FedXGBTreeExecutor",
+                "path": "nvflare.app_opt.xgboost.tree_based.executor.FedXGBTreeExecutor",
                 "args": {
                     "data_loader_id": "dataloader",
                     "training_mode": "bagging",
diff --git a/examples/advanced/finance/jobs/2_bagging/app_site-2/config/config_fed_client.json b/examples/advanced/finance/jobs/2_bagging/app_site-2/config/config_fed_client.json
index dc0d85f8af..3210f8bf72 100644
--- a/examples/advanced/finance/jobs/2_bagging/app_site-2/config/config_fed_client.json
+++ b/examples/advanced/finance/jobs/2_bagging/app_site-2/config/config_fed_client.json
@@ -7,7 +7,7 @@
             ],
             "executor": {
                 "id": "Executor",
-                "name": "FedXGBTreeExecutor",
+                "path": "nvflare.app_opt.xgboost.tree_based.executor.FedXGBTreeExecutor",
                 "args": {
                     "data_loader_id": "dataloader",
                     "training_mode": "bagging",
diff --git a/examples/advanced/finance/jobs/2_cyclic/app_site-1/config/config_fed_client.json b/examples/advanced/finance/jobs/2_cyclic/app_site-1/config/config_fed_client.json
index daf30c8223..a8aa3b07ef 100644
--- a/examples/advanced/finance/jobs/2_cyclic/app_site-1/config/config_fed_client.json
+++ b/examples/advanced/finance/jobs/2_cyclic/app_site-1/config/config_fed_client.json
@@ -7,7 +7,7 @@
             ],
             "executor": {
                 "id": "Executor",
-                "name": "FedXGBTreeExecutor",
+                "path": "nvflare.app_opt.xgboost.tree_based.executor.FedXGBTreeExecutor",
                 "args": {
                     "data_loader_id": "dataloader",
                     "training_mode": "cyclic",
diff --git a/examples/advanced/finance/jobs/2_cyclic/app_site-2/config/config_fed_client.json b/examples/advanced/finance/jobs/2_cyclic/app_site-2/config/config_fed_client.json
index 197e777905..1ff6b65b72 100644
--- a/examples/advanced/finance/jobs/2_cyclic/app_site-2/config/config_fed_client.json
+++ b/examples/advanced/finance/jobs/2_cyclic/app_site-2/config/config_fed_client.json
@@ -7,7 +7,7 @@
             ],
             "executor": {
                 "id": "Executor",
-                "name": "FedXGBTreeExecutor",
+                "path": "nvflare.app_opt.xgboost.tree_based.executor.FedXGBTreeExecutor",
                 "args": {
                     "data_loader_id": "dataloader",
                     "training_mode": "cyclic",
diff --git a/examples/advanced/finance/jobs/vertical_xgb_psi/app/config/config_fed_client.json b/examples/advanced/finance/jobs/vertical_xgb_psi/app/config/config_fed_client.json
index 39abd661b9..eff6e41fbd 100644
--- a/examples/advanced/finance/jobs/vertical_xgb_psi/app/config/config_fed_client.json
+++ b/examples/advanced/finance/jobs/vertical_xgb_psi/app/config/config_fed_client.json
@@ -7,7 +7,7 @@
       ],
       "executor": {
         "id": "psi_executor",
-        "name": "PSIExecutor",
+        "path": "nvflare.app_common.psi.psi_executor.PSIExecutor",
         "args": {
           "psi_algo_id": "dh_psi"
         }
@@ -17,7 +17,7 @@
   "components": [
     {
       "id": "dh_psi",
-      "name": "DhPSITaskHandler",
+      "path": "nvflare.app_common.psi.dh_psi.dh_psi_task_handler.DhPSITaskHandler",
       "args": {
         "local_psi_id": "local_psi"
       }
@@ -33,7 +33,7 @@
     },
     {
       "id": "psi_writer",
-      "name": "FilePSIWriter",
+      "path": "nvflare.app_common.psi.file_psi_writer.FilePSIWriter",
       "args": {
         "output_path": "psi/intersection.txt"
       }
diff --git a/examples/advanced/finance/jobs/vertical_xgb_psi/app/config/config_fed_server.json b/examples/advanced/finance/jobs/vertical_xgb_psi/app/config/config_fed_server.json
index 0552c395e1..49e84e6d57 100644
--- a/examples/advanced/finance/jobs/vertical_xgb_psi/app/config/config_fed_server.json
+++ b/examples/advanced/finance/jobs/vertical_xgb_psi/app/config/config_fed_server.json
@@ -3,7 +3,7 @@
   "workflows": [
     {
       "id": "controller",
-      "name": "DhPSIController",
+      "path": "nvflare.app_common.psi.dh_psi.dh_psi_controller.DhPSIController",
       "args": {
       }
     }
diff --git a/examples/advanced/nlp-ner/jobs/bert_ncbi/app/config/config_fed_client.json b/examples/advanced/nlp-ner/jobs/bert_ncbi/app/config/config_fed_client.json
index 168c10b868..87416a6f2a 100644
--- a/examples/advanced/nlp-ner/jobs/bert_ncbi/app/config/config_fed_client.json
+++ b/examples/advanced/nlp-ner/jobs/bert_ncbi/app/config/config_fed_client.json
@@ -11,7 +11,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "nlp-learner"
         }
diff --git a/examples/advanced/nlp-ner/jobs/bert_ncbi/app/config/config_fed_server.json b/examples/advanced/nlp-ner/jobs/bert_ncbi/app/config/config_fed_server.json
index 63a91fb1c7..610699eeec 100644
--- a/examples/advanced/nlp-ner/jobs/bert_ncbi/app/config/config_fed_server.json
+++ b/examples/advanced/nlp-ner/jobs/bert_ncbi/app/config/config_fed_server.json
@@ -23,17 +23,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -42,7 +42,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/nlp-ner/jobs/gpt2_ncbi/app/config/config_fed_client.json b/examples/advanced/nlp-ner/jobs/gpt2_ncbi/app/config/config_fed_client.json
index 1ef3ef3ff9..8ffd15ec67 100644
--- a/examples/advanced/nlp-ner/jobs/gpt2_ncbi/app/config/config_fed_client.json
+++ b/examples/advanced/nlp-ner/jobs/gpt2_ncbi/app/config/config_fed_client.json
@@ -11,7 +11,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "nlp-learner"
         }
diff --git a/examples/advanced/nlp-ner/jobs/gpt2_ncbi/app/config/config_fed_server.json b/examples/advanced/nlp-ner/jobs/gpt2_ncbi/app/config/config_fed_server.json
index 4cb7d0da53..994cb35c52 100644
--- a/examples/advanced/nlp-ner/jobs/gpt2_ncbi/app/config/config_fed_server.json
+++ b/examples/advanced/nlp-ner/jobs/gpt2_ncbi/app/config/config_fed_server.json
@@ -23,17 +23,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -42,7 +42,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/prostate/prostate_2D/job_configs/prostate_central/app/config/config_fed_client.json b/examples/advanced/prostate/prostate_2D/job_configs/prostate_central/app/config/config_fed_client.json
index 7f4d9f4769..67ed3681a1 100644
--- a/examples/advanced/prostate/prostate_2D/job_configs/prostate_central/app/config/config_fed_client.json
+++ b/examples/advanced/prostate/prostate_2D/job_configs/prostate_central/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-learner"
         }
diff --git a/examples/advanced/prostate/prostate_2D/job_configs/prostate_central/app/config/config_fed_server.json b/examples/advanced/prostate/prostate_2D/job_configs/prostate_central/app/config/config_fed_server.json
index a48a948ad5..0bf1942b41 100644
--- a/examples/advanced/prostate/prostate_2D/job_configs/prostate_central/app/config/config_fed_server.json
+++ b/examples/advanced/prostate/prostate_2D/job_configs/prostate_central/app/config/config_fed_server.json
@@ -27,17 +27,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -46,7 +46,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/prostate/prostate_2D/job_configs/prostate_ditto/app/config/config_fed_client.json b/examples/advanced/prostate/prostate_2D/job_configs/prostate_ditto/app/config/config_fed_client.json
index 37d49f5f37..f334e84686 100644
--- a/examples/advanced/prostate/prostate_2D/job_configs/prostate_ditto/app/config/config_fed_client.json
+++ b/examples/advanced/prostate/prostate_2D/job_configs/prostate_ditto/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-learner"
         }
diff --git a/examples/advanced/prostate/prostate_2D/job_configs/prostate_ditto/app/config/config_fed_server.json b/examples/advanced/prostate/prostate_2D/job_configs/prostate_ditto/app/config/config_fed_server.json
index 69ff02937d..3086859888 100644
--- a/examples/advanced/prostate/prostate_2D/job_configs/prostate_ditto/app/config/config_fed_server.json
+++ b/examples/advanced/prostate/prostate_2D/job_configs/prostate_ditto/app/config/config_fed_server.json
@@ -27,17 +27,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -46,7 +46,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedavg/app/config/config_fed_client.json b/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedavg/app/config/config_fed_client.json
index cd52543fc3..329c8a78b7 100644
--- a/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedavg/app/config/config_fed_client.json
+++ b/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedavg/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-learner"
         }
diff --git a/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedavg/app/config/config_fed_server.json b/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedavg/app/config/config_fed_server.json
index 69ff02937d..3086859888 100644
--- a/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedavg/app/config/config_fed_server.json
+++ b/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedavg/app/config/config_fed_server.json
@@ -27,17 +27,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -46,7 +46,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedprox/app/config/config_fed_client.json b/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedprox/app/config/config_fed_client.json
index cd52543fc3..329c8a78b7 100644
--- a/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedprox/app/config/config_fed_client.json
+++ b/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedprox/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-learner"
         }
diff --git a/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedprox/app/config/config_fed_server.json b/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedprox/app/config/config_fed_server.json
index 69ff02937d..3086859888 100644
--- a/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedprox/app/config/config_fed_server.json
+++ b/examples/advanced/prostate/prostate_2D/job_configs/prostate_fedprox/app/config/config_fed_server.json
@@ -27,17 +27,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -46,7 +46,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/prostate/prostate_3D/job_configs/prostate_central/app/config/config_fed_client.json b/examples/advanced/prostate/prostate_3D/job_configs/prostate_central/app/config/config_fed_client.json
index e0d875f833..9f14793642 100644
--- a/examples/advanced/prostate/prostate_3D/job_configs/prostate_central/app/config/config_fed_client.json
+++ b/examples/advanced/prostate/prostate_3D/job_configs/prostate_central/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-learner"
         }
diff --git a/examples/advanced/prostate/prostate_3D/job_configs/prostate_central/app/config/config_fed_server.json b/examples/advanced/prostate/prostate_3D/job_configs/prostate_central/app/config/config_fed_server.json
index 7c77429fd6..fcf8bc39a0 100644
--- a/examples/advanced/prostate/prostate_3D/job_configs/prostate_central/app/config/config_fed_server.json
+++ b/examples/advanced/prostate/prostate_3D/job_configs/prostate_central/app/config/config_fed_server.json
@@ -27,17 +27,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -46,7 +46,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/prostate/prostate_3D/job_configs/prostate_ditto/app/config/config_fed_client.json b/examples/advanced/prostate/prostate_3D/job_configs/prostate_ditto/app/config/config_fed_client.json
index eb42fbc7a9..ac79fde080 100644
--- a/examples/advanced/prostate/prostate_3D/job_configs/prostate_ditto/app/config/config_fed_client.json
+++ b/examples/advanced/prostate/prostate_3D/job_configs/prostate_ditto/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-learner"
         }
diff --git a/examples/advanced/prostate/prostate_3D/job_configs/prostate_ditto/app/config/config_fed_server.json b/examples/advanced/prostate/prostate_3D/job_configs/prostate_ditto/app/config/config_fed_server.json
index 95bb5d3a14..dd1e3790c9 100644
--- a/examples/advanced/prostate/prostate_3D/job_configs/prostate_ditto/app/config/config_fed_server.json
+++ b/examples/advanced/prostate/prostate_3D/job_configs/prostate_ditto/app/config/config_fed_server.json
@@ -27,17 +27,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -46,7 +46,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedavg/app/config/config_fed_client.json b/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedavg/app/config/config_fed_client.json
index e0d875f833..9f14793642 100644
--- a/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedavg/app/config/config_fed_client.json
+++ b/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedavg/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-learner"
         }
diff --git a/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedavg/app/config/config_fed_server.json b/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedavg/app/config/config_fed_server.json
index 95bb5d3a14..dd1e3790c9 100644
--- a/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedavg/app/config/config_fed_server.json
+++ b/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedavg/app/config/config_fed_server.json
@@ -27,17 +27,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -46,7 +46,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedprox/app/config/config_fed_client.json b/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedprox/app/config/config_fed_client.json
index e0d875f833..9f14793642 100644
--- a/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedprox/app/config/config_fed_client.json
+++ b/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedprox/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-learner"
         }
diff --git a/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedprox/app/config/config_fed_server.json b/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedprox/app/config/config_fed_server.json
index 95bb5d3a14..dd1e3790c9 100644
--- a/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedprox/app/config/config_fed_server.json
+++ b/examples/advanced/prostate/prostate_3D/job_configs/prostate_fedprox/app/config/config_fed_server.json
@@ -27,17 +27,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -46,7 +46,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/examples/advanced/random_forest/jobs/random_forest_base/app/config/config_fed_client.json b/examples/advanced/random_forest/jobs/random_forest_base/app/config/config_fed_client.json
index a009a16170..d5548df443 100755
--- a/examples/advanced/random_forest/jobs/random_forest_base/app/config/config_fed_client.json
+++ b/examples/advanced/random_forest/jobs/random_forest_base/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "FedXGBTreeExecutor",
+        "path": "nvflare.app_opt.xgboost.tree_based.executor.FedXGBTreeExecutor",
         "args": {
           "data_loader_id": "dataloader",
           "training_mode": "bagging",
diff --git a/examples/advanced/random_forest/jobs/random_forest_base/app/config/config_fed_server.json b/examples/advanced/random_forest/jobs/random_forest_base/app/config/config_fed_server.json
index 9faeb1ab69..de80119821 100755
--- a/examples/advanced/random_forest/jobs/random_forest_base/app/config/config_fed_server.json
+++ b/examples/advanced/random_forest/jobs/random_forest_base/app/config/config_fed_server.json
@@ -31,7 +31,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": 5,
         "num_rounds": 1,
diff --git a/examples/advanced/sklearn-kmeans/jobs/sklearn_kmeans_base/app/config/config_fed_server.json b/examples/advanced/sklearn-kmeans/jobs/sklearn_kmeans_base/app/config/config_fed_server.json
index 81c3f0dd55..c1c4ffacce 100755
--- a/examples/advanced/sklearn-kmeans/jobs/sklearn_kmeans_base/app/config/config_fed_server.json
+++ b/examples/advanced/sklearn-kmeans/jobs/sklearn_kmeans_base/app/config/config_fed_server.json
@@ -20,7 +20,7 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
@@ -39,7 +39,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients" : "{min_clients}",
         "num_rounds" : "{num_rounds}",
diff --git a/examples/advanced/sklearn-linear/jobs/sklearn_linear_base/app/config/config_fed_server.json b/examples/advanced/sklearn-linear/jobs/sklearn_linear_base/app/config/config_fed_server.json
index f39698068a..0491ee45a0 100755
--- a/examples/advanced/sklearn-linear/jobs/sklearn_linear_base/app/config/config_fed_server.json
+++ b/examples/advanced/sklearn-linear/jobs/sklearn_linear_base/app/config/config_fed_server.json
@@ -25,12 +25,12 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {
         "expected_data_kind": "WEIGHTS"
       }
@@ -39,7 +39,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients" : "{min_clients}",
         "num_rounds" : "{num_rounds}",
diff --git a/examples/advanced/sklearn-svm/jobs/sklearn_svm_base/app/config/config_fed_server.json b/examples/advanced/sklearn-svm/jobs/sklearn_svm_base/app/config/config_fed_server.json
index 4806a5e43f..0b04508487 100755
--- a/examples/advanced/sklearn-svm/jobs/sklearn_svm_base/app/config/config_fed_server.json
+++ b/examples/advanced/sklearn-svm/jobs/sklearn_svm_base/app/config/config_fed_server.json
@@ -20,7 +20,7 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
@@ -41,7 +41,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients" : "{min_clients}",
         "num_rounds" : "{num_rounds}",
diff --git a/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/server/config/config_fed_server.json b/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/server/config/config_fed_server.json
index a4460d7778..c4ce0c9fe0 100644
--- a/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/server/config/config_fed_server.json
+++ b/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/server/config/config_fed_server.json
@@ -3,7 +3,7 @@
   "workflows": [
     {
       "id": "DhPSIController",
-      "name": "DhPSIController",
+      "path": "nvflare.app_common.psi.dh_psi.dh_psi_controller.DhPSIController",
       "args": {
       }
     }
diff --git a/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/site-1/config/config_fed_client.json b/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/site-1/config/config_fed_client.json
index dd2d6a73f8..7d51890a85 100644
--- a/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/site-1/config/config_fed_client.json
+++ b/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/site-1/config/config_fed_client.json
@@ -7,7 +7,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "PSIExecutor",
+        "path": "nvflare.app_common.psi.psi_executor.PSIExecutor",
         "args": {
           "psi_algo_id": "dh_psi"
         }
@@ -17,7 +17,7 @@
   "components": [
     {
       "id": "dh_psi",
-      "name": "DhPSITaskHandler",
+      "path": "nvflare.app_common.psi.dh_psi.dh_psi_task_handler.DhPSITaskHandler",
       "args": {
         "local_psi_id": "local_psi"
       }
@@ -32,7 +32,7 @@
     },
     {
       "id": "psi_writer",
-      "name": "FilePSIWriter",
+      "path": "nvflare.app_common.psi.file_psi_writer.FilePSIWriter",
       "args": {
         "output_path": "psi/intersection.txt"
       }
diff --git a/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/site-2/config/config_fed_client.json b/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/site-2/config/config_fed_client.json
index 3eb82cad1a..5c89538e68 100644
--- a/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/site-2/config/config_fed_client.json
+++ b/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_psi/site-2/config/config_fed_client.json
@@ -7,7 +7,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "PSIExecutor",
+        "path": "nvflare.app_common.psi.psi_executor.PSIExecutor",
         "args": {
           "psi_algo_id": "dh_psi"
         }
@@ -17,7 +17,7 @@
   "components": [
     {
       "id": "dh_psi",
-      "name": "DhPSITaskHandler",
+      "path": "nvflare.app_common.psi.dh_psi.dh_psi_task_handler.DhPSITaskHandler",
       "args": {
         "local_psi_id": "local_psi"
       }
@@ -32,7 +32,7 @@
     },
     {
       "id": "psi_writer",
-      "name": "FilePSIWriter",
+      "path": "nvflare.app_common.psi.file_psi_writer.FilePSIWriter",
       "args": {
         "output_path": "psi/intersection.txt"
       }
diff --git a/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_splitnn/server/config/config_fed_server.json b/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_splitnn/server/config/config_fed_server.json
index 05038c2cea..e548648380 100644
--- a/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_splitnn/server/config/config_fed_server.json
+++ b/examples/advanced/vertical_federated_learning/cifar10-splitnn/jobs/cifar10_splitnn/server/config/config_fed_server.json
@@ -21,12 +21,12 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
       "args": {}
     }
   ],
diff --git a/examples/advanced/xgboost/histogram-based/jobs/base/app/config/config_fed_client.json b/examples/advanced/xgboost/histogram-based/jobs/base/app/config/config_fed_client.json
index 52697b10fe..a3fe316d90 100755
--- a/examples/advanced/xgboost/histogram-based/jobs/base/app/config/config_fed_client.json
+++ b/examples/advanced/xgboost/histogram-based/jobs/base/app/config/config_fed_client.json
@@ -43,7 +43,7 @@
     },
     {
       "id": "event_to_fed",
-      "name": "ConvertToFedEvent",
+      "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
       "args": {"events_to_convert": ["analytix_log_stats"], "fed_event_prefix": "fed."}
     }
   ]
diff --git a/examples/advanced/xgboost/histogram-based/jobs/base_v2/app/config/config_fed_client.json b/examples/advanced/xgboost/histogram-based/jobs/base_v2/app/config/config_fed_client.json
index e436af170b..a23a960c3d 100755
--- a/examples/advanced/xgboost/histogram-based/jobs/base_v2/app/config/config_fed_client.json
+++ b/examples/advanced/xgboost/histogram-based/jobs/base_v2/app/config/config_fed_client.json
@@ -32,7 +32,7 @@
     },
     {
       "id": "event_to_fed",
-      "name": "ConvertToFedEvent",
+      "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
       "args": {"events_to_convert": ["analytix_log_stats"], "fed_event_prefix": "fed."}
     }
   ]
diff --git a/examples/advanced/xgboost/tree-based/jobs/bagging_base/app/config/config_fed_server.json b/examples/advanced/xgboost/tree-based/jobs/bagging_base/app/config/config_fed_server.json
index cc364d7f59..cfd7b83b54 100755
--- a/examples/advanced/xgboost/tree-based/jobs/bagging_base/app/config/config_fed_server.json
+++ b/examples/advanced/xgboost/tree-based/jobs/bagging_base/app/config/config_fed_server.json
@@ -27,7 +27,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": 5,
         "num_rounds": "{num_rounds}",
diff --git a/examples/hello-world/hello-ccwf/jobs/swarm_cse_numpy/app/config/config_fed_server.json b/examples/hello-world/hello-ccwf/jobs/swarm_cse_numpy/app/config/config_fed_server.json
index 2f5ec96b98..a6ccc47054 100644
--- a/examples/hello-world/hello-ccwf/jobs/swarm_cse_numpy/app/config/config_fed_server.json
+++ b/examples/hello-world/hello-ccwf/jobs/swarm_cse_numpy/app/config/config_fed_server.json
@@ -5,7 +5,7 @@
   "components": [
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator.ValidationJsonGenerator",
       "args": {}
     }
   ],
@@ -23,4 +23,4 @@
       "args": {}
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/integration/monai/examples/mednist/job_templates/fedavg_mednist/config_fed_client.conf b/integration/monai/examples/mednist/job_templates/fedavg_mednist/config_fed_client.conf
index 47c9d32c80..13bfbd094c 100644
--- a/integration/monai/examples/mednist/job_templates/fedavg_mednist/config_fed_client.conf
+++ b/integration/monai/examples/mednist/job_templates/fedavg_mednist/config_fed_client.conf
@@ -60,7 +60,7 @@
   components =  [
       {
         "id": "event_to_fed",
-        "name": "ConvertToFedEvent",
+        "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
         "args": {"events_to_convert": ["analytix_log_stats"], "fed_event_prefix": "fed."}
       }
    ]
diff --git a/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_he/app/config/config_fed_server.json b/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_he/app/config/config_fed_server.json
index 03f2b67976..843d13ff39 100644
--- a/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_he/app/config/config_fed_server.json
+++ b/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_he/app/config/config_fed_server.json
@@ -34,7 +34,7 @@
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {}
     },
     {
@@ -46,14 +46,14 @@
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator",
       "args": {}
     }
   ],
   "workflows": [
       {
         "id": "scatter_gather_ctl",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : "{min_clients}",
             "num_rounds" : "{num_rounds}",
diff --git a/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_local/app/config/config_fed_client.conf b/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_local/app/config/config_fed_client.conf
index 5dbe0401bf..051cb2847f 100644
--- a/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_local/app/config/config_fed_client.conf
+++ b/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_local/app/config/config_fed_client.conf
@@ -72,7 +72,7 @@
     },
     {
         "id": "event_to_fed",
-        "name": "ConvertToFedEvent",
+        "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
         "args": {
             "events_to_convert": [
                 "analytix_log_stats"
diff --git a/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_local/app/config/config_fed_server.conf b/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_local/app/config/config_fed_server.conf
index 62842a706f..2bca1439fd 100644
--- a/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_local/app/config/config_fed_server.conf
+++ b/integration/monai/examples/spleen_ct_segmentation_local/jobs/spleen_ct_segmentation_local/app/config/config_fed_server.conf
@@ -16,19 +16,19 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {
         "expected_data_kind": "WEIGHT_DIFF"
       }
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {}
     },
     {
@@ -40,7 +40,7 @@
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator",
       "args": {}
     },
     {
@@ -65,7 +65,7 @@
   "workflows": [
       {
         "id": "scatter_gather_ctl",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : "{min_clients}",
             "num_rounds" : "{num_rounds}",
@@ -80,7 +80,7 @@
       },
       {
         "id": "cross_site_model_eval",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator",
           "submit_model_timeout": 600,
diff --git a/integration/monai/examples/spleen_ct_segmentation_sim/job/app/config/config_fed_server.json b/integration/monai/examples/spleen_ct_segmentation_sim/job/app/config/config_fed_server.json
index 5ad75d3803..d3e6325946 100644
--- a/integration/monai/examples/spleen_ct_segmentation_sim/job/app/config/config_fed_server.json
+++ b/integration/monai/examples/spleen_ct_segmentation_sim/job/app/config/config_fed_server.json
@@ -16,19 +16,19 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {
         "expected_data_kind": "WEIGHT_DIFF"
       }
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {}
     },
     {
@@ -40,14 +40,14 @@
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator",
       "args": {}
     }
   ],
   "workflows": [
       {
         "id": "scatter_gather_ctl",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : "{min_clients}",
             "num_rounds" : "{num_rounds}",
@@ -62,7 +62,7 @@
       },
       {
         "id": "cross_site_model_eval",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator",
           "submit_model_timeout": 600,
diff --git a/integration/monai/examples/spleen_ct_segmentation_sim/job_multi_gpu/app/config/config_fed_server.json b/integration/monai/examples/spleen_ct_segmentation_sim/job_multi_gpu/app/config/config_fed_server.json
index 9e9fc7328d..04657d8d5b 100644
--- a/integration/monai/examples/spleen_ct_segmentation_sim/job_multi_gpu/app/config/config_fed_server.json
+++ b/integration/monai/examples/spleen_ct_segmentation_sim/job_multi_gpu/app/config/config_fed_server.json
@@ -16,19 +16,19 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {
         "expected_data_kind": "WEIGHT_DIFF"
       }
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {}
     },
     {
@@ -40,14 +40,14 @@
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator",
       "args": {}
     }
   ],
   "workflows": [
       {
         "id": "scatter_gather_ctl",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : "{min_clients}",
             "num_rounds" : "{num_rounds}",
@@ -62,7 +62,7 @@
       },
       {
         "id": "cross_site_model_eval",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator",
           "submit_model_timeout": 600,
diff --git a/integration/monai/examples/spleen_ct_segmentation_sim/job_stats/app/config/config_fed_client.json b/integration/monai/examples/spleen_ct_segmentation_sim/job_stats/app/config/config_fed_client.json
index ad30c22697..f1150922f9 100644
--- a/integration/monai/examples/spleen_ct_segmentation_sim/job_stats/app/config/config_fed_client.json
+++ b/integration/monai/examples/spleen_ct_segmentation_sim/job_stats/app/config/config_fed_client.json
@@ -21,7 +21,7 @@
       "tasks": ["fed_stats"],
       "filters":[
         {
-          "name": "StatisticsPrivacyFilter",
+          "path": "nvflare.app_common.filters.statistics_privacy_filter.StatisticsPrivacyFilter",
           "args": {
             "result_cleanser_ids": [
               "min_count_cleanser"
diff --git a/integration/nemo/examples/prompt_learning/jobs/templates/server/config/config_fed_server.json b/integration/nemo/examples/prompt_learning/jobs/templates/server/config/config_fed_server.json
index 8d80c895f2..2f095ed5eb 100644
--- a/integration/nemo/examples/prompt_learning/jobs/templates/server/config/config_fed_server.json
+++ b/integration/nemo/examples/prompt_learning/jobs/templates/server/config/config_fed_server.json
@@ -28,17 +28,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -57,7 +57,7 @@
     },
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/integration/nemo/examples/supervised_fine_tuning/jobs/templates/server/config/config_fed_server.json b/integration/nemo/examples/supervised_fine_tuning/jobs/templates/server/config/config_fed_server.json
index 82d84f40f9..d5716485c6 100755
--- a/integration/nemo/examples/supervised_fine_tuning/jobs/templates/server/config/config_fed_server.json
+++ b/integration/nemo/examples/supervised_fine_tuning/jobs/templates/server/config/config_fed_server.json
@@ -25,17 +25,17 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {}
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -53,7 +53,7 @@
     },
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/job_templates/sag_pt_in_proc/config_fed_client.conf b/job_templates/sag_pt_in_proc/config_fed_client.conf
index 50af7e3757..c54c597921 100644
--- a/job_templates/sag_pt_in_proc/config_fed_client.conf
+++ b/job_templates/sag_pt_in_proc/config_fed_client.conf
@@ -60,7 +60,7 @@
   components =  [
       {
         "id": "event_to_fed",
-        "name": "ConvertToFedEvent",
+        "path": "nvflare.app_common.widgets.convert_to_fed_event.ConvertToFedEvent",
         "args": {"events_to_convert": ["analytix_log_stats"], "fed_event_prefix": "fed."}
       }
    ]
diff --git a/job_templates/stats_df/config_fed_client.conf b/job_templates/stats_df/config_fed_client.conf
index 9733b3f274..858431b138 100644
--- a/job_templates/stats_df/config_fed_client.conf
+++ b/job_templates/stats_df/config_fed_client.conf
@@ -19,7 +19,7 @@
       "tasks": ["fed_stats"],
       "filters":[
         {
-          "name": "StatisticsPrivacyFilter",
+          "path": "nvflare.app_common.filters.statistics_privacy_filter.StatisticsPrivacyFilter",
           "args": {
             "result_cleanser_ids": [
               "min_count_cleanser",
diff --git a/job_templates/stats_image/config_fed_client.conf b/job_templates/stats_image/config_fed_client.conf
index 3b287292ad..bfc03e0c1e 100644
--- a/job_templates/stats_image/config_fed_client.conf
+++ b/job_templates/stats_image/config_fed_client.conf
@@ -28,7 +28,7 @@
       "tasks": ["fed_stats"],
       "filters":[
         {
-          "name": "StatisticsPrivacyFilter",
+          "path": "nvflare.app_common.filters.statistics_privacy_filter.StatisticsPrivacyFilter",
           "args": {
             "result_cleanser_ids": [
               "min_count_cleanser"
diff --git a/research/auto-fed-rl/jobs/cifar10_autofedrl/cifar10_autofedrl/config/config_fed_server.json b/research/auto-fed-rl/jobs/cifar10_autofedrl/cifar10_autofedrl/config/config_fed_server.json
index 332362f6d5..2dd647dc09 100644
--- a/research/auto-fed-rl/jobs/cifar10_autofedrl/cifar10_autofedrl/config/config_fed_server.json
+++ b/research/auto-fed-rl/jobs/cifar10_autofedrl/cifar10_autofedrl/config/config_fed_server.json
@@ -95,7 +95,7 @@
         },
         {
             "id": "aggregator_search_val",
-            "name": "InTimeAccumulateWeightedAggregator",
+            "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
             "args": {
                 "expected_data_kind": "METRICS",
                 "aggregation_weights": {
@@ -112,7 +112,7 @@
         },
         {
             "id": "model_selector",
-            "name": "IntimeModelSelector",
+            "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
             "args": {}
         },
         {
@@ -124,7 +124,7 @@
         },
         {
             "id": "json_generator",
-            "name": "ValidationJsonGenerator",
+            "path": "nvflare.app_common.widgets.validation_json_generator",
             "args": {}
         }
     ],
diff --git a/research/condist-fl/jobs/condist/kidney/config/config_fed_client.json b/research/condist-fl/jobs/condist/kidney/config/config_fed_client.json
index 2944aea0a9..f3e50ed216 100644
--- a/research/condist-fl/jobs/condist/kidney/config/config_fed_client.json
+++ b/research/condist-fl/jobs/condist/kidney/config/config_fed_client.json
@@ -6,7 +6,7 @@
       "tasks": ["train", "submit_model", "validate"],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "learner"
         }
diff --git a/research/condist-fl/jobs/condist/liver/config/config_fed_client.json b/research/condist-fl/jobs/condist/liver/config/config_fed_client.json
index 2944aea0a9..f3e50ed216 100644
--- a/research/condist-fl/jobs/condist/liver/config/config_fed_client.json
+++ b/research/condist-fl/jobs/condist/liver/config/config_fed_client.json
@@ -6,7 +6,7 @@
       "tasks": ["train", "submit_model", "validate"],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "learner"
         }
diff --git a/research/condist-fl/jobs/condist/pancreas/config/config_fed_client.json b/research/condist-fl/jobs/condist/pancreas/config/config_fed_client.json
index 2944aea0a9..f3e50ed216 100644
--- a/research/condist-fl/jobs/condist/pancreas/config/config_fed_client.json
+++ b/research/condist-fl/jobs/condist/pancreas/config/config_fed_client.json
@@ -6,7 +6,7 @@
       "tasks": ["train", "submit_model", "validate"],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "learner"
         }
diff --git a/research/condist-fl/jobs/condist/server/config/config_fed_server.json b/research/condist-fl/jobs/condist/server/config/config_fed_server.json
index a0ea60c9b2..9e00604cd2 100644
--- a/research/condist-fl/jobs/condist/server/config/config_fed_server.json
+++ b/research/condist-fl/jobs/condist/server/config/config_fed_server.json
@@ -59,7 +59,7 @@
     },
     {
       "id": "aggregator",
-      "name": "InTimeAccumulateWeightedAggregator",
+      "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
       "args": {
         "exclude_vars": null,
         "aggregation_weights": {
@@ -87,7 +87,7 @@
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": false,
         "aggregation_weights": {
@@ -118,7 +118,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
@@ -134,7 +134,7 @@
     },
     {
       "id": "cross_site_model_eval",
-      "name": "CrossSiteModelEval",
+      "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
       "args": {
         "model_locator_id": "model_locator",
         "formatter_id": "formatter",
diff --git a/research/condist-fl/jobs/condist/spleen/config/config_fed_client.json b/research/condist-fl/jobs/condist/spleen/config/config_fed_client.json
index 2944aea0a9..f3e50ed216 100644
--- a/research/condist-fl/jobs/condist/spleen/config/config_fed_client.json
+++ b/research/condist-fl/jobs/condist/spleen/config/config_fed_client.json
@@ -6,7 +6,7 @@
       "tasks": ["train", "submit_model", "validate"],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "learner"
         }
diff --git a/research/fed-ce/jobs/fedce_prostate/app/config/config_fed_client.json b/research/fed-ce/jobs/fedce_prostate/app/config/config_fed_client.json
index 0f371d3d74..8e0ddce6fb 100644
--- a/research/fed-ce/jobs/fedce_prostate/app/config/config_fed_client.json
+++ b/research/fed-ce/jobs/fedce_prostate/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-fedce-learner"
         }
diff --git a/research/fed-ce/jobs/fedce_prostate/app/config/config_fed_server.json b/research/fed-ce/jobs/fedce_prostate/app/config/config_fed_server.json
index d4007ce954..9e3c200ac4 100644
--- a/research/fed-ce/jobs/fedce_prostate/app/config/config_fed_server.json
+++ b/research/fed-ce/jobs/fedce_prostate/app/config/config_fed_server.json
@@ -23,7 +23,7 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
@@ -49,7 +49,7 @@
     },
     {
       "id": "model_selector",
-      "name": "IntimeModelSelector",
+      "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
       "args": {
         "weigh_by_local_iter": true
       }
@@ -58,7 +58,7 @@
   "workflows": [
     {
       "id": "scatter_and_gather",
-      "name": "ScatterAndGather",
+      "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
       "args": {
         "min_clients": "{min_clients}",
         "num_rounds": "{num_rounds}",
diff --git a/research/fed-sm/jobs/fedsm_prostate/app/config/config_fed_client.json b/research/fed-sm/jobs/fedsm_prostate/app/config/config_fed_client.json
index a1dfcc9c1c..9b49f3a316 100644
--- a/research/fed-sm/jobs/fedsm_prostate/app/config/config_fed_client.json
+++ b/research/fed-sm/jobs/fedsm_prostate/app/config/config_fed_client.json
@@ -8,7 +8,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "LearnerExecutor",
+        "path": "nvflare.app_common.executors.learner_executor.LearnerExecutor",
         "args": {
           "learner_id": "prostate-fedsm-learner"
         }
diff --git a/research/one-shot-vfl/jobs/cifar10_oneshotVFL/server/config/config_fed_server.json b/research/one-shot-vfl/jobs/cifar10_oneshotVFL/server/config/config_fed_server.json
index 4f73839e7c..036d3076db 100644
--- a/research/one-shot-vfl/jobs/cifar10_oneshotVFL/server/config/config_fed_server.json
+++ b/research/one-shot-vfl/jobs/cifar10_oneshotVFL/server/config/config_fed_server.json
@@ -21,12 +21,12 @@
     },
     {
       "id": "shareable_generator",
-      "name": "FullModelShareableGenerator",
+      "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
       "args": {}
     },
     {
       "id": "json_generator",
-      "name": "ValidationJsonGenerator",
+      "path": "nvflare.app_common.widgets.validation_json_generator",
       "args": {}
     }
   ],
diff --git a/research/one-shot-vfl/jobs/cifar10_psi/server/config/config_fed_server.json b/research/one-shot-vfl/jobs/cifar10_psi/server/config/config_fed_server.json
index a4460d7778..c4ce0c9fe0 100644
--- a/research/one-shot-vfl/jobs/cifar10_psi/server/config/config_fed_server.json
+++ b/research/one-shot-vfl/jobs/cifar10_psi/server/config/config_fed_server.json
@@ -3,7 +3,7 @@
   "workflows": [
     {
       "id": "DhPSIController",
-      "name": "DhPSIController",
+      "path": "nvflare.app_common.psi.dh_psi.dh_psi_controller.DhPSIController",
       "args": {
       }
     }
diff --git a/research/one-shot-vfl/jobs/cifar10_psi/site-1/config/config_fed_client.json b/research/one-shot-vfl/jobs/cifar10_psi/site-1/config/config_fed_client.json
index dd2d6a73f8..7d51890a85 100644
--- a/research/one-shot-vfl/jobs/cifar10_psi/site-1/config/config_fed_client.json
+++ b/research/one-shot-vfl/jobs/cifar10_psi/site-1/config/config_fed_client.json
@@ -7,7 +7,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "PSIExecutor",
+        "path": "nvflare.app_common.psi.psi_executor.PSIExecutor",
         "args": {
           "psi_algo_id": "dh_psi"
         }
@@ -17,7 +17,7 @@
   "components": [
     {
       "id": "dh_psi",
-      "name": "DhPSITaskHandler",
+      "path": "nvflare.app_common.psi.dh_psi.dh_psi_task_handler.DhPSITaskHandler",
       "args": {
         "local_psi_id": "local_psi"
       }
@@ -32,7 +32,7 @@
     },
     {
       "id": "psi_writer",
-      "name": "FilePSIWriter",
+      "path": "nvflare.app_common.psi.file_psi_writer.FilePSIWriter",
       "args": {
         "output_path": "psi/intersection.txt"
       }
diff --git a/research/one-shot-vfl/jobs/cifar10_psi/site-2/config/config_fed_client.json b/research/one-shot-vfl/jobs/cifar10_psi/site-2/config/config_fed_client.json
index 3eb82cad1a..5c89538e68 100644
--- a/research/one-shot-vfl/jobs/cifar10_psi/site-2/config/config_fed_client.json
+++ b/research/one-shot-vfl/jobs/cifar10_psi/site-2/config/config_fed_client.json
@@ -7,7 +7,7 @@
       ],
       "executor": {
         "id": "Executor",
-        "name": "PSIExecutor",
+        "path": "nvflare.app_common.psi.psi_executor.PSIExecutor",
         "args": {
           "psi_algo_id": "dh_psi"
         }
@@ -17,7 +17,7 @@
   "components": [
     {
       "id": "dh_psi",
-      "name": "DhPSITaskHandler",
+      "path": "nvflare.app_common.psi.dh_psi.dh_psi_task_handler.DhPSITaskHandler",
       "args": {
         "local_psi_id": "local_psi"
       }
@@ -32,7 +32,7 @@
     },
     {
       "id": "psi_writer",
-      "name": "FilePSIWriter",
+      "path": "nvflare.app_common.psi.file_psi_writer.FilePSIWriter",
       "args": {
         "output_path": "psi/intersection.txt"
       }
diff --git a/research/quantifying-data-leakage/jobs/app_template/server/config/config_fed_server.json b/research/quantifying-data-leakage/jobs/app_template/server/config/config_fed_server.json
index e58e9b2633..3a41d883d3 100644
--- a/research/quantifying-data-leakage/jobs/app_template/server/config/config_fed_server.json
+++ b/research/quantifying-data-leakage/jobs/app_template/server/config/config_fed_server.json
@@ -27,17 +27,17 @@
         },
         {
             "id": "shareable_generator",
-            "name": "FullModelShareableGenerator",
+            "path": "nvflare.app_common.shareablegenerators.full_model_shareable_generator.FullModelShareableGenerator",
             "args": {}
         },
         {
             "id": "aggregator",
-            "name": "InTimeAccumulateWeightedAggregator",
+            "path": "nvflare.app_common.aggregators.intime_accumulate_model_aggregator.InTimeAccumulateWeightedAggregator",
             "args": {}
         },
         {
             "id": "model_selector",
-            "name": "IntimeModelSelector",
+            "path": "nvflare.app_common.widgets.intime_model_selector.IntimeModelSelector",
             "args": {}
         },
         {
@@ -49,14 +49,14 @@
         },
         {
             "id": "json_generator",
-            "name": "ValidationJsonGenerator",
+            "path": "nvflare.app_common.widgets.validation_json_generator",
             "args": {}
         }
     ],
     "workflows": [
         {
             "id": "scatter_gather_ctl",
-            "name": "ScatterAndGather",
+            "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
             "args": {
                 "min_clients": "{min_clients}",
                 "num_rounds": "{num_rounds}",
@@ -71,7 +71,7 @@
         },
         {
             "id": "cross_site_model_eval",
-            "name": "CrossSiteModelEval",
+            "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
             "args": {
                 "model_locator_id": "model_locator",
                 "submit_model_timeout": 600,


Test patch:
diff --git a/tests/integration_test/data/apps/pt_init_client/app/config/config_fed_server.json b/tests/integration_test/data/apps/pt_init_client/app/config/config_fed_server.json
index 58ca67750b..fe14726c8d 100644
--- a/tests/integration_test/data/apps/pt_init_client/app/config/config_fed_server.json
+++ b/tests/integration_test/data/apps/pt_init_client/app/config/config_fed_server.json
@@ -42,7 +42,7 @@
   "workflows": [
       {
         "id": "pre_train",
-        "name": "InitializeGlobalWeights",
+        "path": "nvflare.app_common.workflows.initialize_global_weights.InitializeGlobalWeights",
         "args": {
           "task_name": "get_weights",
           "weight_method": "client",
@@ -51,7 +51,7 @@
       },
       {
         "id": "scatter_and_gather",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : 2,
             "num_rounds" : 2,
@@ -66,7 +66,7 @@
       },
       {
         "id": "cross_site_validate",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator"
         }
diff --git a/tests/integration_test/data/jobs/hello-pt/app/config/config_fed_server.json b/tests/integration_test/data/jobs/hello-pt/app/config/config_fed_server.json
index be56863e35..49076bacbc 100644
--- a/tests/integration_test/data/jobs/hello-pt/app/config/config_fed_server.json
+++ b/tests/integration_test/data/jobs/hello-pt/app/config/config_fed_server.json
@@ -42,14 +42,14 @@
   "workflows": [
       {
         "id": "pre_train",
-        "name": "InitializeGlobalWeights",
+        "path": "nvflare.app_common.workflows.initialize_global_weights.InitializeGlobalWeights",
         "args": {
           "task_name": "get_weights"
         }
       },
       {
         "id": "scatter_and_gather",
-        "name": "ScatterAndGather",
+        "path": "nvflare.app_common.workflows.scatter_and_gather.ScatterAndGather",
         "args": {
             "min_clients" : 2,
             "num_rounds" : 2,
@@ -64,7 +64,7 @@
       },
       {
         "id": "cross_site_validate",
-        "name": "CrossSiteModelEval",
+        "path": "nvflare.app_common.workflows.cross_site_model_eval.CrossSiteModelEval",
         "args": {
           "model_locator_id": "model_locator"
         }