diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c
index 96902098f12e129781a734c97d12e7de3b6844c8..32b0f7bf95dbaf0a2a09e347490497239750ca9e 100644
--- a/openair3/NAS/TOOLS/conf2uedata.c
+++ b/openair3/NAS/TOOLS/conf2uedata.c
@@ -8,21 +8,19 @@
 
 char * make_filename(const char *output_dir, const char *filename, int ueid);
 int get_config_from_file(const char *filename, config_t *config);
+int parse_config_file(const char *filename);
 
 int main(int argc, char**argv) {
-	int rc = EXIT_SUCCESS;
 	int option;
     const char* conf_file = NULL;
 
     while ((option = getopt(argc, argv, options)) != -1) {
 		switch (option) {
 		case 'c':
-			parse_data = TRUE;
 			conf_file = optarg;
 			break;
 		case 'o':
 			output_dir = optarg;
-			output = TRUE;
 			break;
 		case 'h':
 			_display_usage();
@@ -33,89 +31,90 @@ int main(int argc, char**argv) {
 		}
 	}
 
-	if (output == FALSE && parse_data == TRUE) {
+	if (output_dir == NULL ) {
 		printf("No output option found\n");
 		_display_usage();
 		return EXIT_FAILURE;
 	}
 
-    if (output == TRUE && parse_data == FALSE) {
+    if ( conf_file == NULL ) {
 		printf("No Configuration file is given\n");
 		_display_usage();
 		return EXIT_FAILURE;
 	}
 
-    if (parse_data == FALSE && print_data == FALSE) {
-		printf("No options found\n");
-		_display_usage();
-		return EXIT_FAILURE;
-	}
+    if ( parse_config_file(conf_file) == EXIT_FAILURE ) {
+        exit(EXIT_FAILURE);
+    }
 
-    if (parse_data) {
-        int ret;
-		int ue_nb = 0;
-		config_setting_t *root_setting = NULL;
-		config_setting_t *ue_setting = NULL;
-		config_setting_t *all_plmn_setting = NULL;
-		char user[10];
-		config_t cfg;
+	exit(EXIT_SUCCESS);
 
-        ret = get_config_from_file(conf_file, &cfg);
-        if (ret == EXIT_FAILURE) {
-            exit(1);
-        }
+}
+
+int parse_config_file(const char *filename) {
+	int rc = EXIT_SUCCESS;
+    int ret;
+    int ue_nb = 0;
+    config_setting_t *root_setting = NULL;
+    config_setting_t *ue_setting = NULL;
+    config_setting_t *all_plmn_setting = NULL;
+    char user[10];
+    config_t cfg;
+
+    ret = get_config_from_file(filename, &cfg);
+    if (ret == EXIT_FAILURE) {
+        exit(1);
+    }
 
-		root_setting = config_root_setting(&cfg);
-		ue_nb = config_setting_length(root_setting) - 1;
+    root_setting = config_root_setting(&cfg);
+    ue_nb = config_setting_length(root_setting) - 1;
 
-		all_plmn_setting = config_setting_get_member(root_setting, PLMN);
-		if (all_plmn_setting == NULL) {
-			printf("NO PLMN SECTION...EXITING...\n");
-			return (EXIT_FAILURE);
+    all_plmn_setting = config_setting_get_member(root_setting, PLMN);
+    if (all_plmn_setting == NULL) {
+        printf("NO PLMN SECTION...EXITING...\n");
+        return (EXIT_FAILURE);
+    }
+
+    rc = parse_plmns(all_plmn_setting);
+    if (rc == EXIT_FAILURE) {
+        return rc;
+    }
+    fill_network_record_list();
+
+    for (int i = 0; i < ue_nb; i++) {
+        sprintf(user, "%s%d", UE, i);
+
+        ue_setting = config_setting_get_member(root_setting, user);
+        if (ue_setting == NULL) {
+            printf("Check UE%d settings\n", i);
+            return EXIT_FAILURE;
         }
 
-        rc = parse_plmns(all_plmn_setting);
-        if (rc == EXIT_FAILURE) {
-            return rc;
+        rc = parse_ue_user_param(ue_setting, i);
+        if (rc != EXIT_SUCCESS) {
+            printf("Problem in USER section for UE%d. EXITING...\n", i);
+            return EXIT_FAILURE;
         }
-        fill_network_record_list();
-
-        for (int i = 0; i < ue_nb; i++) {
-            sprintf(user, "%s%d", UE, i);
-
-            ue_setting = config_setting_get_member(root_setting, user);
-            if (ue_setting == NULL) {
-                printf("Check UE%d settings\n", i);
-                return EXIT_FAILURE;
-            }
-
-            rc = parse_ue_user_param(ue_setting, i);
-            if (rc != EXIT_SUCCESS) {
-                printf("Problem in USER section for UE%d. EXITING...\n", i);
-                return EXIT_FAILURE;
-            }
-            _display_ue_data(i);
-
-            rc = parse_ue_sim_param(ue_setting, i);
-            if (rc != EXIT_SUCCESS) {
-                printf("Problem in SIM section for UE%d. EXITING...\n", i);
-                return EXIT_FAILURE;
-            }
-
-            rc = parse_ue_plmn_param(ue_setting, i);
-            if (rc != EXIT_SUCCESS) {
-                return EXIT_FAILURE;
-            }
-            gen_emm_data(i);
-            _display_emm_data(i);
-
-            gen_usim_data(i);
-            _display_usim_data(i);
+        _display_ue_data(i);
+
+        rc = parse_ue_sim_param(ue_setting, i);
+        if (rc != EXIT_SUCCESS) {
+            printf("Problem in SIM section for UE%d. EXITING...\n", i);
+            return EXIT_FAILURE;
         }
-        config_destroy(&cfg);
-	}
-	exit(EXIT_SUCCESS);
 
+        rc = parse_ue_plmn_param(ue_setting, i);
+        if (rc != EXIT_SUCCESS) {
+            return EXIT_FAILURE;
+        }
+        gen_emm_data(i);
+        _display_emm_data(i);
+
+        gen_usim_data(i);
+        _display_usim_data(i);
+    }
+    config_destroy(&cfg);
+	return(EXIT_SUCCESS);
 }
 
 int get_config_from_file(const char *filename, config_t *config) {