diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3f0239720d324ca842cab0936a72f77b4a69a3fc
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,34 @@
+image: maven:3-amazoncorretto-8
+
+variables:
+  # This will suppress any download for dependencies and plugins or upload messages which would clutter the console log.
+  # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
+  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
+  # As of Maven 3.3.0 instead of this you may define these options in `.mvn/maven.config` so the same config is used
+  # when running from the command line.
+  # `installAtEnd` and `deployAtEnd`are only effective with recent version of the corresponding plugins.
+  MAVEN_CLI_OPTS: "--settings .m2/settings.xml --batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
+
+# Cache downloaded dependencies and plugins between builds.
+# To keep cache across branches add 'key: "$CI_JOB_REF_NAME"'
+cache:
+  paths:
+    - .m2/repository
+
+default:
+  tags:
+    - aws
+    - docker
+
+test:
+  stage: test
+  script:
+    - mvn clean $MAVEN_CLI_OPTS verify
+
+deploy:
+  stage: deploy
+  only:
+    - main
+  script:
+    - env
+    - mvn $MAVEN_CLI_OPTS deploy -Pdeploy -X
diff --git a/.m2/settings.xml b/.m2/settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a4f939d02d14cdaffeb6dfd055762bb8d3c07fb5
--- /dev/null
+++ b/.m2/settings.xml
@@ -0,0 +1,15 @@
+<settings>
+	<servers>
+		<server>
+			<id>adi-ia-libraries</id>
+			<configuration>
+				<httpHeaders>
+					<property>
+						<name>Job-Token</name>
+						<value>${env.CI_JOB_TOKEN}</value>
+					</property>
+				</httpHeaders>
+			</configuration>
+		</server>
+	</servers>
+</settings>
diff --git a/pom.xml b/pom.xml
index 848f7cf0b309c5192492f9711bf5529139be7c0c..6800eb61d860849c15c1ba4de7f4c7d7a1747ed6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>edu.wisc.uwss</groupId>
 	<artifactId>uw-spring-security</artifactId>
-	<version>3.0.4-SNAPSHOT</version>
+	<version>3.0.4</version>
 	<packaging>pom</packaging>
 	<name>UW Spring Security Parent</name>
 	<description>Parent project for module to integrate Spring Security with UW authentication mechanism.</description>
@@ -16,34 +16,21 @@
 
 	<distributionManagement>
 		<repository>
-			<id>artifacts.doit.wisc.edu-maven-uw-open-releases-proxy</id>
-			<url>https://ia-tools-nexus.doit.wisc.edu/repository/artifacts.doit.wisc.edu-maven-uw-open-releases-proxy</url>
+			<id>adi-ia</id>
+			<url>https://git.doit.wisc.edu/api/v4/projects/392/packages/maven</url>
 		</repository>
-		<snapshotRepository>
-			<id>maven-snapshots</id>
-			<url>https://ia-tools-nexus.doit.wisc.edu/repository/maven-snapshots/</url>
-		</snapshotRepository>
 	</distributionManagement>
 
 	<repositories>
 		<repository>
-			<id>maven-private</id>
-			<url>https://ia-tools-nexus.doit.wisc.edu/repository/maven-private/</url>
-		</repository>
-		<repository>
-			<id>maven-public</id>
-			<url>https://ia-tools-nexus.doit.wisc.edu/repository/maven-public/</url>
-		</repository>
-		<repository>
-			<id>artifacts.doit.wisc.edu-maven-uw-open-releases-proxy</id>
-			<name>artifacts.doit.wisc.edu-maven-uw-open-releases-proxy</name>
-			<url>https://ia-tools-nexus.doit.wisc.edu/repository/artifacts.doit.wisc.edu-maven-uw-open-releases-proxy</url>
+			<id>adi-ia-libraries</id>
+			<url>https://git.doit.wisc.edu/api/v4/groups/15/-/packages/maven</url>
 		</repository>
 	</repositories>
 
 	<properties>
-		<revision>3.0.1-SNAPSHOT</revision>
-		<adi.development.version>0.5.1</adi.development.version>
+		<revision>3.0.4</revision>
+		<adi.development.version>2.0.1</adi.development.version>
 		<jackson.version>2.11.1</jackson.version>
 		<slf4j.version>1.7.7</slf4j.version>
 		<spring.framework.version>5.2.7.RELEASE</spring.framework.version>
diff --git a/uw-spring-security-config/pom.xml b/uw-spring-security-config/pom.xml
index 32f50c8e5a1a3c81feff9a95e5a0d03508f96382..62b90374dd70fea328be483db508a48e7e84277c 100644
--- a/uw-spring-security-config/pom.xml
+++ b/uw-spring-security-config/pom.xml
@@ -3,7 +3,7 @@
 	<parent>
 		<groupId>edu.wisc.uwss</groupId>
 		<artifactId>uw-spring-security</artifactId>
-		<version>3.0.4-SNAPSHOT</version>
+		<version>3.0.4</version>
 	</parent>
 	<artifactId>uw-spring-security-config</artifactId>
 	<name>UW Spring Security Configuration</name>
diff --git a/uw-spring-security-config/src/main/java/edu/wisc/uwss/configuration/development/SimulatePreAuthenticationHttpSecurityAmender.java b/uw-spring-security-config/src/main/java/edu/wisc/uwss/configuration/development/SimulatePreAuthenticationHttpSecurityAmender.java
index 903d6079ee57d9c87a6b28c3f98dd84d80374dd0..0d4fcda7b7ed92615fbde40e65dd04096d8752b3 100644
--- a/uw-spring-security-config/src/main/java/edu/wisc/uwss/configuration/development/SimulatePreAuthenticationHttpSecurityAmender.java
+++ b/uw-spring-security-config/src/main/java/edu/wisc/uwss/configuration/development/SimulatePreAuthenticationHttpSecurityAmender.java
@@ -1,7 +1,5 @@
 package edu.wisc.uwss.configuration.development;
 
