diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 5208b67df8c89fffd4fc166930f13f4b0394a153..b83f745e13841ad50b977e8fd89c7c451b2303f9 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -121,14 +121,13 @@ do_copy_to_srcdir() {
 
 addtask do_copy_to_srcdir after do_prepare_recipe_sysroot do_unpack before do_configure
 
-do_configure:prepend() {
-    bbnote "Generating OpenHarmony Standard System build config files..."
-
-    generate_build_config_json_file
-    generate_platforms_build_file
-    generate_parts_json
-    copy_subsystem_config_json_file
+do_configure[prefuncs] += "generate_build_config_json_file"
+do_configure[prefuncs] += "generate_platforms_build_file"
+do_configure[prefuncs] += "generate_parts_json"
+do_configure[prefuncs] += "copy_subsystem_config_json_file"
+do_configure[prefuncs] += "symlink_python3"
 
+symlink_python3() {
     # OpenHarmony build system relies on python 3 being available as `python`
     ln -sf $(which python3) ${STAGING_BINDIR_NATIVE}/python
 }
@@ -235,7 +234,61 @@ generate_platforms_build_file() {
 EOF
 }
 
-generate_parts_json() {
+OPENHARMONY_PARTS += "aafwk:aafwk_standard"
+OPENHARMONY_PARTS += "account:os_account_standard"
+OPENHARMONY_PARTS += "ace:ace_engine_standard"
+OPENHARMONY_PARTS += "ace:napi"
+OPENHARMONY_PARTS += "appexecfwk:appexecfwk_standard"
+OPENHARMONY_PARTS += "ark:ark_js_runtime"
+OPENHARMONY_PARTS += "ark:ark"
+OPENHARMONY_PARTS += "ccruntime:jsapi_worker"
+OPENHARMONY_PARTS += "common:common"
+OPENHARMONY_PARTS += "communication:dsoftbus_standard"
+OPENHARMONY_PARTS += "communication:ipc"
+OPENHARMONY_PARTS += "communication:ipc_js"
+OPENHARMONY_PARTS += "developtools:bytrace_standard"
+OPENHARMONY_PARTS += "developtools:hdc_standard"
+OPENHARMONY_PARTS += "distributeddatamgr:distributeddatamgr"
+OPENHARMONY_PARTS += "distributeddatamgr:native_appdatamgr"
+OPENHARMONY_PARTS += "distributedhardware:device_manager_base"
+OPENHARMONY_PARTS += "distributedschedule:dmsfwk_standard"
+OPENHARMONY_PARTS += "distributedschedule:safwk"
+OPENHARMONY_PARTS += "distributedschedule:samgr_L2"
+OPENHARMONY_PARTS += "global:i18n_standard"
+OPENHARMONY_PARTS += "global:resmgr_standard"
+OPENHARMONY_PARTS += "graphic:graphic_standard"
+OPENHARMONY_PARTS += "hdf:hdf"
+OPENHARMONY_PARTS += "hdf:display_device_driver"
+OPENHARMONY_PARTS += "hiviewdfx:faultloggerd"
+OPENHARMONY_PARTS += "hiviewdfx:hilog"
+OPENHARMONY_PARTS += "hiviewdfx:hilog_native"
+OPENHARMONY_PARTS += "hiviewdfx:hilog_service"
+OPENHARMONY_PARTS += "hiviewdfx:hisysevent_native"
+OPENHARMONY_PARTS += "hiviewdfx:hiviewdfx_hilog_native"
+OPENHARMONY_PARTS += "miscservices:inputmethod_native"
+OPENHARMONY_PARTS += "miscservices:time_native"
+OPENHARMONY_PARTS += "multimedia:multimedia_audio_standard"
+OPENHARMONY_PARTS += "multimedia:multimedia_camera_standard"
+OPENHARMONY_PARTS += "multimedia:multimedia_histreamer"
+OPENHARMONY_PARTS += "multimedia:multimedia_image_standard"
+OPENHARMONY_PARTS += "multimedia:multimedia_media_standard"
+OPENHARMONY_PARTS += "multimodalinput:multimodalinput_base"
+OPENHARMONY_PARTS += "notification:ans_standard"
+OPENHARMONY_PARTS += "notification:ces_standard"
+OPENHARMONY_PARTS += "powermgr:battery_manager_native"
+OPENHARMONY_PARTS += "powermgr:display_manager_native"
+OPENHARMONY_PARTS += "powermgr:power_manager_native"
+OPENHARMONY_PARTS += "security:appverify"
+OPENHARMONY_PARTS += "security:dataclassification"
+OPENHARMONY_PARTS += "security:deviceauth_standard"
+OPENHARMONY_PARTS += "security:huks_standard"
+OPENHARMONY_PARTS += "security:permission_standard"
+OPENHARMONY_PARTS += "startup:startup_l2"
+OPENHARMONY_PARTS += "telephony:core_service"
+OPENHARMONY_PARTS += "telephony:ril_adapter"
+OPENHARMONY_PARTS += "utils:utils_base"
+
+python generate_parts_json() {
     # parts.json file is used by the loader.py tool to generate BUILD.gn files
     # for all required "parts" basing on ohos.build files that accompany
     # OpenHarmony components
@@ -243,66 +296,21 @@ generate_parts_json() {
     # NOTE: In normal OpenHarmony build process, this file is generated by the
     # preloader.py tool
 
-    mkdir -p "${OHOS_PRELOADER_BUILD_CONFIG_DIR}"
-    cat > "${OHOS_PRELOADER_BUILD_CONFIG_DIR}/parts.json" << EOF
-    {
-      "parts": [
-        "aafwk:aafwk_standard",
-        "account:os_account_standard",
-        "ace:ace_engine_standard",
-        "ace:napi",
-        "appexecfwk:appexecfwk_standard",
-        "ark:ark_js_runtime",
-        "ark:ark",
-        "ccruntime:jsapi_worker",
-        "common:common",
-        "communication:dsoftbus_standard",
-        "communication:ipc",
-        "communication:ipc_js",
-        "developtools:bytrace_standard",
-        "developtools:hdc_standard",
-        "distributeddatamgr:distributeddatamgr",
-        "distributeddatamgr:native_appdatamgr",
-        "distributedhardware:device_manager_base",
-        "distributedschedule:dmsfwk_standard",
-        "distributedschedule:safwk",
-        "distributedschedule:samgr_L2",
-        "global:i18n_standard",
-        "global:resmgr_standard",
-        "graphic:graphic_standard",
-        "hdf:hdf",
-        "hdf:display_device_driver",
-        "hiviewdfx:faultloggerd",
-        "hiviewdfx:hilog",
-        "hiviewdfx:hilog_native",
-        "hiviewdfx:hilog_service",
-        "hiviewdfx:hisysevent_native",
-        "hiviewdfx:hiviewdfx_hilog_native",
-        "miscservices:inputmethod_native",
-        "miscservices:time_native",
-        "multimedia:multimedia_audio_standard",
-        "multimedia:multimedia_camera_standard",
-        "multimedia:multimedia_histreamer",
-        "multimedia:multimedia_image_standard",
-        "multimedia:multimedia_media_standard",
-        "multimodalinput:multimodalinput_base",
-        "notification:ans_standard",
-        "notification:ces_standard",
-        "powermgr:battery_manager_native",
-        "powermgr:display_manager_native",
-        "powermgr:power_manager_native",
-        "security:appverify",
-        "security:dataclassification",
-        "security:deviceauth_standard",
-        "security:huks_standard",
-        "security:permission_standard",
-        "startup:startup_l2",
-        "telephony:core_service",
-        "telephony:ril_adapter",
-        "utils:utils_base"
-      ]
-    }
-EOF
+    import json
+    import os
+
+    json_parts = {}
+    json_parts['parts'] = []
+
+    for part in d.getVar("OPENHARMONY_PARTS").split():
+        json_parts['parts'].append(part)
+
+    config_dir = d.getVar("OHOS_PRELOADER_BUILD_CONFIG_DIR")
+
+    os.makedirs(config_dir, exist_ok=True)
+
+    with open(os.path.join(config_dir, 'parts.json'), 'w') as outfile:
+        outfile.write(json.dumps(json_parts, indent=2, sort_keys=True))
 }
 
 copy_subsystem_config_json_file() {