diff --git a/gxdynamiccall/client.cfg b/gxdynamiccall/client.cfg
new file mode 100644
index 000000000..728e2a37d
--- /dev/null
+++ b/gxdynamiccall/client.cfg
@@ -0,0 +1,127 @@
+[Client]
+MODEL_NUM= 2
+GENERATOR_NUM= 12
+LOGIN_AS_USERID=0
+SMTP_HOST=
+NAME_SPACE= com.genexus.gxdynamiccall.test
+NAME_HOST=
+CORBA_SERVER_NAME=
+DCOM_GUID=
+CONN_TIMEOUT=300
+HELP_MODE=WINHTML
+HELP_BASEURL=
+PREFERRED_UI=BEST
+JFC_LF=NATIVE
+CALENDAR=1
+CALC=1
+WP_RESIZE=1
+SHOW_STATUS=1
+FIELD_EXIT=Tab
+ESCAPE_FUNCTION=Exit_form
+KEY_REFRESH=5
+KEY_PROMPT=4
+MDI_FORMS=1
+REMOTE_CALLS=NEVER
+IMAGE_SUBST=0
+CS_CONNECT=First
+CS_REORG=1
+CS_REORGJAVA=1
+SUBFILE_ORDER=Y
+FC_READONLY=GRAYED
+PACKAGE=com.genexus.gxdynamiccall.test
+DECIMAL_POINT=.
+DATE_FMT= MDY
+CTOD_DATE_FMT= L
+BLANK_EMPTY_DATE=0
+TIME_FMT=12
+YEAR_LIMIT=40
+COMPRESS_HTML=1
+DocumentType=HTML5
+IE_COMPATIBILITY_VIEW=EmulateIE7
+EXPOSE_METADATA= 0
+WEB_IMAGE_DIR=/static
+HTTP_BACKEND_URL=
+WEB_STATIC_DIR=
+ORQ_CLIENT_URL=
+ORQ_SERVER_DIR=
+TMPMEDIA_DIR=PrivateTempStorage
+PRINT_LAYOUT_METADATA_DIR=LayoutMetadata
+HTTP_PROTOCOL=Unsecure
+SAMESITE_COOKIE=Lax
+StorageTimeZone= 1
+GX_BUILD_NUMBER=1302769
+ODBC_CALLS=0
+NameSpace1= com.genexus.gxdynamiccall.test
+LANGUAGE=eng
+LANG_NAME=English
+Theme=Carmine
+CS_BLOB_PATH=PublicTempStorage
+SUBMIT_POOL_SIZE=5
+CACHE_TTL_0=-1
+CACHE_TTL_1=60
+CACHE_TTL_2=600
+CACHE_TTL_3=0
+CACHE_STORAGE_SIZE=0
+CACHING=0
+SMART_CACHING=0
+CACHE_INVALIDATION_TOKEN=20224512174246
+EVENT_BEFORE_COMMIT=
+EVENT_AFTER_COMMIT=
+EVENT_BEFORE_ROLLBACK=
+EVENT_AFTER_ROLLBACK=
+EVENT_BEFORE_CONNECT=
+EVENT_AFTER_CONNECT=
+ENABLE_MANAGEMENT=0
+EnableIntegratedSecurity=0
+IntegratedSecurityLoginWeb=
+IntegratedSecurityNotAuthorizedWeb=
+HTTPCLIENT_MAX_SIZE=1000
+HTTPCLIENT_MAX_PER_ROUTE=1000
+VER_STAMP=
+[language|English]
+code= eng
+time_fmt= 12
+decimal_point= .
+thousand_sep= ,
+date_fmt= MDY
+culture= en-US
+[com.genexus.gxdynamiccall.test]
+GXDB_LOCATION=
+JTA=0
+DataSource1=DEFAULT
+JDBC_LOG=
+JDBCLogEnabled=0
+JDBCUniqueName=0
+JDBCLogPath=
+JDBCLogLevel=0
+JDBCLogBuffer=0
+JDBCLogDetail=0
+[com.genexus.gxdynamiccall.test|DEFAULT]
+CS_DBNAME=KbPrueba
+INFORMIX_DB=ANSI
+CS_LIBL400=
+CS_PACKAGE400=
+DB2400_DATE_DATATYPE=
+CS_SCHEMA=
+USER_ID=Elj20MqY44RPdvT8FEpDD0==
+USER_PASSWORD=tjRYpiaJ+HYQ0GpWgRGwfo8w59nKWO7H1rRFYPoZo/w=
+CS_CONNECT=First
+WAIT_RECORD=0
+LOCK_RETRY=10
+LoginInServer=1
+JDBC_DRIVER=net.sourceforge.jtds.jdbc.Driver
+DB_URL=jdbc:jtds:sqlserver://GXN1088:1433/KbPrueba
+USE_JDBC_DATASOURCE=0
+JDBC_DATASOURCE=
+MAX_CURSOR=100
+INITIALIZE_NEW=1
+ISOLATION_LEVEL=CR
+XBASE_TINT=1
+DBMS=sqlserver
+UnlimitedRWPool=1
+PoolRWEnabled=1
+RecycleRW=1
+RecycleRWType=1
+RecycleRWMin=30
+POOLSIZE_RW=10
+POOL_STARTUP=0
diff --git a/gxdynamiccall/pom.xml b/gxdynamiccall/pom.xml
new file mode 100644
index 000000000..39e0493b6
--- /dev/null
+++ b/gxdynamiccall/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+
+ com.genexus
+ parent
+ ${revision}${changelist}
+
+
+ gxdynamiccall
+ GeneXus DynamicCall external object
+
+
+
+ ${project.groupId}
+ gxcommon
+ ${project.version}
+
+
+ ${project.groupId}
+ gxclassR
+ ${project.version}
+
+
+
diff --git a/gxdynamiccall/server.cfg b/gxdynamiccall/server.cfg
new file mode 100644
index 000000000..362cf5617
--- /dev/null
+++ b/gxdynamiccall/server.cfg
@@ -0,0 +1,127 @@
+[Client]
+MODEL_NUM= 2
+GENERATOR_NUM= 12
+LOGIN_AS_USERID=0
+SMTP_HOST=
+NAME_SPACE= com.genexus.gxdynamiccall.test
+NAME_HOST=
+CORBA_SERVER_NAME=
+DCOM_GUID=
+CONN_TIMEOUT=300
+HELP_MODE=WINHTML
+HELP_BASEURL=
+PREFERRED_UI=BEST
+JFC_LF=NATIVE
+CALENDAR=1
+CALC=1
+WP_RESIZE=1
+SHOW_STATUS=1
+FIELD_EXIT=Tab
+ESCAPE_FUNCTION=Exit_form
+KEY_REFRESH=5
+KEY_PROMPT=4
+MDI_FORMS=1
+REMOTE_CALLS=NEVER
+IMAGE_SUBST=0
+CS_CONNECT=First
+CS_REORG=1
+CS_REORGJAVA=1
+SUBFILE_ORDER=Y
+FC_READONLY=GRAYED
+PACKAGE=com.genexus.gxdynamiccall.test
+DECIMAL_POINT=.
+DATE_FMT= MDY
+CTOD_DATE_FMT= L
+BLANK_EMPTY_DATE=0
+TIME_FMT=12
+YEAR_LIMIT=40
+COMPRESS_HTML=1
+DocumentType=HTML5
+IE_COMPATIBILITY_VIEW=EmulateIE7
+EXPOSE_METADATA= 0
+WEB_IMAGE_DIR=/static
+HTTP_BACKEND_URL=
+WEB_STATIC_DIR=
+ORQ_CLIENT_URL=
+ORQ_SERVER_DIR=
+TMPMEDIA_DIR=PrivateTempStorage
+PRINT_LAYOUT_METADATA_DIR=LayoutMetadata
+HTTP_PROTOCOL=Unsecure
+SAMESITE_COOKIE=Lax
+StorageTimeZone= 1
+GX_BUILD_NUMBER=1302769
+ODBC_CALLS=0
+NameSpace1= com.genexus.gxdynamiccall.test
+LANGUAGE=eng
+LANG_NAME=English
+Theme=Carmine
+CS_BLOB_PATH=PublicTempStorage
+SUBMIT_POOL_SIZE=5
+CACHE_TTL_0=-1
+CACHE_TTL_1=60
+CACHE_TTL_2=600
+CACHE_TTL_3=0
+CACHE_STORAGE_SIZE=0
+CACHING=0
+SMART_CACHING=0
+CACHE_INVALIDATION_TOKEN=20224512174246
+EVENT_BEFORE_COMMIT=
+EVENT_AFTER_COMMIT=
+EVENT_BEFORE_ROLLBACK=
+EVENT_AFTER_ROLLBACK=
+EVENT_BEFORE_CONNECT=
+EVENT_AFTER_CONNECT=
+ENABLE_MANAGEMENT=0
+EnableIntegratedSecurity=0
+IntegratedSecurityLoginWeb=
+IntegratedSecurityNotAuthorizedWeb=
+HTTPCLIENT_MAX_SIZE=1000
+HTTPCLIENT_MAX_PER_ROUTE=1000
+VER_STAMP=
+[language|English]
+code= eng
+time_fmt= 12
+decimal_point= .
+thousand_sep= ,
+date_fmt= MDY
+culture= en-US
+[com.genexus.gxdynamiccall.test]
+GXDB_LOCATION=
+JTA=0
+DataSource1=DEFAULT
+JDBC_LOG=
+JDBCLogEnabled=0
+JDBCUniqueName=0
+JDBCLogPath=
+JDBCLogLevel=0
+JDBCLogBuffer=0
+JDBCLogDetail=0
+[com.genexus.gxdynamiccall.test|DEFAULT]
+CS_DBNAME=KbPrueba
+INFORMIX_DB=ANSI
+CS_LIBL400=
+CS_PACKAGE400=
+DB2400_DATE_DATATYPE=
+CS_SCHEMA=
+USER_ID=Elj20MqY44RPdvT8FEpDD0==
+USER_PASSWORD=tjRYpiaJ+HYQ0GpWgRGwfo8w59nKWO7H1rRFYPoZo/w=
+CS_CONNECT=First
+WAIT_RECORD=0
+LOCK_RETRY=10
+LoginInServer=1
+JDBC_DRIVER=net.sourceforge.jtds.jdbc.Driver
+DB_URL=jdbc:jtds:sqlserver://GXN1088:1433/KbPrueba
+USE_JDBC_DATASOURCE=0
+JDBC_DATASOURCE=
+MAX_CURSOR=100
+INITIALIZE_NEW=1
+ISOLATION_LEVEL=CR
+XBASE_TINT=1
+DBMS=sqlserver
+UnlimitedRWPool=1
+PoolRWEnabled=1
+RecycleRW=1
+RecycleRWType=1
+RecycleRWMin=30
+POOLSIZE_RW=10
+POOL_STARTUP=0
diff --git a/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynCallMethodConf.java b/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynCallMethodConf.java
new file mode 100644
index 000000000..b2678d320
--- /dev/null
+++ b/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynCallMethodConf.java
@@ -0,0 +1,27 @@
+package com.genexus.gxdynamiccall;
+
+public class GXDynCallMethodConf {
+ private boolean isStatic;
+ private String methodName;
+
+ public GXDynCallMethodConf(){
+ isStatic=false;
+ methodName="execute";
+ }
+
+ public void setIsStatic(boolean is){
+ isStatic=is;
+ }
+ public boolean getIsStatic(){
+ return isStatic;
+ }
+
+ public void setMethodName(String mn){
+ methodName=mn;
+ }
+
+ public String getMethodName(){
+ return methodName;
+ }
+
+}
diff --git a/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynCallProperties.java b/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynCallProperties.java
new file mode 100644
index 000000000..3e168defa
--- /dev/null
+++ b/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynCallProperties.java
@@ -0,0 +1,23 @@
+package com.genexus.gxdynamiccall;
+
+public class GXDynCallProperties {
+ private String externalName;
+ private String packageName;
+
+ public String getExternalName() {
+ return externalName;
+ }
+ public void setExternalName(String name) {
+ externalName = name;
+ }
+ public String getPackageName() {
+ return packageName;
+ }
+ public void setPackageName(String packageN) {
+ packageName = packageN;
+ }
+
+
+
+
+}
diff --git a/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynamicCall.java b/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynamicCall.java
new file mode 100644
index 000000000..d514b8daa
--- /dev/null
+++ b/gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynamicCall.java
@@ -0,0 +1,267 @@
+package com.genexus.gxdynamiccall;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.Vector;
+
+import com.genexus.CommonUtil;
+import com.genexus.GXBaseCollection;
+import com.genexus.SdtMessages_Message;
+import com.genexus.common.interfaces.SpecificImplementation;
+
+public class GXDynamicCall {
+
+ private GXDynCallProperties properties;
+ private Object instanceObject;
+ private String objectName;
+
+ public GXDynamicCall(){
+ properties = new GXDynCallProperties();
+ properties.setPackageName(SpecificImplementation.Application.getPACKAGE());
+ }
+
+ public GXDynCallProperties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(GXDynCallProperties properties) {
+ this.properties = properties;
+ }
+
+ public String getObjectName(){
+ return objectName;
+
+ }
+
+ public void setObjectName(String name){
+ objectName=name;
+ properties.setExternalName(name);
+ }
+
+ public void execute(Vector