diff --git a/src/hive_fork_manager/CMakeLists.txt b/src/hive_fork_manager/CMakeLists.txt
index 55bfb0da084b3a3bb760ce10c4e7e06f7fddc412..da737dd5cc0673d7e76865fbe43a01061c3def42 100644
--- a/src/hive_fork_manager/CMakeLists.txt
+++ b/src/hive_fork_manager/CMakeLists.txt
@@ -72,6 +72,8 @@ ADD_PSQL_EXTENSION(
             application_loop/stages_functions.sql
             application_loop/loop.sql
             application_loop/contexts_log_api.sql
+
+            state_providers/update_providers.sql
 )
 
 ADD_SUBDIRECTORY( shared_lib )
diff --git a/src/hive_fork_manager/app_api.sql b/src/hive_fork_manager/app_api.sql
index 14c7b605fddeab3463947c7219466c37604de6e3..bea1242e7d95ac63555d14920cc7374b76831354 100644
--- a/src/hive_fork_manager/app_api.sql
+++ b/src/hive_fork_manager/app_api.sql
@@ -701,6 +701,10 @@ BEGIN
         ON CONFLICT DO NOTHING', __context_id, _state_provider, _state_provider, _context
     );
 
+    EXECUTE format(
+            'SELECT hive.runtimecode_provider_%s( %L )', _state_provider, _context
+    );
+
     IF NOT hive.app_is_forking( _context ) THEN
         RETURN;
     END IF;
diff --git a/src/hive_fork_manager/application_loop/contexts_log_api.sql b/src/hive_fork_manager/application_loop/contexts_log_api.sql
index 15f8a99f5f2757b6ac42cb876fb26c7b1dd78653..afe01e46370fdece1970e852bb48fa8f68acaa31 100644
--- a/src/hive_fork_manager/application_loop/contexts_log_api.sql
+++ b/src/hive_fork_manager/application_loop/contexts_log_api.sql
@@ -94,4 +94,4 @@ BEGIN
         , __head_fork
     ;
 END;
-$$
\ No newline at end of file
+$$;
diff --git a/src/hive_fork_manager/state_providers/accounts.sql b/src/hive_fork_manager/state_providers/accounts.sql
index e9485d10a84e069cdcb2fe7733c3600d6a79db5d..dad9fafb8f6da8798b8a14e32ede926d8cdbc4c0 100644
--- a/src/hive_fork_manager/state_providers/accounts.sql
+++ b/src/hive_fork_manager/state_providers/accounts.sql
@@ -33,6 +33,17 @@ END;
 $BODY$
 ;
 
+CREATE OR REPLACE FUNCTION hive.runtimecode_provider_accounts( _context hafd.context_name )
+    RETURNS VOID
+    LANGUAGE plpgsql
+    VOLATILE
+AS
+$BODY$
+BEGIN
+    RETURN;
+END;
+$BODY$;
+
 CREATE OR REPLACE FUNCTION hive.get_created_from_account_create_operations(IN _account_operation hafd.operation)
 RETURNS TEXT
 AS 'MODULE_PATHNAME', 'get_created_from_account_create_operations' LANGUAGE C;
diff --git a/src/hive_fork_manager/state_providers/keyauth.sql b/src/hive_fork_manager/state_providers/keyauth.sql
index f1e03a0543f8bef551a17b2ba244fa31b2754a04..73c49f843e3d0630a2319896a0f2fbf0df9f105b 100644
--- a/src/hive_fork_manager/state_providers/keyauth.sql
+++ b/src/hive_fork_manager/state_providers/keyauth.sql
@@ -213,14 +213,31 @@ BEGIN
     $$
     , _context);
 
