diff --git a/gxdynamodb/pom.xml b/gxdynamodb/pom.xml
new file mode 100644
index 000000000..23687c610
--- /dev/null
+++ b/gxdynamodb/pom.xml
@@ -0,0 +1,58 @@
+
+
+ 4.0.0
+
+
+ com.genexus
+ parent
+ ${revision}${changelist}
+
+
+ gxdynamodb
+ GeneXus DynamoDB
+
+
+
+
+ software.amazon.awssdk
+ bom
+ 2.17.151
+ pom
+ import
+
+
+
+
+
+ software.amazon.awssdk
+ dynamodb
+
+
+ ${project.groupId}
+ gxclassR
+ ${project.version}
+
+
+ com.genexus
+ gxcommon
+ ${project.version}
+ compile
+
+
+
+
+ gxdynamodb
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 8
+ 8
+
+
+
+
+
\ No newline at end of file
diff --git a/gxdynamodb/src/main/java/com/genexus/db/dynamodb/DataStoreHelperDynamoDB.java b/gxdynamodb/src/main/java/com/genexus/db/dynamodb/DataStoreHelperDynamoDB.java
new file mode 100644
index 000000000..c40e88f3c
--- /dev/null
+++ b/gxdynamodb/src/main/java/com/genexus/db/dynamodb/DataStoreHelperDynamoDB.java
@@ -0,0 +1,75 @@
+package com.genexus.db.dynamodb;
+
+import com.genexus.CommonUtil;
+import com.genexus.db.ServiceCursorBase;
+import com.genexus.db.driver.GXConnection;
+import com.genexus.db.driver.GXPreparedStatement;
+import com.genexus.db.service.GXType;
+import com.genexus.db.service.IQuery;
+import com.genexus.db.service.ServiceDataStoreHelper;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+public class DataStoreHelperDynamoDB extends ServiceDataStoreHelper
+{
+ public DynamoQuery newQuery()
+ {
+ return new DynamoQuery(this);
+ }
+ public DynamoQuery newScan()
+ {
+ return new DynamoScan(this);
+ }
+
+ public DynamoDBMap Map(String name)
+ {
+ return new DynamoDBMap(name);
+ }
+
+ public Object empty(GXType gxtype)
+ {
+ switch(gxtype)
+ {
+ case Number:
+ case Int16:
+ case Int32:
+ case Int64: return 0;
+ case Date: return new Date(CommonUtil.nullDate().getTime());
+ case DateTime:
+ case DateTime2: return new Timestamp(CommonUtil.nullDate().getTime());
+ case Byte:
+ case NChar:
+ case NClob:
+ case NVarChar:
+ case Char:
+ case LongVarChar:
+ case Clob:
+ case VarChar:
+ case Raw:
+ case Blob:
+ case NText:
+ case Text:
+ case Image:
+ case UniqueIdentifier:
+ case Xml:
+ case DateAsChar: return "";
+ case Boolean: return false;
+ case Decimal: return 0f;
+
+ case Geography:
+ case Geopoint:
+ case Geoline:
+ case Geopolygon:
+
+ case Undefined:
+ default: return null;
+ }
+ }
+
+ @Override
+ public GXPreparedStatement getPreparedStatement(GXConnection con, IQuery query, ServiceCursorBase cursor, int cursorNum, boolean currentOf, Object[] parms)
+ {
+ return new GXPreparedStatement(new DynamoDBPreparedStatement(con.getJDBCConnection(), (DynamoQuery)query, cursor, parms, con), con, con.getHandle(), "", cursor.getCursorId(), currentOf);
+ }
+}
diff --git a/gxdynamodb/src/main/java/com/genexus/db/dynamodb/DynamoDBConnection.java b/gxdynamodb/src/main/java/com/genexus/db/dynamodb/DynamoDBConnection.java
new file mode 100644
index 000000000..80ce0cdb4
--- /dev/null
+++ b/gxdynamodb/src/main/java/com/genexus/db/dynamodb/DynamoDBConnection.java
@@ -0,0 +1,147 @@
+package com.genexus.db.dynamodb;
+
+import com.genexus.db.service.ServiceConnection;
+import org.apache.commons.lang.StringUtils;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
+import software.amazon.awssdk.services.dynamodb.DynamoDbClientBuilder;
+
+import java.net.URI;
+import java.sql.ResultSet;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.concurrent.Executor;
+
+public class DynamoDBConnection extends ServiceConnection
+{
+ private static final String GXDYNAMODB_VERSION = "1.0";
+ private static final String GXDYNAMODB_PRODUCT_NAME = "DynamoDB";
+
+ private static final String CLIENT_ID = "user";
+ private static final String CLIENT_SECRET = "password";
+ private static final String REGION = "region";
+ private static final String LOCAL_URL = "localurl";
+
+
+ DynamoDbClient mDynamoDB;
+ Region mRegion = Region.US_EAST_1;
+
+ public DynamoDBConnection(String connUrl, Properties initialConnProps)
+ {
+ super(connUrl, initialConnProps); // After initialization use props variable from super class to manage properties
+ initializeDBConnection(connUrl);
+ }
+
+ private void initializeDBConnection(String connUrl)
+ {
+ String mLocalUrl = null, mClientId = null, mClientSecret = null;
+ for(Enumeration