diff --git a/app/server/appsmith-plugins/mssqlPlugin/dependency-reduced-pom.xml b/app/server/appsmith-plugins/mssqlPlugin/dependency-reduced-pom.xml
new file mode 100644
index 0000000000..f62f7e0f96
--- /dev/null
+++ b/app/server/appsmith-plugins/mssqlPlugin/dependency-reduced-pom.xml
@@ -0,0 +1,171 @@
+
+
+ 4.0.0
+ com.external.plugins
+ mssqlPlugin
+ mssqlPlugin
+ 1.0-SNAPSHOT
+
+
+
+ maven-shade-plugin
+ 3.2.4
+
+
+ package
+
+ shade
+
+
+
+
+ false
+
+
+
+ ${plugin.id}
+ ${plugin.class}
+ ${plugin.version}
+ ${plugin.provider}
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+ runtime
+ ${project.build.directory}/lib
+
+
+
+
+
+
+
+
+ org.pf4j
+ pf4j-spring
+ 0.6.0
+ provided
+
+
+ com.appsmith
+ interfaces
+ 1.0-SNAPSHOT
+ provided
+
+
+ org.projectlombok
+ lombok
+ 1.18.8
+ provided
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
+ hamcrest-core
+ org.hamcrest
+
+
+
+
+ org.testcontainers
+ testcontainers
+ 1.15.0-rc2
+ test
+
+
+ commons-compress
+ org.apache.commons
+
+
+ duct-tape
+ org.rnorth.duct-tape
+
+
+ visible-assertions
+ org.rnorth.visible-assertions
+
+
+ docker-java-api
+ com.github.docker-java
+
+
+ docker-java-transport-zerodep
+ com.github.docker-java
+
+
+
+
+ org.testcontainers
+ mssqlserver
+ 1.15.0-rc2
+ test
+
+
+ jdbc
+ org.testcontainers
+
+
+
+
+ io.projectreactor
+ reactor-test
+ 3.2.11.RELEASE
+ test
+
+
+ org.mockito
+ mockito-core
+ 3.1.0
+ test
+
+
+ byte-buddy
+ net.bytebuddy
+
+
+ byte-buddy-agent
+ net.bytebuddy
+
+
+ objenesis
+ org.objenesis
+
+
+
+
+
+ mssql-plugin
+ ${java.version}
+ 11
+ ${java.version}
+ com.external.plugins.MssqlPlugin
+ UTF-8
+ 1.0-SNAPSHOT
+ tech@appsmith.com
+
+
diff --git a/app/server/appsmith-plugins/mssqlPlugin/plugin.properties b/app/server/appsmith-plugins/mssqlPlugin/plugin.properties
new file mode 100644
index 0000000000..571e1d3e4d
--- /dev/null
+++ b/app/server/appsmith-plugins/mssqlPlugin/plugin.properties
@@ -0,0 +1,5 @@
+plugin.id=mssql-plugin
+plugin.class=com.external.plugins.MssqlPlugin
+plugin.version=1.0-SNAPSHOT
+plugin.provider=tech@appsmith.com
+plugin.dependencies=
diff --git a/app/server/appsmith-plugins/mssqlPlugin/pom.xml b/app/server/appsmith-plugins/mssqlPlugin/pom.xml
new file mode 100644
index 0000000000..fedeaa4eb7
--- /dev/null
+++ b/app/server/appsmith-plugins/mssqlPlugin/pom.xml
@@ -0,0 +1,146 @@
+
+
+
+ 4.0.0
+
+ com.external.plugins
+ mssqlPlugin
+ 1.0-SNAPSHOT
+
+ mssqlPlugin
+
+
+ UTF-8
+ 11
+ ${java.version}
+ ${java.version}
+ mssql-plugin
+ com.external.plugins.MssqlPlugin
+ 1.0-SNAPSHOT
+ tech@appsmith.com
+
+
+
+
+
+
+ org.pf4j
+ pf4j-spring
+ 0.6.0
+ provided
+
+
+
+ com.appsmith
+ interfaces
+ 1.0-SNAPSHOT
+ provided
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.8
+ provided
+
+
+
+ com.microsoft.sqlserver
+ mssql-jdbc
+ 8.4.1.jre11
+
+
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
+
+ org.testcontainers
+ testcontainers
+ 1.15.0-rc2
+ test
+
+
+ org.testcontainers
+ mssqlserver
+ 1.15.0-rc2
+ test
+
+
+
+ io.projectreactor
+ reactor-test
+ 3.2.11.RELEASE
+ test
+
+
+ org.mockito
+ mockito-core
+ 3.1.0
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.4
+
+ false
+
+
+
+ ${plugin.id}
+ ${plugin.class}
+ ${plugin.version}
+ ${plugin.provider}
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+ package
+
+ shade
+
+
+
+
+
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+ runtime
+ ${project.build.directory}/lib
+
+
+
+
+
+
+
+
diff --git a/app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java b/app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java
new file mode 100644
index 0000000000..ea9f4ecd3b
--- /dev/null
+++ b/app/server/appsmith-plugins/mssqlPlugin/src/main/java/com/external/plugins/MssqlPlugin.java
@@ -0,0 +1,307 @@
+package com.external.plugins;
+
+import com.appsmith.external.models.ActionConfiguration;
+import com.appsmith.external.models.ActionExecutionResult;
+import com.appsmith.external.models.AuthenticationDTO;
+import com.appsmith.external.models.DatasourceConfiguration;
+import com.appsmith.external.models.DatasourceTestResult;
+import com.appsmith.external.models.Endpoint;
+import com.appsmith.external.models.SSLDetails;
+import com.appsmith.external.pluginExceptions.AppsmithPluginError;
+import com.appsmith.external.pluginExceptions.AppsmithPluginException;
+import com.appsmith.external.pluginExceptions.StaleConnectionException;
+import com.appsmith.external.plugins.BasePlugin;
+import com.appsmith.external.plugins.PluginExecutor;
+import lombok.NonNull;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.ObjectUtils;
+import org.pf4j.Extension;
+import org.pf4j.PluginWrapper;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import reactor.core.publisher.Mono;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.time.LocalDateTime;
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static com.appsmith.external.models.Connection.Mode.READ_ONLY;
+
+public class MssqlPlugin extends BasePlugin {
+
+ private static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
+
+ private static final int VALIDITY_CHECK_TIMEOUT = 5;
+
+ private static final String DATE_COLUMN_TYPE_NAME = "date";
+
+ public MssqlPlugin(PluginWrapper wrapper) {
+ super(wrapper);
+ }
+
+ /**
+ * MsSQL plugin receives the query as json of the following format :
+ */
+
+ @Slf4j
+ @Extension
+ public static class MssqlPluginExecutor implements PluginExecutor {
+
+ @Override
+ public Mono execute(Connection connection,
+ DatasourceConfiguration datasourceConfiguration,
+ ActionConfiguration actionConfiguration) {
+
+ try {
+ if (connection == null || connection.isClosed() || !connection.isValid(VALIDITY_CHECK_TIMEOUT)) {
+ log.info("Encountered stale connection in MsSQL plugin. Reporting back.");
+ throw new StaleConnectionException();
+ }
+ } catch (SQLException error) {
+ // This exception is thrown only when the timeout to `isValid` is negative. Since, that's not the case,
+ // here, this should never happen.
+ log.error("Error checking validity of MsSQL connection.", error);
+ }
+
+ String query = actionConfiguration.getBody();
+
+ if (query == null) {
+ return Mono.error(new AppsmithPluginException(AppsmithPluginError.PLUGIN_ERROR, "Missing required parameter: Query."));
+ }
+
+ List