+    RETURN ARRAY[format('%1$s_keyauth_a', _context), format('%1$s_keyauth_k', _context), format('%1$s_accountauth_a', _context)];
+END;
+$BODY$
+;
+
+CREATE OR REPLACE FUNCTION hive.runtimecode_provider_keyauth( _context hafd.context_name )
+    RETURNS VOID
+    LANGUAGE plpgsql
+    VOLATILE
+AS
+$BODY$
+DECLARE
+    __schema TEXT;
+BEGIN
+    SELECT hc.schema INTo __schema
+    FROM hafd.contexts hc
+    WHERE hc.name = _context;
     -- Persistent function definition for keyauth insertion
     -- The 'hive.start_provider_keyauth_insert_into_keyauth_a' function is created here as a permanent
     -- function rather than being dynamically generated during each call to 'hive.update_state_provider_keyauth'.
 
     EXECUTE format(
-    $t$
+            $t$
 
-        CREATE OR REPLACE FUNCTION hafd.%1$s_insert_into_keyauth_a(
+        CREATE OR REPLACE FUNCTION hive.%1$s_insert_into_keyauth_a(
         _first_block integer,
         _last_block integer)
             RETURNS void
@@ -246,8 +263,8 @@ BEGIN
         -- Consider relocating this logic from the current CTE to the actual 'start_provider_keyauth' execution for better efficiency.
         WITH genesis_auth_records AS MATERIALIZED
         (
-            SELECT 
-                (SELECT a.id FROM %2$s.accounts_view a WHERE a.name = g.account_name) as account_id, 
+            SELECT
+                (SELECT a.id FROM %2$s.accounts_view a WHERE a.name = g.account_name) as account_id,
                 g.account_name,
                 g.key_kind,
                 g.key_auth,
@@ -259,14 +276,14 @@ BEGIN
                 (SELECT b.created_at FROM hafd.blocks b WHERE b.num = 1) as timestamp,
                 1
                 FROM hive.get_genesis_keyauths() as g
-            WHERE  _first_block <= 1 AND 1 <= _last_block 
+            WHERE  _first_block <= 1 AND 1 <= _last_block
         ),
 
         -- Hard fork 9 fixes some accounts that were compromised
         HARDFORK_9_fixed_auth_records AS MATERIALIZED
         (
             SELECT
-            (SELECT a.id FROM %2$s.accounts_view a WHERE a.name = h.account_name) as account_id, 
+            (SELECT a.id FROM %2$s.accounts_view a WHERE a.name = h.account_name) as account_id,
             *,
             __op_serial_id_dummy as op_serial_id,
             __HARDFORK_9_block_num as block_num,
@@ -279,7 +296,7 @@ BEGIN
         HARDFORK_21_fixed_auth_records AS MATERIALIZED
         (
             SELECT
-            (SELECT a.id FROM %2$s.accounts_view a WHERE a.name = h.account_name) as account_id, 
+            (SELECT a.id FROM %2$s.accounts_view a WHERE a.name = h.account_name) as account_id,
             *,
             __op_serial_id_dummy as op_serial_id,
             __HARDFORK_21_block_num as block_num,
@@ -292,7 +309,7 @@ BEGIN
         HARDFORK_24_fixed_auth_records AS MATERIALIZED
         (
             SELECT
-            (SELECT a.id FROM %2$s.accounts_view a WHERE a.name = h.account_name) as account_id, 
+            (SELECT a.id FROM %2$s.accounts_view a WHERE a.name = h.account_name) as account_id,
             *,
             __op_serial_id_dummy as op_serial_id,
             __HARDFORK_24_block_num as block_num,
@@ -354,7 +371,7 @@ BEGIN
         ),
 
         -- Handle all other operations.
-        matching_op_types as materialized 
+        matching_op_types as materialized
             (
             select ot.id from hafd.operation_types ot WHERE ot.name IN
             (
@@ -393,31 +410,31 @@ BEGIN
                         ov.id as op_stable_id
                     FROM matching_ops ov
                 ),
-            min_block_per_pow_account AS 
+            min_block_per_pow_account AS
             (
-                SELECT 
+                SELECT
                     r.account_name,
                     MIN(r.block_num) as min_block_num
-                FROM 
+                FROM
                     raw_auth_records r
-                INNER JOIN 
+                INNER JOIN
                     pow_extended_auth_records per ON r.account_name = per.account_name
-                GROUP BY 
+                GROUP BY
                     r.account_name
             ),
-            min_block_num_from_stored_table_per_account_id AS 
+            min_block_num_from_stored_table_per_account_id AS
             (
-                SELECT 
-                    account_id, 
+                SELECT
+                    account_id,
                     MIN(block_num) AS min_block_num_from_stored_table
-                FROM 
+                FROM
                     hafd.%1$s_keyauth_a
-                GROUP BY 
+                GROUP BY
                     account_id
             ),
             pow_extended_auth_records_with_min_block AS
             (
-                SELECT 
+                SELECT
                     pow.account_id,
                     pow.account_name,
                     pow.key_kind,
@@ -432,17 +449,17 @@ BEGIN
                     mb.min_block_num,
                     pow_min_block_num,
                     mb_table.min_block_num_from_stored_table
-                FROM 
+                FROM
                     pow_extended_auth_records pow
-                LEFT JOIN 
+                LEFT JOIN
                     min_block_per_pow_account mb ON pow.account_name = mb.account_name
-                LEFT JOIN 
+                LEFT JOIN
                     min_block_num_from_stored_table_per_account_id mb_table ON pow.account_id = mb_table.account_id
 
-            ),    
+            ),
             pow_extended_auth_records_filtered as materialized
             (
-                SELECT 
+                SELECT
                     account_id,
                     account_name,
                     key_kind,
@@ -466,9 +483,9 @@ BEGIN
             FROM raw_auth_records r
 
             UNION ALL
-            SELECT 
+            SELECT
                 *
-            FROM 
+            FROM
                 pow_extended_auth_records_filtered
 
             UNION ALL
@@ -526,7 +543,7 @@ BEGIN
             ),
         effective_key_or_account_auth_records as materialized
         (
-            with effective_tuple_ids as materialized 
+            with effective_tuple_ids as materialized
             (
             select s.account_id, s.key_kind, max(s.op_stable_id) as op_stable_id
             from extended_auth_records s
@@ -536,7 +553,7 @@ BEGIN
             from extended_auth_records s1
             join effective_tuple_ids e ON e.account_id = s1.account_id and e.key_kind = s1.key_kind and e.op_stable_id = s1.op_stable_id
         ),
-        --- PROCESSING OF KEY BASED AUTHORITIES ---	
+        --- PROCESSING OF KEY BASED AUTHORITIES ---
             supplement_key_dictionary as materialized
             (
             insert into hafd.%1$s_keyauth_k as dict (key)
@@ -552,7 +569,7 @@ BEGIN
             from effective_key_or_account_auth_records s
             join supplement_key_dictionary kd on kd.key = s.key_auth
         ),
-        changed_key_authorities as materialized 
+        changed_key_authorities as materialized
         (
             select distinct s.account_id as changed_account_id, s.key_kind as changed_key_kind
             from effective_key_or_account_auth_records s
@@ -597,12 +614,12 @@ BEGIN
             ) ds
             WHERE ds.account_auth_id IS NOT NULL
         ),
-        changed_account_authorities as materialized 
+        changed_account_authorities as materialized
         (
             select distinct s.account_id as changed_account_id, s.key_kind as changed_key_kind
             from effective_key_or_account_auth_records s
         ),
-        delete_obsolete_account_auth_records as materialized 
+        delete_obsolete_account_auth_records as materialized
         (
             DELETE FROM hafd.%1$s_accountauth_a as ae
             using changed_account_authorities s
@@ -628,9 +645,9 @@ BEGIN
 
 
 
-        SELECT 
+        SELECT
         (
-            select count(*) FROM 
+            select count(*) FROM
             store_account_auth_records
         ) as account_based_authority_entries,
             (select count(*) FROM store_key_auth_records) AS key_based_authority_entries
@@ -640,13 +657,9 @@ BEGIN
         END;
         $$;
     $t$
-    , _context, __schema);
-
-
-    RETURN ARRAY[format('%1$s_keyauth_a', _context), format('%1$s_keyauth_k', _context), format('%1$s_accountauth_a', _context)];
+        , _context, __schema);
 END;
-$BODY$
-;
+$BODY$;
 
 CREATE OR REPLACE FUNCTION hive.update_state_provider_keyauth(
     _first_block hafd.blocks.num%TYPE,
@@ -665,7 +678,7 @@ BEGIN
 
     __context_id = hive.get_context_id( _context );
 
-    __template = $t$ SELECT hafd.%1$s_insert_into_keyauth_a(%L, %L) $t$;
+    __template = $t$ SELECT hive.%1$s_insert_into_keyauth_a(%L, %L) $t$;
 
     EXECUTE format(__template, _context, _first_block, _last_block);
 
@@ -693,7 +706,7 @@ BEGIN
 
     EXECUTE format(
         $$
-            DROP FUNCTION IF EXISTS hafd.%1$s_insert_into_keyauth_a
+            DROP FUNCTION IF EXISTS hive.%1$s_insert_into_keyauth_a
         $$
         , _context);
 
diff --git a/src/hive_fork_manager/state_providers/metadata.sql b/src/hive_fork_manager/state_providers/metadata.sql
index afc0de7ad4990b3ef89cc4e2229427a8ffb4e30a..cdfd91d28d9b8bb6cb35fff3f44ef26003ece85f 100644
--- a/src/hive_fork_manager/state_providers/metadata.sql
+++ b/src/hive_fork_manager/state_providers/metadata.sql
@@ -40,118 +40,134 @@ BEGIN
                    , PRIMARY KEY ( account_id )
                    )', __table_name);
 
-    EXECUTE format(
-    'CREATE OR REPLACE FUNCTION hafd.%I( _blockFrom INT, _blockTo INT )
-    RETURNS void
+    RETURN ARRAY[ __table_name ];
+END;
+$BODY$
+;
+
+CREATE OR REPLACE FUNCTION hive.runtimecode_provider_metadata( _context hafd.context_name )
+    RETURNS VOID
     LANGUAGE plpgsql
     VOLATILE
-    AS
-    $$
-    DECLARE
-        __state INT := 0;
-    BEGIN
-
-        IF COALESCE( ( SELECT _blockFrom > block_num FROM hafd.applied_hardforks WHERE hardfork_num = 21 ), FALSE ) THEN
-            __state := 1;
-        ELSIF COALESCE( ( SELECT _blockTo <= block_num FROM hafd.applied_hardforks WHERE hardfork_num = 21 ), FALSE ) THEN
-            __state := -1;
-        END IF;
-
-        WITH select_metadata AS MATERIALIZED (
-        SELECT
-            ov.body_binary,
-            ov.id,
-            ov.block_num
-        FROM
-            %s.operations_view ov
-        WHERE
-            ov.op_type_id in (
-            SELECT id FROM hafd.operation_types WHERE name IN
-                (''hive::protocol::account_create_operation'',
-                 ''hive::protocol::account_update_operation'',
-                 ''hive::protocol::create_claimed_account_operation'',
-                 ''hive::protocol::account_create_with_delegation_operation'',
-                 ''hive::protocol::account_update2_operation''))
-            AND ov.block_num BETWEEN _blockFrom AND _blockTo
-        ), calculated_metadata AS MATERIALIZED
-        (
-            SELECT
-                (hive.get_metadata
+AS
+$BODY$
+DECLARE
+    __schema TEXT;
+BEGIN
+    SELECT hc.schema INTO __schema
+    FROM hafd.contexts hc
+    WHERE hc.name = _context;
+
+    EXECUTE format(
+            'CREATE OR REPLACE FUNCTION hive.%I( _blockFrom INT, _blockTo INT )
+            RETURNS void
+            LANGUAGE plpgsql
+            VOLATILE
+            AS
+            $$
+            DECLARE
+                __state INT := 0;
+            BEGIN
+
+                IF COALESCE( ( SELECT _blockFrom > block_num FROM hafd.applied_hardforks WHERE hardfork_num = 21 ), FALSE ) THEN
+                    __state := 1;
+                ELSIF COALESCE( ( SELECT _blockTo <= block_num FROM hafd.applied_hardforks WHERE hardfork_num = 21 ), FALSE ) THEN
+                    __state := -1;
+                END IF;
+
+                WITH select_metadata AS MATERIALIZED (
+                SELECT
+                    ov.body_binary,
+                    ov.id,
+                    ov.block_num
+                FROM
+                    %s.operations_view ov
+                WHERE
+                    ov.op_type_id in (
+                    SELECT id FROM hafd.operation_types WHERE name IN
+                        (''hive::protocol::account_create_operation'',
+                         ''hive::protocol::account_update_operation'',
+                         ''hive::protocol::create_claimed_account_operation'',
+                         ''hive::protocol::account_create_with_delegation_operation'',
+                         ''hive::protocol::account_update2_operation''))
+                    AND ov.block_num BETWEEN _blockFrom AND _blockTo
+                ), calculated_metadata AS MATERIALIZED
+                (
+                    SELECT
+                        (hive.get_metadata
+                        (
+                            sm.body_binary,
+                            CASE __state
+                                WHEN  1 THEN TRUE
+                                WHEN  0 THEN COALESCE( ( SELECT block_num < sm.block_num FROM hafd.applied_hardforks WHERE hardfork_num = 21 ), FALSE )
+                                WHEN -1 THEN FALSE
+                            END
+                        )).*,
+                        sm.id
+                    FROM select_metadata sm
+                ),
+                prepare_accounts AS MATERIALIZED
                 (
-                    sm.body_binary,
-                    CASE __state
-                        WHEN  1 THEN TRUE
-                        WHEN  0 THEN COALESCE( ( SELECT block_num < sm.block_num FROM hafd.applied_hardforks WHERE hardfork_num = 21 ), FALSE )
-                        WHEN -1 THEN FALSE
-                    END
-                )).*,
-                sm.id
-            FROM select_metadata sm
-        ),
-        prepare_accounts AS MATERIALIZED
-        (
-        SELECT
-            metadata.account_name
-        FROM calculated_metadata as metadata
-        GROUP BY metadata.account_name
-        ),
-        select_json_metadata AS MATERIALIZED 
-        (
-        SELECT
-            DISTINCT ON (metadata.account_name) metadata.account_name,
-            metadata.json_metadata
-        FROM calculated_metadata as metadata
-        WHERE metadata.json_metadata != '''' 
-        ORDER BY
-            metadata.account_name,
-            metadata.id DESC
-        ),
-        select_posting_json_metadata AS MATERIALIZED 
-        (
-        SELECT
-            DISTINCT ON (metadata.account_name) metadata.account_name,
-            metadata.posting_json_metadata
-        FROM calculated_metadata as metadata
-        WHERE metadata.posting_json_metadata != ''''
-        ORDER BY
-            metadata.account_name,
-            metadata.id DESC
-        )
-        INSERT INTO
-            hafd.%s_metadata(account_id, json_metadata, posting_json_metadata)
-        SELECT
-            av.id,
-            COALESCE(sjm.json_metadata, ''''),
-            COALESCE(pjm.posting_json_metadata, '''')
-        FROM prepare_accounts pa
-        LEFT JOIN select_json_metadata sjm ON sjm.account_name = pa.account_name
-        LEFT JOIN select_posting_json_metadata pjm ON pjm.account_name = pa.account_name
-        JOIN hive.accounts_view av ON av.name = pa.account_name
-        ON CONFLICT (account_id) DO UPDATE
-        SET
-            json_metadata =
-            (
-                CASE EXCLUDED.json_metadata
-                    WHEN '''' THEN hafd.%s_metadata.json_metadata
-                    ELSE EXCLUDED.json_metadata
-                END
-            ),
-            posting_json_metadata =
-            (
-                CASE EXCLUDED.posting_json_metadata
-                    WHEN '''' THEN hafd.%s_metadata.posting_json_metadata
-                    ELSE EXCLUDED.posting_json_metadata
-                END
-            );
-    END
-    $$;'
-    , hive.get_metadata_update_function_name( _context ), __schema, _context, _context, _context
+                SELECT
+                    metadata.account_name
+                FROM calculated_metadata as metadata
+                GROUP BY metadata.account_name
+                ),
+                select_json_metadata AS MATERIALIZED
+                (
+                SELECT
+                    DISTINCT ON (metadata.account_name) metadata.account_name,
+                    metadata.json_metadata
+                FROM calculated_metadata as metadata
+                WHERE metadata.json_metadata != ''''
+                ORDER BY
+                    metadata.account_name,
+                    metadata.id DESC
+                ),
+                select_posting_json_metadata AS MATERIALIZED
+                (
+                SELECT
+                    DISTINCT ON (metadata.account_name) metadata.account_name,
+                    metadata.posting_json_metadata
+                FROM calculated_metadata as metadata
+                WHERE metadata.posting_json_metadata != ''''
+                ORDER BY
+                    metadata.account_name,
+                    metadata.id DESC
+                )
+                INSERT INTO
+                    hafd.%s_metadata(account_id, json_metadata, posting_json_metadata)
+                SELECT
+                    av.id,
+                    COALESCE(sjm.json_metadata, ''''),
+                    COALESCE(pjm.posting_json_metadata, '''')
+                FROM prepare_accounts pa
+                LEFT JOIN select_json_metadata sjm ON sjm.account_name = pa.account_name
+                LEFT JOIN select_posting_json_metadata pjm ON pjm.account_name = pa.account_name
+                JOIN hive.accounts_view av ON av.name = pa.account_name
+                ON CONFLICT (account_id) DO UPDATE
+                SET
+                    json_metadata =
+                    (
+                        CASE EXCLUDED.json_metadata
+                            WHEN '''' THEN hafd.%s_metadata.json_metadata
+                            ELSE EXCLUDED.json_metadata
+                        END
+                    ),
+                    posting_json_metadata =
+                    (
+                        CASE EXCLUDED.posting_json_metadata
+                            WHEN '''' THEN hafd.%s_metadata.posting_json_metadata
+                            ELSE EXCLUDED.posting_json_metadata
+                        END
+                    );
+            END
+            $$;'
+        , hive.get_metadata_update_function_name( _context ), __schema, _context, _context, _context
     );
-
-    RETURN ARRAY[ __table_name ];
 END;
-$BODY$
-;
+$BODY$;
+
 
 CREATE OR REPLACE FUNCTION hive.update_state_provider_metadata(
     _first_block hafd.blocks.num%TYPE,
@@ -165,7 +181,6 @@ AS
 $BODY$
 DECLARE
     __context_id hafd.contexts.id%TYPE;
-    __table_name TEXT := _context || '_metadata';
 BEGIN
     __context_id = hive.get_context_id( _context );
 
@@ -173,7 +188,7 @@ BEGIN
              RAISE EXCEPTION 'No context with name %', _context;
     END IF;
     EXECUTE format(
-          'SELECT hafd.%I(%s, %s);'
+          'SELECT hive.%I(%s, %s);'
         , hive.get_metadata_update_function_name( _context )
         , _first_block
         , _last_block
@@ -200,7 +215,7 @@ BEGIN
 
     EXECUTE format( 'DROP TABLE hafd.%I', __table_name );
     EXECUTE format(
-          'DROP FUNCTION IF EXISTS hafd.%I'
+          'DROP FUNCTION IF EXISTS hive.%I'
         , hive.get_metadata_update_function_name( _context )
     );
 END;
diff --git a/src/hive_fork_manager/state_providers/state_provider.template b/src/hive_fork_manager/state_providers/state_provider.template
index 0d389dbe311bc7f567bcb0e3ac3fef1042d19a1d..e8294e1e78d985d92be5160da6d468497949dd00 100644
--- a/src/hive_fork_manager/state_providers/state_provider.template
+++ b/src/hive_fork_manager/state_providers/state_provider.template
@@ -15,6 +15,25 @@ END;
 $BODY$
 ;
 
+CREATE OR REPLACE FUNCTION hive.runtimecode_provider_<provider_name>( _context hafd.context_name )
+    RETURNS TEXT[]
+    LANGUAGE plpgsql
+    VOLATILE
+AS
+$BODY$
+DECLARE
+BEGIN
+    -- HERE YOU NEED TO CREATE FUNCTIONS WHICH ARE USED BY PROVIDER
+    -- the function is executed at provider registration and then during each HAF update
+    -- the functions have to be create with CREATE OR REPLACE
+    -- it should be used only for function which are created only to fill state provider table
+    -- the functions names must conform pattern:
+    -- hive.<context_name>_<function_name>
+    -- it must be created in schema hive to be removed during hfm extension update
+END;
+$BODY$
+;
+
 CREATE OR REPLACE FUNCTION hive.update_state_provider_<provider_name>( _first_block hafd.blocks.num%TYPE, _last_block hafd.blocks.num%TYPE, _context hafd.context_name )
     RETURNS void
     LANGUAGE plpgsql
diff --git a/src/hive_fork_manager/state_providers/update_providers.sql b/src/hive_fork_manager/state_providers/update_providers.sql
new file mode 100644
index 0000000000000000000000000000000000000000..9e1d0f7e154bb62ab1e89d6e015cfec94f062247
--- /dev/null
+++ b/src/hive_fork_manager/state_providers/update_providers.sql
@@ -0,0 +1,27 @@
+CREATE OR REPLACE FUNCTION hive.state_provider_update_runtime( _provider hafd.state_providers, _context hafd.context_name)
+    RETURNS void
+    LANGUAGE plpgsql
+AS
+$BODY$
+BEGIN
+    EXECUTE format('hive.runtimecode_provider_%s(%L)', _provider, _context );
+END;
+$BODY$
+;
+
+CREATE OR REPLACE FUNCTION hive.state_providers_update_runtime( )
+    RETURNS void
+    LANGUAGE plpgsql
+AS
+$BODY$
+BEGIN
+    PERFORM
+        hive.state_provider_update_runtime(spr.state_provider, hc.name )
+    FROM hafd.state_providers_registered spr
+    JOIN hafd.contexts hc ON hc.id = spr.context_id;
+END;
+$BODY$
+;
+
+SELECT hive.state_providers_update_runtime();
+
diff --git a/src/hive_fork_manager/tools.sql b/src/hive_fork_manager/tools.sql
index f71a089f6738894838c8bc9eafbb000bd4521ecc..b4be7f238b8e8323553c4476236a207586390824 100644
--- a/src/hive_fork_manager/tools.sql
+++ b/src/hive_fork_manager/tools.sql
@@ -19,3 +19,4 @@ BEGIN
 END;
 $BODY$
 ;
+
diff --git a/tests/integration/functional/hive_fork_manager/state_providers/import_state_provider.sql b/tests/integration/functional/hive_fork_manager/state_providers/import_state_provider.sql
index 4a09300e4dd15f6c29043de48b3f419e474998bd..5a5a99e3a0f529668b64a041e799c11642d2a267 100644
--- a/tests/integration/functional/hive_fork_manager/state_providers/import_state_provider.sql
+++ b/tests/integration/functional/hive_fork_manager/state_providers/import_state_provider.sql
@@ -1,3 +1,21 @@
+CREATE OR REPLACE FUNCTION hafd.create_function_a()
+    RETURNS VOID
+    LANGUAGE plpgsql
+AS
+$BODY$
+BEGIN
+    EXECUTE 'CREATE OR REPLACE FUNCTION hive.a()
+            RETURNS VOID
+            LANGUAGE plpgsql
+            AS
+            $BODY2$
+            BEGIN
+            END;
+            $BODY2$;
+        ';
+END;
+$BODY$;
+
 CREATE OR REPLACE PROCEDURE haf_admin_test_given()
         LANGUAGE 'plpgsql'
     AS
@@ -51,8 +69,17 @@ BEGIN
     $$
     ;';
 
----------------------------END OF TEST PROVIDER -------------------------------------------------------------------
+    EXECUTE 'CREATE OR REPLACE FUNCTION hive.runtimecode_provider_tests(_context hafd.context_name)
+    RETURNS VOID
+    LANGUAGE plpgsql
+    AS
+    $$
+    BEGIN
+        PERFORM hafd.create_function_a();
+    END;
+    $$;';
 
+---------------------------END OF TEST PROVIDER -------------------------------------------------------------------
 
     PERFORM hive.app_state_provider_import( 'ACCOUNTS', 'context' );
     PERFORM hive.app_state_provider_import( 'TESTS', 'context' );
@@ -72,6 +99,14 @@ BEGIN
     ASSERT ( SELECT COUNT(*) FROM hafd.registered_tables WHERE origin_table_schema = 'hafd' AND origin_table_name = 'context_accounts' AND context_id = 1 ) = 1, 'State provider table is not registered';
     ASSERT ( SELECT COUNT(*) FROM hafd.registered_tables WHERE origin_table_schema = 'hafd' AND origin_table_name = 'context_tests1' AND context_id = 1 ) = 1, 'State provider tests1 is not registered';
     ASSERT ( SELECT COUNT(*) FROM hafd.registered_tables WHERE origin_table_schema = 'hafd' AND origin_table_name = 'context_tests2' AND context_id = 1 ) = 1, 'State provider tests2 is not registered';
+
+
+    ASSERT EXISTS (
+        SELECT 1
+        FROM pg_proc
+        JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
+        WHERE pg_proc.proname = 'a' AND pg_namespace.nspname = 'hive'
+    ), 'Function hive.a does not exists';
 END;
 $BODY$
 ;
diff --git a/tests/integration/functional/hive_fork_manager/state_providers/update_state_provider.sql b/tests/integration/functional/hive_fork_manager/state_providers/update_state_provider.sql
index 53c8a775b8faff80e9d0fa03e3250f68888a9ef1..5fec1e19483f1fa272aecc6ae701fe0de8a4d4d6 100644
--- a/tests/integration/functional/hive_fork_manager/state_providers/update_state_provider.sql
+++ b/tests/integration/functional/hive_fork_manager/state_providers/update_state_provider.sql
@@ -29,6 +29,15 @@ BEGIN
         END;
         $$;';
 
+    EXECUTE 'CREATE OR REPLACE FUNCTION hive.runtimecode_provider_tests(_context hafd.context_name)
+    RETURNS VOID
+    LANGUAGE plpgsql
+    AS
+    $$
+    BEGIN
+    END;
+    $$;';
+
     INSERT INTO hafd.operation_types
     VALUES
            ( 1, 'hive::protocol::account_created_operation', TRUE )