diff --git a/protocol-dhcp/pom.xml b/protocol-dhcp/pom.xml
index 7caafa4..3f13cfe 100644
--- a/protocol-dhcp/pom.xml
+++ b/protocol-dhcp/pom.xml
@@ -32,11 +32,6 @@
   <description>The DHCP protocol provider for ApacheDS</description>
 
   <dependencies>
-    <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
-      <scope>test</scope>
-    </dependency>
 
     <dependency>
       <groupId>org.apache.directory.api</groupId>
diff --git a/protocol-dhcp/src/test/java/org/apache/directory/server/dhcp/DhcpMessageDecoderTest.java b/protocol-dhcp/src/test/java/org/apache/directory/server/dhcp/DhcpMessageDecoderTest.java
index f90d328..eb681ca 100644
--- a/protocol-dhcp/src/test/java/org/apache/directory/server/dhcp/DhcpMessageDecoderTest.java
+++ b/protocol-dhcp/src/test/java/org/apache/directory/server/dhcp/DhcpMessageDecoderTest.java
@@ -23,19 +23,14 @@
 
 import java.nio.ByteBuffer;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
 import org.apache.directory.server.dhcp.io.DhcpMessageDecoder;
 import org.apache.directory.server.dhcp.messages.DhcpMessage;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
 
 
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
 public class DhcpMessageDecoderTest extends AbstractDhcpTestCase
 {
     private ByteBuffer requestByteBuffer;
diff --git a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/AddressRecordDecoderTest.java b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/AddressRecordDecoderTest.java
index c4f0e462..6d6dbde 100644
--- a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/AddressRecordDecoderTest.java
+++ b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/AddressRecordDecoderTest.java
@@ -28,8 +28,8 @@
 import org.apache.directory.api.util.Strings;
 import org.apache.directory.server.dns.store.DnsAttribute;
 import org.apache.mina.core.buffer.IoBuffer;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import static org.junit.Assert.assertEquals;
 
@@ -47,7 +47,7 @@
     AddressRecordDecoder decoder;
 
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception
     {
         address = Network.LOOPBACK;
diff --git a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/IPv6RecordDecoderTest.java b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/IPv6RecordDecoderTest.java
index 5ceeb10..b0028e8 100644
--- a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/IPv6RecordDecoderTest.java
+++ b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/IPv6RecordDecoderTest.java
@@ -27,8 +27,8 @@
 import org.apache.directory.api.util.Strings;
 import org.apache.directory.server.dns.store.DnsAttribute;
 import org.apache.mina.core.buffer.IoBuffer;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import static org.junit.Assert.assertEquals;
 
@@ -46,7 +46,7 @@
     IPv6RecordDecoder decoder;
 
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception
     {
         address = InetAddress.getByName( "0:0:0:0:0:0:0:1" );
diff --git a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/MailExchangeRecordDecoderTest.java b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/MailExchangeRecordDecoderTest.java
index 30efca1..5ab120a 100644
--- a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/MailExchangeRecordDecoderTest.java
+++ b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/MailExchangeRecordDecoderTest.java
@@ -28,8 +28,8 @@
 import org.apache.directory.api.util.Strings;
 import org.apache.directory.server.dns.store.DnsAttribute;
 import org.apache.mina.core.buffer.IoBuffer;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -49,7 +49,7 @@
     MailExchangeRecordDecoder decoder;
 
 
-    @Before
+    @BeforeEach
     public void setUp()
     {
         inputBuffer = IoBuffer.allocate( 128 );
diff --git a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/NameServerRecordDecoderTest.java b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/NameServerRecordDecoderTest.java
index 04fd9cd..f0e8269 100644
--- a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/NameServerRecordDecoderTest.java
+++ b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/decoder/NameServerRecordDecoderTest.java
@@ -28,8 +28,8 @@
 import org.apache.directory.api.util.Strings;
 import org.apache.directory.server.dns.store.DnsAttribute;
 import org.apache.mina.core.buffer.IoBuffer;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -48,7 +48,7 @@
     NameServerRecordDecoder decoder;
 
 
-    @Before
+    @BeforeEach
     public void setUp()
     {
         inputBuffer = IoBuffer.allocate( 128 );
diff --git a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/encoder/AbstractResourceRecordEncoderTest.java b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/encoder/AbstractResourceRecordEncoderTest.java
index 6dcb488..006d17b 100644
--- a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/encoder/AbstractResourceRecordEncoderTest.java
+++ b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/encoder/AbstractResourceRecordEncoderTest.java
@@ -32,8 +32,8 @@
 import org.apache.directory.server.dns.messages.ResourceRecord;
 import org.apache.directory.server.dns.messages.ResourceRecordImpl;
 import org.apache.mina.core.buffer.IoBuffer;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -52,7 +52,7 @@
     ResourceRecord record;
 
 
-    @Before
+    @BeforeEach
     public void setUp() throws UnknownHostException
     {
         setUpResourceData();
@@ -65,7 +65,7 @@
         expectedData.put( ( byte ) domainNameParts[1].length() ); // + 1
         expectedData.put( Strings.getBytesUtf8( domainNameParts[1] ) ); // + 6
         expectedData.put( ( byte ) domainNameParts[2].length() ); // + 1
-        expectedData.put( Strings.getBytesUtf8( domainNameParts[2] ) ); // + 3
+        expectedData.put( Strings.getBytesUtf8( domainNameParts[2] ) ); // + 3esourceRecordEncoder
         expectedData.put( ( byte ) 0x00 ); // + 1 = 18
         expectedData.putShort( RecordType.A.convert() );
         expectedData.putShort( RecordClass.IN.convert() );
@@ -78,8 +78,8 @@
     public void testEncode() throws IOException
     {
         IoBuffer outBuffer = IoBuffer.allocate( 128 );
-        getEncoder().put( outBuffer, record );
-        assertEquals( expectedData, outBuffer );
+        getEncoder().put(outBuffer, record);
+        assertEquals(expectedData, outBuffer);
     }
 
 
diff --git a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/encoder/QuestionRecordEncoderTest.java b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/encoder/QuestionRecordEncoderTest.java
index 0a03140..f1667fa 100644
--- a/protocol-dns/src/test/java/org/apache/directory/server/dns/io/encoder/QuestionRecordEncoderTest.java
+++ b/protocol-dns/src/test/java/org/apache/directory/server/dns/io/encoder/QuestionRecordEncoderTest.java
@@ -28,8 +28,8 @@
 import org.apache.directory.server.dns.messages.RecordClass;
 import org.apache.directory.server.dns.messages.RecordType;
 import org.apache.mina.core.buffer.IoBuffer;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -51,7 +51,7 @@
     QuestionRecord record = new QuestionRecord( name, type, rClass );
 
 
-    @Before
+    @BeforeEach
     public void setUp()
     {
         encoder = new QuestionRecordEncoder();
diff --git a/protocol-dns/src/test/java/org/apache/directory/server/dns/messages/RecordClassTest.java b/protocol-dns/src/test/java/org/apache/directory/server/dns/messages/RecordClassTest.java
index 11f4df4..d504682 100644
--- a/protocol-dns/src/test/java/org/apache/directory/server/dns/messages/RecordClassTest.java
+++ b/protocol-dns/src/test/java/org/apache/directory/server/dns/messages/RecordClassTest.java
@@ -20,7 +20,7 @@
 package org.apache.directory.server.dns.messages;
 
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import static org.junit.Assert.assertEquals;
 
 
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java
index 59821b0..c81cf99 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java
@@ -50,10 +50,10 @@
 import org.apache.directory.shared.kerberos.messages.AsRep;
 import org.apache.directory.shared.kerberos.messages.AsReq;
 import org.apache.directory.shared.kerberos.messages.KrbError;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -73,7 +73,7 @@
     /**
      * Creates a new instance of {@link AuthenticationEncryptionTypeTest}.
      */
-    @Before
+    @BeforeEach
     public void setUp()
     {
         kdcServer = new KdcServer();
@@ -88,7 +88,7 @@
     /**
      * Shutdown the Kerberos server
      */
-    @After
+    @AfterEach
     public void shutDown()
     {
         kdcServer.stop();
@@ -101,7 +101,7 @@
      * @throws Exception
      */
     @Test
-    @Ignore( "uses DES but the encryption key is generated in AbstractAuthenticationServiceTest always uses AES" )
+    @Disabled( "uses DES but the encryption key is generated in AbstractAuthenticationServiceTest always uses AES" )
     public void testRequestDesCbcMd5() throws Exception
     {
         KdcReqBody kdcReqBody = new KdcReqBody();
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java
index 3a56528..a6603b1 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java
@@ -32,9 +32,9 @@
 import org.apache.directory.shared.kerberos.exceptions.ErrorType;
 import org.apache.directory.shared.kerberos.messages.AsReq;
 import org.apache.directory.shared.kerberos.messages.KrbError;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -54,7 +54,7 @@
     /**
      * Creates a new instance of {@link AuthenticationPolicyTest}.
      */
-    @Before
+    @BeforeEach
     public void setUp()
     {
         kdcServer = new KdcServer();
@@ -68,7 +68,7 @@
     /**
      * Shutdown the Kerberos server
      */
-    @After
+    @AfterEach
     public void shutDown()
     {
         kdcServer.stop();
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java
index badcbc5..8367bb4 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java
@@ -46,9 +46,9 @@
 import org.apache.directory.shared.kerberos.messages.AsReq;
 import org.apache.directory.shared.kerberos.messages.KrbError;
 import org.apache.directory.shared.kerberos.messages.TgsRep;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -68,7 +68,7 @@
     /**
      * Creates a new instance of {@link AuthenticationServiceTest}.
      */
-    @Before
+    @BeforeEach
     public void setUp()
     {
         kdcServer = new KdcServer();
@@ -83,7 +83,7 @@
     /**
      * Shutdown the Kerberos server
      */
-    @After
+    @AfterEach
     public void shutDown()
     {
         kdcServer.stop();
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/EncTktInSkeyTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/EncTktInSkeyTest.java
index ddb6fa7..002437c 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/EncTktInSkeyTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/EncTktInSkeyTest.java
@@ -38,9 +38,9 @@
 import org.apache.directory.shared.kerberos.exceptions.ErrorType;
 import org.apache.directory.shared.kerberos.messages.KrbError;
 import org.apache.directory.shared.kerberos.messages.Ticket;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -61,7 +61,7 @@
     /**
      * Creates a new instance of {@link EncTktInSkeyTest}.
      */
-    @Before
+    @BeforeEach
     public void setUp()
     {
         kdcServer = new KdcServer();
@@ -83,7 +83,7 @@
     /**
      * Shutdown the Kerberos server
      */
-    @After
+    @AfterEach
     public void shutDown()
     {
         kdcServer.stop();
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/FragmentDecoderTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/FragmentDecoderTest.java
index 90a5523..bb90bc3 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/FragmentDecoderTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/FragmentDecoderTest.java
@@ -32,8 +32,8 @@
 import org.apache.mina.core.service.DefaultTransportMetadata;
 import org.apache.mina.core.session.IoSessionConfig;
 import org.apache.mina.filter.codec.ProtocolCodecSession;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -54,7 +54,7 @@
     private ProtocolCodecSession session;
 
 
-    @Before
+    @BeforeEach
     public void setup()
     {
         decoder = new MinaKerberosDecoder();
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/PreAuthenticationTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/PreAuthenticationTest.java
index c0a6a1a..ab96ee6 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/PreAuthenticationTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/PreAuthenticationTest.java
@@ -43,9 +43,9 @@
 import org.apache.directory.shared.kerberos.exceptions.ErrorType;
 import org.apache.directory.shared.kerberos.messages.AsReq;
 import org.apache.directory.shared.kerberos.messages.KrbError;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -66,7 +66,7 @@
     /**
      * Creates a new instance of {@link PreAuthenticationTest}.
      */
-    @Before
+    @BeforeEach
     public void setUp()
     {
         kdcServer = new KdcServer();
@@ -81,7 +81,7 @@
     /**
      * Shutdown the Kerberos server
      */
-    @After
+    @AfterEach
     public void shutDown()
     {
         kdcServer.stop();
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TGSReplayCacheTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TGSReplayCacheTest.java
index 2273068..5e8d892 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TGSReplayCacheTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TGSReplayCacheTest.java
@@ -43,7 +43,7 @@
 import org.apache.directory.shared.kerberos.messages.TgsRep;
 import org.apache.directory.shared.kerberos.messages.Ticket;
 import org.junit.After;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 /**
  * Tests for configurable {@link ReplayCache}.
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingEncryptionTypeTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingEncryptionTypeTest.java
index 7b4c11c..6e7e817 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingEncryptionTypeTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingEncryptionTypeTest.java
@@ -45,10 +45,10 @@
 import org.apache.directory.shared.kerberos.components.PrincipalName;
 import org.apache.directory.shared.kerberos.messages.TgsRep;
 import org.apache.directory.shared.kerberos.messages.Ticket;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -68,7 +68,7 @@
     /**
      * Creates a new instance of {@link TicketGrantingEncryptionTypeTest}.
      */
-    @Before
+    @BeforeEach
     public void setUp()
     {
         kdcServer = new KdcServer();
@@ -90,7 +90,7 @@
     /**
      * Shutdown the Kerberos server
      */
-    @After
+    @AfterEach
     public void shutDown()
     {
         kdcServer.stop();
@@ -103,7 +103,7 @@
      * @throws Exception
      */
     @Test
-    @Ignore( "uses DES but the encryption key is generated in AbstractAuthenticationServiceTest always uses AES" )
+    @Disabled( "uses DES but the encryption key is generated in AbstractAuthenticationServiceTest always uses AES" )
     public void testRequestDesCbcMd5() throws Exception
     {
         // Get the mutable ticket part.
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingPolicyTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingPolicyTest.java
index d409677..67510fb 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingPolicyTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingPolicyTest.java
@@ -45,9 +45,9 @@
 import org.apache.directory.shared.kerberos.flags.TicketFlag;
 import org.apache.directory.shared.kerberos.messages.KrbError;
 import org.apache.directory.shared.kerberos.messages.Ticket;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -67,7 +67,7 @@
     /**
      * Creates a new instance of {@link TicketGrantingPolicyTest}.
      */
-    @Before
+    @BeforeEach
     public void setUp() throws IOException
     {
         kdcServer = new KdcServer();
@@ -89,7 +89,7 @@
     /**
      * Shutdown the Kerberos server
      */
-    @After
+    @AfterEach
     public void shutDown()
     {
         kdcServer.stop();
diff --git a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingServiceTest.java b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingServiceTest.java
index d780ca2..5578e91 100644
--- a/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingServiceTest.java
+++ b/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingServiceTest.java
@@ -54,10 +54,10 @@
 import org.apache.directory.shared.kerberos.messages.TgsRep;
 import org.apache.directory.shared.kerberos.messages.TgsReq;
 import org.apache.directory.shared.kerberos.messages.Ticket;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 
 public class TicketGrantingServiceTest extends AbstractTicketGrantingServiceTest
@@ -72,7 +72,7 @@
     /**
      * Creates a new instance of {@link TicketGrantingServiceTest}.
      */
-    @Before
+    @BeforeEach
     public void setUp()
     {
         kdcServer = new KdcServer();
@@ -94,7 +94,7 @@
     /**
      * Shutdown the Kerberos server
      */
-    @After
+    @AfterEach
     public void shutDown()
     {
         kdcServer.stop();
@@ -267,7 +267,7 @@
      * @throws Exception
      */
     @Test
-    @Ignore
+    @Disabled
     public void testInappropriateChecksum() throws Exception
     {
         config.setBodyChecksumVerified( true );
@@ -390,7 +390,7 @@
      * 
      * @throws Exception
      */
-    @Ignore( "with the introduction of cross-realm auth this test is invalid" )
+    @Disabled( "with the introduction of cross-realm auth this test is invalid" )
     @Test
     public void testNotUs() throws Exception
     {
diff --git a/server-config/pom.xml b/server-config/pom.xml
index bb236f2..c7bb7bd 100644
--- a/server-config/pom.xml
+++ b/server-config/pom.xml
@@ -71,11 +71,6 @@
       <artifactId>api-util</artifactId>
     </dependency>
     
-    <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
   
   <build>
diff --git a/server-config/src/test/java/org/apache/directory/server/config/ChangePasswordConfigReaderTest.java b/server-config/src/test/java/org/apache/directory/server/config/ChangePasswordConfigReaderTest.java
index 9b6e85c..27f427d 100644
--- a/server-config/src/test/java/org/apache/directory/server/config/ChangePasswordConfigReaderTest.java
+++ b/server-config/src/test/java/org/apache/directory/server/config/ChangePasswordConfigReaderTest.java
@@ -40,22 +40,15 @@
 import org.apache.directory.server.core.api.DnFactory;
 import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition;
 import org.apache.directory.server.core.shared.DefaultDnFactory;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test class for ConfigPartitionReader
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
 public class ChangePasswordConfigReaderTest
 {
     private static File workDir;
@@ -64,7 +57,7 @@
     private static DnFactory dnFactory;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void readConfig() throws Exception
     {
         workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work-"
@@ -103,7 +96,7 @@
     }
 
 
-    @AfterClass
+    @AfterAll
     public static void cleanup() throws Exception
     {
         FileUtils.deleteDirectory( workDir );
diff --git a/server-config/src/test/java/org/apache/directory/server/config/ConfigPartitionReaderTest.java b/server-config/src/test/java/org/apache/directory/server/config/ConfigPartitionReaderTest.java
index 42cf73f..f4be595 100644
--- a/server-config/src/test/java/org/apache/directory/server/config/ConfigPartitionReaderTest.java
+++ b/server-config/src/test/java/org/apache/directory/server/config/ConfigPartitionReaderTest.java
@@ -40,21 +40,14 @@
 import org.apache.directory.server.core.api.DnFactory;
 import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition;
 import org.apache.directory.server.core.shared.DefaultDnFactory;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test class for ConfigPartitionReader
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
 public class ConfigPartitionReaderTest
 {
     private static SchemaManager schemaManager;
@@ -63,7 +56,7 @@
     private static File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
 
 
-    @BeforeClass
+    @BeforeAll
     public static void readConfig() throws Exception
     {
         File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
diff --git a/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java b/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java
index 824c7be..94a6f53 100644
--- a/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java
+++ b/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java
@@ -47,21 +47,14 @@
 import org.apache.directory.server.core.api.DnFactory;
 import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition;
 import org.apache.directory.server.core.shared.DefaultDnFactory;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test class for ConfigWriter
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
 public class ConfigWriterTest
 {
     private static SchemaManager schemaManager;
@@ -70,7 +63,7 @@
     private static File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
 
 
-    @BeforeClass
+    @BeforeAll
     public static void readConfig() throws Exception
     {
         FileUtils.deleteDirectory( workDir );
diff --git a/server-config/src/test/java/org/apache/directory/server/config/HttpServerConfigReaderTest.java b/server-config/src/test/java/org/apache/directory/server/config/HttpServerConfigReaderTest.java
index a200c6b..df3f226 100644
--- a/server-config/src/test/java/org/apache/directory/server/config/HttpServerConfigReaderTest.java
+++ b/server-config/src/test/java/org/apache/directory/server/config/HttpServerConfigReaderTest.java
@@ -40,21 +40,14 @@
 import org.apache.directory.server.core.api.DnFactory;
 import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition;
 import org.apache.directory.server.core.shared.DefaultDnFactory;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test class for ConfigPartitionReader
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
 public class HttpServerConfigReaderTest
 {
     private static SchemaManager schemaManager;
@@ -63,7 +56,7 @@
     private static File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
 
 
-    @BeforeClass
+    @BeforeAll
     public static void readConfig() throws Exception
     {
         FileUtils.deleteDirectory( workDir );
diff --git a/server-config/src/test/java/org/apache/directory/server/config/KerberosServerConfigReaderTest.java b/server-config/src/test/java/org/apache/directory/server/config/KerberosServerConfigReaderTest.java
index 41d42a2..6112299 100644
--- a/server-config/src/test/java/org/apache/directory/server/config/KerberosServerConfigReaderTest.java
+++ b/server-config/src/test/java/org/apache/directory/server/config/KerberosServerConfigReaderTest.java
@@ -40,21 +40,14 @@
 import org.apache.directory.server.core.api.DnFactory;
 import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition;
 import org.apache.directory.server.core.shared.DefaultDnFactory;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test class for ConfigPartitionReader
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
 public class KerberosServerConfigReaderTest
 {
     private static File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
@@ -63,7 +56,7 @@
     private static DnFactory dnFactory;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void readConfig() throws Exception
     {
         File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
diff --git a/server-config/src/test/java/org/apache/directory/server/config/LdapServerConfigReaderTest.java b/server-config/src/test/java/org/apache/directory/server/config/LdapServerConfigReaderTest.java
index e045079..943bab3 100644
--- a/server-config/src/test/java/org/apache/directory/server/config/LdapServerConfigReaderTest.java
+++ b/server-config/src/test/java/org/apache/directory/server/config/LdapServerConfigReaderTest.java
@@ -40,21 +40,14 @@
 import org.apache.directory.server.core.api.DnFactory;
 import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition;
 import org.apache.directory.server.core.shared.DefaultDnFactory;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test class for ConfigPartitionReader
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
 public class LdapServerConfigReaderTest
 {
     private static File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
@@ -63,7 +56,7 @@
     private static DnFactory dnFactory;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void readConfig() throws Exception
     {
         File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
diff --git a/service-builder/src/test/java/org/apache/directory/server/config/builder/ServiceBuilderTest.java b/service-builder/src/test/java/org/apache/directory/server/config/builder/ServiceBuilderTest.java
index 3bd17d6..3f138ed 100755
--- a/service-builder/src/test/java/org/apache/directory/server/config/builder/ServiceBuilderTest.java
+++ b/service-builder/src/test/java/org/apache/directory/server/config/builder/ServiceBuilderTest.java
@@ -47,8 +47,8 @@
 import org.apache.directory.server.core.api.interceptor.Interceptor;
 import org.apache.directory.server.core.hash.ConfigurableHashingInterceptor;
 import org.apache.directory.server.i18n.I18n;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -60,7 +60,7 @@
 {
     private static SchemaManager schemaManager;
 
-    @BeforeClass
+    @BeforeAll
     public static void initSchemaManager() throws Exception
     {
         File partitionsDirectory = Files.createTempDirectory( "partitions" ).toFile();
diff --git a/service/src/test/java/org/apache/directory/server/UberJarMainTest.java b/service/src/test/java/org/apache/directory/server/UberJarMainTest.java
index 0cb2210..f7cb286 100644
--- a/service/src/test/java/org/apache/directory/server/UberJarMainTest.java
+++ b/service/src/test/java/org/apache/directory/server/UberJarMainTest.java
@@ -53,9 +53,9 @@
 import org.apache.directory.server.constants.ServerDNConstants;
 import org.apache.directory.server.core.api.partition.PartitionNexus;
 import org.apache.directory.server.core.security.CertificateUtil;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import static org.junit.Assert.assertEquals;
 
@@ -78,7 +78,7 @@
 
     private KeyStore keyStore;
 
-    @Before
+    @BeforeEach
     public void create()
     {
         // Getting tmp directory
@@ -136,7 +136,7 @@
     }
 
 
-    @After
+    @AfterEach
     public void delete() throws Exception
     {
         if ( uberjarMain != null )