-import com.github.nblair.web.PreAuthenticationSimulationServletFilter;
-
 
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.web.context.SecurityContextPersistenceFilter;
diff --git a/uw-spring-security-config/src/main/java/edu/wisc/uwss/configuration/preauth/PreAuthenticationDevelopmentConfiguration.java b/uw-spring-security-config/src/main/java/edu/wisc/uwss/configuration/preauth/PreAuthenticationDevelopmentConfiguration.java
index 48fb3aa05e8b224f43697b7cdc550f62e0fa8752..eed10610a1683fdf25a76611e314267bdeb5cbda 100644
--- a/uw-spring-security-config/src/main/java/edu/wisc/uwss/configuration/preauth/PreAuthenticationDevelopmentConfiguration.java
+++ b/uw-spring-security-config/src/main/java/edu/wisc/uwss/configuration/preauth/PreAuthenticationDevelopmentConfiguration.java
@@ -7,6 +7,8 @@ import javax.inject.Inject;
 import javax.servlet.Filter;
 import javax.servlet.ServletException;
 
+import edu.wisc.doit.adi.web.PreAuthenticationSimulationServletFilter;
+import edu.wisc.doit.adi.web.ProfileConditionalDelegatingFilterProxy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,8 +19,6 @@ import org.springframework.core.env.Environment;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.web.context.SecurityContextPersistenceFilter;
 
-import com.github.nblair.web.PreAuthenticationSimulationServletFilter;
-import com.github.nblair.web.ProfileConditionalDelegatingFilterProxy;
 
 import edu.wisc.uwss.configuration.HttpSecurityAmender;
 import edu.wisc.uwss.configuration.development.SimulatePreAuthenticationHttpSecurityAmender;
diff --git a/uw-spring-security-core/pom.xml b/uw-spring-security-core/pom.xml
index f521d04ddac05be2935eeffe26295da394413e64..c2b36d334d25e5415761c207aa47022a680b40ae 100644
--- a/uw-spring-security-core/pom.xml
+++ b/uw-spring-security-core/pom.xml
@@ -3,7 +3,7 @@
 	<parent>
 		<groupId>edu.wisc.uwss</groupId>
 		<artifactId>uw-spring-security</artifactId>
-		<version>3.0.4-SNAPSHOT</version>
+		<version>3.0.4</version>
 	</parent>
 	<artifactId>uw-spring-security-core</artifactId>
 	<name>UW Spring Security Core</name>
diff --git a/uw-spring-security-sample-war/pom.xml b/uw-spring-security-sample-war/pom.xml
index e107445c3eda4322680e076a76e6cfa9497a135e..9e6ace096ff38541e4264ca1eda2f095ffe1a02a 100644
--- a/uw-spring-security-sample-war/pom.xml
+++ b/uw-spring-security-sample-war/pom.xml
@@ -3,7 +3,7 @@
 	<parent>
 		<groupId>edu.wisc.uwss</groupId>
 		<artifactId>uw-spring-security</artifactId>
-		<version>3.0.4-SNAPSHOT</version>
+		<version>3.0.4</version>
 	</parent>
 	<artifactId>uw-spring-security-sample-war</artifactId>
 	<name>UW Spring Security Sample War</name>
diff --git a/uw-spring-security-sample-war/src/main/java/edu/wisc/uwss/sample/configuration/DemonstrationOnlyPreAuthenticationConfiguration.java b/uw-spring-security-sample-war/src/main/java/edu/wisc/uwss/sample/configuration/DemonstrationOnlyPreAuthenticationConfiguration.java
index 07db4b8da836d7276f434c7ca4fe2068db2445cb..fa8c773a234369b39614eae65baf488c1904fbf7 100644
--- a/uw-spring-security-sample-war/src/main/java/edu/wisc/uwss/sample/configuration/DemonstrationOnlyPreAuthenticationConfiguration.java
+++ b/uw-spring-security-sample-war/src/main/java/edu/wisc/uwss/sample/configuration/DemonstrationOnlyPreAuthenticationConfiguration.java
@@ -15,6 +15,7 @@ import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 
+import edu.wisc.doit.adi.web.PreAuthenticationSimulationServletFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,7 +28,6 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.web.context.SecurityContextPersistenceFilter;
 import org.springframework.web.filter.DelegatingFilterProxy;
 
-import com.github.nblair.web.PreAuthenticationSimulationServletFilter;
 
 import edu.wisc.uwss.configuration.HttpSecurityAmender;
 import edu.wisc.uwss.configuration.development.SimulatePreAuthenticationHttpSecurityAmender;
diff --git a/uw-spring-security-web/pom.xml b/uw-spring-security-web/pom.xml
index 0847888d5dcbe11c95fa0588f102983889b9a706..92d517cc21a987867ac4f2a34e926e949c976cb7 100644
--- a/uw-spring-security-web/pom.xml
+++ b/uw-spring-security-web/pom.xml
@@ -15,7 +15,7 @@
     <parent>
 		<groupId>edu.wisc.uwss</groupId>
 		<artifactId>uw-spring-security</artifactId>
-		<version>3.0.4-SNAPSHOT</version>
+		<version>3.0.4</version>
 	</parent>
 	<artifactId>uw-spring-security-web</artifactId>
 	<name>UW Spring Security Web</name>