diff --git a/src/background/zcl_abapgit_background_push_au.clas.abap b/src/background/zcl_abapgit_background_push_au.clas.abap
index 6302ffd7c..5b24bea21 100644
--- a/src/background/zcl_abapgit_background_push_au.clas.abap
+++ b/src/background/zcl_abapgit_background_push_au.clas.abap
@@ -72,7 +72,7 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION.
DATA li_user_record TYPE REF TO zif_abapgit_user_record.
- li_user_record = zcl_abapgit_user_record=>get_instance( ).
+ li_user_record = zcl_abapgit_env_factory=>get_user_record( ).
rs_user-name = li_user_record->get_name( iv_changed_by ).
rs_user-email = li_user_record->get_email( iv_changed_by ).
diff --git a/src/env/zcl_abapgit_env_factory.clas.abap b/src/env/zcl_abapgit_env_factory.clas.abap
new file mode 100644
index 000000000..f5483da6b
--- /dev/null
+++ b/src/env/zcl_abapgit_env_factory.clas.abap
@@ -0,0 +1,21 @@
+CLASS zcl_abapgit_env_factory DEFINITION PUBLIC GLOBAL FRIENDS zcl_abapgit_env_injector.
+ PUBLIC SECTION.
+ CLASS-METHODS get_user_record
+ RETURNING
+ VALUE(ri_user_record) TYPE REF TO zif_abapgit_user_record.
+
+ PRIVATE SECTION.
+ CLASS-DATA gi_user_record TYPE REF TO zif_abapgit_user_record.
+ENDCLASS.
+
+CLASS zcl_abapgit_env_factory IMPLEMENTATION.
+
+ METHOD get_user_record.
+ IF gi_user_record IS NOT BOUND.
+ CREATE OBJECT gi_user_record TYPE zcl_abapgit_user_record.
+ ENDIF.
+
+ ri_user_record = gi_user_record.
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/env/zcl_abapgit_env_factory.clas.xml b/src/env/zcl_abapgit_env_factory.clas.xml
new file mode 100644
index 000000000..ef9bb9975
--- /dev/null
+++ b/src/env/zcl_abapgit_env_factory.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ZCL_ABAPGIT_ENV_FACTORY
+ E
+ ZCL_ABAPGIT_ENV_FACTORY
+ 1
+ X
+ X
+ X
+
+
+
+
\ No newline at end of file
diff --git a/src/env/zcl_abapgit_env_injector.clas.abap b/src/env/zcl_abapgit_env_injector.clas.abap
new file mode 100644
index 000000000..44290b6c8
--- /dev/null
+++ b/src/env/zcl_abapgit_env_injector.clas.abap
@@ -0,0 +1,14 @@
+CLASS zcl_abapgit_env_injector DEFINITION PUBLIC.
+ PUBLIC SECTION.
+ CLASS-METHODS set_user_record
+ IMPORTING
+ !ii_user_record TYPE REF TO zif_abapgit_user_record.
+ENDCLASS.
+
+CLASS zcl_abapgit_env_injector IMPLEMENTATION.
+
+ METHOD set_user_record.
+ zcl_abapgit_env_factory=>gi_user_record = ii_user_record.
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/env/zcl_abapgit_env_injector.clas.xml b/src/env/zcl_abapgit_env_injector.clas.xml
new file mode 100644
index 000000000..b39321608
--- /dev/null
+++ b/src/env/zcl_abapgit_env_injector.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ZCL_ABAPGIT_ENV_INJECTOR
+ E
+ ZCL_ABAPGIT_ENV_INJECTOR
+ 1
+ X
+ X
+ X
+
+
+
+
\ No newline at end of file
diff --git a/src/env/zcl_abapgit_user_record.clas.abap b/src/env/zcl_abapgit_user_record.clas.abap
index af4efe7b6..a541b292d 100644
--- a/src/env/zcl_abapgit_user_record.clas.abap
+++ b/src/env/zcl_abapgit_user_record.clas.abap
@@ -1,13 +1,11 @@
CLASS zcl_abapgit_user_record DEFINITION
PUBLIC
FINAL
- CREATE PRIVATE.
+ CREATE PRIVATE
+ GLOBAL FRIENDS zcl_abapgit_data_factory.
PUBLIC SECTION.
CLASS-METHODS reset.
- CLASS-METHODS get_instance
- RETURNING
- VALUE(ri_user) TYPE REF TO zif_abapgit_user_record.
INTERFACES zif_abapgit_user_record.
@@ -53,10 +51,6 @@ ENDCLASS.
CLASS zcl_abapgit_user_record IMPLEMENTATION.
- METHOD get_instance.
- CREATE OBJECT ri_user TYPE zcl_abapgit_user_record.
- ENDMETHOD.
-
METHOD zif_abapgit_user_record~get_title.
* the queried username might not exist, refactored for open-abap compatibility
diff --git a/src/env/zcl_abapgit_user_record.clas.testclasses.abap b/src/env/zcl_abapgit_user_record.clas.testclasses.abap
index 054304fc4..0770c462f 100644
--- a/src/env/zcl_abapgit_user_record.clas.testclasses.abap
+++ b/src/env/zcl_abapgit_user_record.clas.testclasses.abap
@@ -19,7 +19,7 @@ CLASS ltcl_user_record IMPLEMENTATION.
DATA li_user_record TYPE REF TO zif_abapgit_user_record.
zcl_abapgit_user_record=>reset( ).
- li_user_record = zcl_abapgit_user_record=>get_instance( ).
+ li_user_record = zcl_abapgit_env_factory=>get_user_record( ).
cl_abap_unit_assert=>assert_equals(
exp = 0
diff --git a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap
index 68fcd1ae4..5c7da27e9 100644
--- a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap
+++ b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap
@@ -1323,7 +1323,7 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION.
ENDIF.
IF iv_username <> zcl_abapgit_objects_super=>c_user_unknown AND iv_suppress_title = abap_false.
- lv_title = zcl_abapgit_user_record=>get_instance( )->get_title( iv_username ).
+ lv_title = zcl_abapgit_env_factory=>get_user_record( )->get_title( iv_username ).
ENDIF.
lv_jump = |{ zif_abapgit_definitions=>c_action-jump_user }?user={ iv_username }|.
diff --git a/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap b/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap
index dcca8eef3..99aa38c7b 100644
--- a/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap
+++ b/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap
@@ -367,7 +367,7 @@ CLASS zcl_abapgit_gui_page_db IMPLEMENTATION.
WHEN zcl_abapgit_persistence_db=>c_type_user.
lv_descr = 'Personal Settings'.
- ls_explanation-value = zcl_abapgit_user_record=>get_instance( )->get_name( is_data-value ).
+ ls_explanation-value = zcl_abapgit_env_factory=>get_user_record( )->get_name( is_data-value ).
WHEN zcl_abapgit_persistence_db=>c_type_settings.
lv_descr = 'Global Settings'.
diff --git a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap
index f256a63c6..cc18bef81 100644
--- a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap
+++ b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap
@@ -194,7 +194,7 @@ CLASS zcl_abapgit_gui_page_sett_info IMPLEMENTATION.
ENDIF.
IF iv_username <> zcl_abapgit_objects_super=>c_user_unknown.
- lv_title = zcl_abapgit_user_record=>get_instance( )->get_title( iv_username ).
+ lv_title = zcl_abapgit_env_factory=>get_user_record( )->get_title( iv_username ).
ENDIF.
rv_user = iv_username.
diff --git a/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap
index 5ca2e2cf7..387954a76 100644
--- a/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap
+++ b/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap
@@ -241,7 +241,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION.
ENDIF.
IF rv_email IS INITIAL.
" get default from user record
- rv_email = zcl_abapgit_user_record=>get_instance( )->get_email( sy-uname ).
+ rv_email = zcl_abapgit_env_factory=>get_user_record( )->get_email( sy-uname ).
ENDIF.
ENDMETHOD.
@@ -259,7 +259,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION.
ENDIF.
IF rv_user IS INITIAL.
" get default from user record
- rv_user = zcl_abapgit_user_record=>get_instance( )->get_name( sy-uname ).
+ rv_user = zcl_abapgit_env_factory=>get_user_record( )->get_name( sy-uname ).
ENDIF.
ENDMETHOD.
diff --git a/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap
index 8071ebc42..b97f4079b 100644
--- a/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap
+++ b/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap
@@ -237,7 +237,7 @@ CLASS zcl_abapgit_gui_page_tags IMPLEMENTATION.
ENDIF.
IF rv_email IS INITIAL.
" get default from user record
- rv_email = zcl_abapgit_user_record=>get_instance( )->get_email( sy-uname ).
+ rv_email = zcl_abapgit_env_factory=>get_user_record( )->get_email( sy-uname ).
ENDIF.
ENDMETHOD.
@@ -255,7 +255,7 @@ CLASS zcl_abapgit_gui_page_tags IMPLEMENTATION.
ENDIF.
IF rv_user IS INITIAL.
" get default from user record
- rv_user = zcl_abapgit_user_record=>get_instance( )->get_name( sy-uname ).
+ rv_user = zcl_abapgit_env_factory=>get_user_record( )->get_name( sy-uname ).
ENDIF.
ENDMETHOD.