You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2019/05/06 04:24:10 UTC

[directory-ldap-api] branch master updated: Migrating LDAP API to Junit 5

This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-ldap-api.git


The following commit(s) were added to refs/heads/master by this push:
     new e8a4e86  Migrating LDAP API to Junit 5
e8a4e86 is described below

commit e8a4e86c28a38e7394b9f986f8ba766ab8067e00
Author: emmanuel lecharny <el...@apache.org>
AuthorDate: Mon May 6 06:23:59 2019 +0200

    Migrating LDAP API to Junit 5
---
 asn1/api/pom.xml                                   |  13 +-
 .../directory/api/asn1/util/Asn1Buffer2Test.java   |  10 +-
 .../directory/api/asn1/util/Asn1BufferTest.java    |   8 +-
 .../directory/api/asn1/util/BitStringTest.java     |  19 +-
 .../apache/directory/api/asn1/util/OidTest.java    |  10 +-
 asn1/ber/pom.xml                                   |  10 +-
 .../directory/api/asn1/ber/tlv/LengthTest.java     |  37 ++--
 .../directory/api/asn1/ber/tlv/PrimitivesTest.java |  16 +-
 .../directory/api/asn1/ber/tlv/ValueTest.java      |  16 +-
 dsml/parser/pom.xml                                |  17 +-
 .../directory/api/dsmlv2/AbstractResponseTest.java |   6 +-
 .../apache/directory/api/dsmlv2/AbstractTest.java  |   8 +-
 .../org/apache/directory/api/dsmlv2/AllTests.java  |  10 +-
 .../directory/api/dsmlv2/ParserUtilsTest.java      |  17 +-
 .../dsmlv2/abandonRequest/AbandonRequestTest.java  |  22 +--
 .../api/dsmlv2/addRequest/AddRequestTest.java      |  22 +--
 .../api/dsmlv2/addResponse/AddResponseTest.java    |  24 +--
 .../api/dsmlv2/authRequest/AuthRequestTest.java    |  22 +--
 .../api/dsmlv2/authResponse/AuthResponseTest.java  |  24 +--
 .../api/dsmlv2/batchRequest/BatchRequestTest.java  |  18 +-
 .../dsmlv2/batchResponse/BatchResponseTest.java    |  18 +-
 .../dsmlv2/compareRequest/CompareRequestTest.java  |  24 +--
 .../compareResponse/CompareResponseTest.java       |  24 +--
 .../api/dsmlv2/delRequest/DelRequestTest.java      |  22 +--
 .../api/dsmlv2/delResponse/DelResponseTest.java    |  24 +--
 .../dsmlv2/errorResponse/ErrorResponseTest.java    |  18 +-
 .../extendedRequest/ExtendedRequestTest.java       |  24 +--
 .../extendedResponse/ExtendedResponseTest.java     |  24 +--
 .../dsmlv2/modDNRequest/ModifyDNRequestTest.java   |  22 +--
 .../dsmlv2/modDNResponse/ModifyDNResponseTest.java |  24 +--
 .../dsmlv2/modifyRequest/ModifyRequestTest.java    |  22 +--
 .../dsmlv2/modifyResponse/ModifyResponseTest.java  |  24 +--
 .../dsmlv2/searchRequest/SearchRequestTest.java    |  24 +--
 .../dsmlv2/searchResponse/SearchResponseTest.java  |  18 +-
 .../searchResultDone/SearchResultDoneTest.java     |  24 +--
 .../searchResultEntry/SearchResultEntryTest.java   |  21 +--
 .../SearchResultReferenceTest.java                 |  22 +--
 .../api/dsmlv2/soap/SoapDsmlParsingTest.java       |  16 +-
 integ-osgi/pom.xml                                 |  16 +-
 integ/pom.xml                                      |  10 +-
 .../directory/api/ldap/aci/ACIItemCheckerTest.java |  18 +-
 .../directory/api/ldap/aci/ACIItemParserTest.java  |  22 +--
 .../codec/api/StandaloneLdapCodecServiceTest.java  |  10 +-
 .../SchemaAwareAttributeSerializationTest.java     |   9 +-
 .../api/ldap/entry/SchemaAwareAttributeTest.java   |  34 ++--
 .../entry/SchemaAwareEntrySerializationTest.java   |  11 +-
 .../api/ldap/entry/SchemaAwareEntryTest.java       |  42 ++---
 .../SchemaAwareModificationSerializationTest.java  |  20 +-
 .../entry/SchemaAwareValueSerializationTest.java   |  18 +-
 .../ldap/model/ldif/SchemaAwareLdifReaderTest.java |  55 +++---
 .../api/ldap/model/name/AvaSerializationTest.java  |  26 ++-
 .../directory/api/ldap/model/name/AvaTest.java     |  22 +--
 .../directory/api/ldap/model/name/DnTest.java      |  56 +++---
 .../api/ldap/model/name/FastParserRdnTest.java     |  17 +-
 .../api/ldap/model/name/MultiThreadedTest.java     |  25 +--
 .../directory/api/ldap/model/name/RdnTest.java     |  25 +--
 .../name/SchemaAwareAvaSerializationTest.java      |  39 ++--
 .../model/name/SchemaAwareDnSerializationTest.java |  12 +-
 .../name/SchemaAwareRdnSerializationTest.java      |  24 +--
 .../api/ldap/model/name/SchemaAwareRdnTest.java    |  28 ++-
 .../syntaxCheckers/ACIItemSyntaxCheckerTest.java   |  22 +--
 .../SubtreeSpecificationSyntaxCheckerTest.java     |  22 +--
 .../subtree/SubtreeSpecificationParserTest.java    |  26 ++-
 ldap/client/api/pom.xml                            |  16 +-
 ldap/codec/core/pom.xml                            |  10 +-
 .../directory/api/ldap/codec/LdapControlTest.java  |  39 ++--
 .../directory/api/ldap/codec/LdapDecoderTest.java  |  42 +++--
 .../directory/api/ldap/codec/LdapMessageTest.java  |  48 +++--
 .../directory/api/ldap/codec/LdapResultTest.java   |  55 +++---
 .../api/ldap/codec/abandon/AbandonRequestTest.java |  34 ++--
 .../api/ldap/codec/add/AddRequestTest.java         | 147 ++++++++-------
 .../api/ldap/codec/add/AddResponseTest.java        |  25 +--
 .../api/ldap/codec/bind/BindRequestPerfTest.java   |  16 +-
 .../api/ldap/codec/bind/BindRequestTest.java       | 102 ++++++----
 .../api/ldap/codec/bind/BindResponseTest.java      |  28 +--
 .../api/ldap/codec/compare/CompareRequestTest.java | 108 ++++++-----
 .../ldap/codec/compare/CompareResponseTest.java    |  25 +--
 .../proxiedauthz/ProxiedAuthzControlTest.java      |  32 ++--
 .../search/entryChange/EntryChangeControlTest.java |  43 +++--
 .../search/pagedSearch/PagedSearchControlTest.java |  51 +++--
 .../persistentSearch/PSearchControlTest.java       |  67 ++++---
 .../search/subentries/SubEntryControlTest.java     |  33 ++--
 .../controls/sort/SortRequestControlTest.java      |  24 ++-
 .../controls/sort/SortResponseControlTest.java     |  20 +-
 .../api/ldap/codec/del/DelRequestTest.java         |  56 +++---
 .../api/ldap/codec/del/DelResponseTest.java        |  26 +--
 .../intermediate/IntermediateResponseTest.java     |  40 ++--
 .../api/ldap/codec/modify/ModifyRequestTest.java   | 155 +++++++++------
 .../api/ldap/codec/modify/ModifyResponseTest.java  |  26 +--
 .../ldap/codec/modifyDn/ModifyDNRequestTest.java   | 140 ++++++++------
 .../ldap/codec/modifyDn/ModifyDNResponseTest.java  |  26 +--
 .../ldap/codec/osgi/AbstractCodecServiceTest.java  |  21 +--
 .../SearchRequestMatchingRuleAssertionTest.java    |  84 +++++----
 .../codec/search/SearchRequestSubstringTest.java   | 109 +++++++----
 .../api/ldap/codec/search/SearchRequestTest.java   | 210 ++++++++++++++-------
 .../ldap/codec/search/SearchResultDoneTest.java    |  26 +--
 .../ldap/codec/search/SearchResultEntryTest.java   |  68 ++++---
 .../codec/search/SearchResultReferenceTest.java    |  30 +--
 .../api/ldap/codec/unbind/UnBindRequestTest.java   |  25 +--
 ldap/codec/standalone/pom.xml                      |  10 +-
 ldap/extras/aci/pom.xml                            |  10 +-
 .../aci/ProtectedItem_AllAttributeValuesTest.java  |  20 +-
 .../ldap/aci/ProtectedItem_AttributeTypeTest.java  |  20 +-
 .../ldap/aci/ProtectedItem_AttributeValueTest.java |  20 +-
 .../api/ldap/aci/ProtectedItem_ClassesTest.java    |  20 +-
 .../api/ldap/aci/ProtectedItem_MaxImmSubTest.java  |  20 +-
 .../ldap/aci/ProtectedItem_MaxValueCountTest.java  |  20 +-
 .../ldap/aci/ProtectedItem_RangeOfValuesTest.java  |  20 +-
 .../ldap/aci/ProtectedItem_RestrictedByTest.java   |  20 +-
 .../api/ldap/aci/ProtectedItem_SelfValueTest.java  |  20 +-
 .../directory/api/ldap/aci/UserClass_NameTest.java |  25 ++-
 .../api/ldap/aci/UserClass_SubtreeTest.java        |  21 +--
 .../aci/protectedItem/AttributeValueItemTest.java  |  20 +-
 .../ldap/aci/protectedItem/ClassesItemTest.java    |  20 +-
 .../ldap/aci/protectedItem/MaxImmSubItemTest.java  |  20 +-
 .../aci/protectedItem/MaxValueCountItemTest.java   |  20 +-
 .../aci/protectedItem/RestrictedByItemTest.java    |  20 +-
 ldap/extras/codec-api/pom.xml                      |  10 +-
 ldap/extras/codec/pom.xml                          |  17 +-
 .../api/ldap/extras/AbstractCodecServiceTest.java  |  24 +--
 .../controls/ad/AdDirSyncRequestControlTest.java   |  48 +++--
 .../controls/ad/AdDirSyncResponseControlTest.java  |  57 +++---
 .../controls/ad/AdPolicyHintsControlTest.java      |  37 ++--
 .../ppolicy/PasswordPolicyResponseTest.java        |  16 +-
 .../syncrepl_impl/SyncDoneValueControlTest.java    |  26 ++-
 .../syncrepl_impl/SyncRequestValueControlTest.java |  39 ++--
 .../syncrepl_impl/SyncStateValueControlTest.java   |  47 +++--
 .../extras/controls/vlv/VLVRequestControlTest.java |  67 +++++--
 .../controls/vlv/VLVResponseControlTest.java       |  47 +++--
 .../ldap/extras/extended/ExtendedRequestTest.java  |  44 +++--
 .../ldap/extras/extended/ExtendedResponseTest.java |  44 +++--
 .../ads_impl/cancel/CancelRequestTest.java         |  53 ++++--
 .../certGeneration/CertGenerationRequestTest.java  |  77 +++++---
 .../endTransaction/EndTransactionRequestTest.java  |  41 ++--
 .../endTransaction/EndTransactionResponseTest.java |  39 ++--
 .../GracefulDisconnectResponseTest.java            |  69 ++++---
 .../gracefulShutdown/GracefulShutdownTest.java     |  53 ++++--
 .../pwdModify/PasswordModifyRequestTest.java       |  24 +--
 .../pwdModify/PasswordModifyResponseTest.java      |  24 +--
 .../storedProcedure/StoredProcedureTest.java       |  20 +-
 .../ads_impl/whoAmI/WhoAmIResponseTest.java        |  24 +--
 .../syncrepl/SyncInfoValueControlTest.java         |  73 ++++---
 ldap/extras/pom.xml                                |   2 +-
 ldap/extras/sp/pom.xml                             |  10 +-
 ldap/extras/trigger/pom.xml                        |  10 +-
 .../trigger/TriggerSpecificationParserTest.java    |  17 +-
 ldap/extras/util/pom.xml                           |  10 +-
 .../directory/api/ldap/util/tree/TestDnNode.java   |  54 ++++--
 ldap/model/pom.xml                                 |  18 +-
 .../api/ldap/model/csn/CsnFactoryTest.java         |  13 +-
 .../directory/api/ldap/model/csn/CsnTest.java      |  17 +-
 .../api/ldap/model/cursor/ListCursorTest.java      |  19 +-
 .../model/entry/AttributeSerializationTest.java    |  13 +-
 .../api/ldap/model/entry/AttributeTest.java        |  35 ++--
 .../api/ldap/model/entry/AttributeUtilsTest.java   |  22 +--
 .../model/entry/BinaryValueAttributeTypeTest.java  |  26 ++-
 .../api/ldap/model/entry/BinaryValueTest.java      |  26 ++-
 .../api/ldap/model/entry/DnValueTest.java          |  16 +-
 .../ldap/model/entry/EntrySerializationTest.java   |  15 +-
 .../directory/api/ldap/model/entry/EntryTest.java  |  14 +-
 .../api/ldap/model/entry/ModificationTest.java     |  14 +-
 .../model/entry/StringValueAttributeTypeTest.java  |  60 +++---
 .../api/ldap/model/entry/StringValueTest.java      |  26 ++-
 .../ldap/model/entry/ValueSerializationTest.java   |  23 +--
 .../LdapTlsHandshakeExceptionClassifierTest.java   |   6 +-
 .../exception/LdapTlsHandshakeExceptionTest.java   |   8 +-
 .../model/filter/BranchNormalizedVisitorTest.java  |  17 +-
 .../api/ldap/model/filter/FilterCloneTest.java     |  19 +-
 .../api/ldap/model/filter/FilterEncoderTest.java   |  33 +++-
 .../ldap/model/filter/FilterNodeEqualityTest.java  |  58 +++---
 .../api/ldap/model/filter/FilterParserTest.java    |  39 ++--
 .../api/ldap/model/filter/FilterToStringTest.java  |  13 +-
 .../api/ldap/model/filter/SubstringNodeTest.java   |  14 +-
 .../api/ldap/model/filter/UndefinedNodeTest.java   |  18 +-
 .../ldap/model/ldif/LdifAttributesReaderTest.java  |  58 +++---
 .../model/ldif/LdifControlSerializationTest.java   |  16 +-
 .../model/ldif/LdifEntrySerializationTest.java     |  13 +-
 .../api/ldap/model/ldif/LdifEntryTest.java         |  78 +++++---
 .../api/ldap/model/ldif/LdifReaderTest.java        |  30 +--
 .../api/ldap/model/ldif/LdifRevertorTest.java      |  21 +--
 .../api/ldap/model/ldif/LdifUtilsTest.java         |  23 +--
 .../ldap/model/message/AbstractMessageTest.java    |  16 +-
 .../model/message/AbstractResultResponseTest.java  |  16 +-
 .../api/ldap/model/message/AddRequestImplTest.java |  15 +-
 .../ldap/model/message/BindRequestImplTest.java    |  15 +-
 .../ldap/model/message/BindResponseImplTest.java   |  34 ++--
 .../ldap/model/message/CompareRequestImplTest.java |  15 +-
 .../ldap/model/message/DeleteRequestImplTest.java  |  15 +-
 .../model/message/ExtendedRequestImplTest.java     |  16 +-
 .../api/ldap/model/message/LdapResultImplTest.java |  49 +++--
 .../model/message/ModifyDnRequestImplTest.java     |  16 +-
 .../ldap/model/message/ModifyRequestImplTest.java  |  15 +-
 .../model/message/OpaqueExtendedResponseTest.java  |  21 +--
 .../api/ldap/model/message/ReferralImplTest.java   |  41 ++--
 .../model/message/SearchResponseDoneImplTest.java  |  15 +-
 .../message/SearchResponseReferenceImplTest.java   |  29 ++-
 .../model/message/SearchResultEntryImplTest.java   |  25 ++-
 .../model/message/controls/OpaqueControlTest.java  |   6 +-
 .../api/ldap/model/name/AvaSerializationTest.java  |  21 +--
 .../directory/api/ldap/model/name/AvaTest.java     |  19 +-
 .../model/name/DnParserDIRSERVER_584_Test.java     |  19 +-
 .../api/ldap/model/name/DnParserTest.java          |  57 +++---
 .../api/ldap/model/name/DnSerializationTest.java   |  12 +-
 .../api/ldap/model/name/FastDnParserTest.java      | 184 ++++++++++--------
 .../api/ldap/model/name/FastRdnParserTest.java     |  19 +-
 .../api/ldap/model/name/RdnSerializationTest.java  |  13 +-
 .../directory/api/ldap/model/name/RdnTest.java     |  29 +--
 .../api/ldap/model/password/PasswordUtilTest.java  |  15 +-
 .../api/ldap/model/schema/AttributeTypeTest.java   |  20 +-
 .../api/ldap/model/schema/DitContentRuleTest.java  |  20 +-
 .../ldap/model/schema/DitStructureRuleTest.java    |  20 +-
 .../api/ldap/model/schema/LdapSyntaxTest.java      |  20 +-
 .../api/ldap/model/schema/MatchingRuleTest.java    |  20 +-
 .../api/ldap/model/schema/MatchingRuleUseTest.java |  20 +-
 .../api/ldap/model/schema/NameFormTest.java        |  19 +-
 .../api/ldap/model/schema/ObjectClassTest.java     |  24 +--
 .../ldap/model/schema/ObjectClassTypeEnumTest.java |   4 +-
 .../api/ldap/model/schema/PrepareStringTest.java   |   8 +-
 .../model/schema/SchemaObjectRendererTest.java     |  13 +-
 .../ldap/model/schema/SchemaObjectSorterTest.java  |  29 ++-
 .../api/ldap/model/schema/SchemaUtilsTest.java     |  17 +-
 .../api/ldap/model/schema/SyntaxCheckerTest.java   |  19 +-
 .../api/ldap/model/schema/UsageEnumTest.java       |  13 +-
 .../comparators/BitStringComparatorTest.java       |  17 +-
 .../schema/comparators/BooleanComparatorTest.java  |  17 +-
 .../comparators/ByteArrayComparatorTest.java       |  13 +-
 .../schema/comparators/CsnComparatorTest.java      |  17 +-
 .../schema/comparators/CsnSidComparatorTest.java   |  17 +-
 .../schema/comparators/IntegerComparatorTest.java  |  17 +-
 ...jectIdentifierFirstComponentComparatorTest.java |  19 +-
 .../comparators/TelephoneNumberComparatorTest.java |  19 +-
 .../schema/comparators/WordComparatorTest.java     |  17 +-
 .../schema/normalizers/BooleanNormalizerTest.java  |  15 +-
 .../schema/normalizers/DeepTrimNormalizerTest.java |  13 +-
 .../normalizers/DeepTrimToLowerNormalizerTest.java |  19 +-
 .../schema/normalizers/NumericNormalizerTest.java  |  13 +-
 .../normalizers/TelephoneNumberNormalizerTest.java |  13 +-
 .../parsers/FastOpenLdapSchemaParserTest.java      |  27 ++-
 .../schema/parsers/OpenLdapSchemaParserTest.java   |  27 ++-
 .../registries/AttributeTypeRegistryTest.java      |  23 +--
 .../model/schema/registries/OidRegistryTest.java   |  11 +-
 .../model/schema/registries/RegistriesTest.java    |  13 +-
 .../syntaxes/AccessPointSyntaxCheckerTest.java     |  15 +-
 .../AttributeTypeDescriptionSyntaxCheckerTest.java |  16 +-
 .../schema/syntaxes/AudioSyntaxCheckerTest.java    |  15 +-
 .../schema/syntaxes/BinarySyntaxCheckerTest.java   |  15 +-
 .../syntaxes/BitStringSyntaxCheckerTest.java       |  11 +-
 .../schema/syntaxes/BooleanSyntaxCheckerTest.java  |  15 +-
 .../syntaxes/CertificateListSyntaxCheckerTest.java |  15 +-
 .../syntaxes/CertificatePairSyntaxCheckerTest.java |  15 +-
 .../syntaxes/CertificateSyntaxCheckerTest.java     |  15 +-
 .../schema/syntaxes/CountrySyntaxCheckerTest.java  |  15 +-
 .../schema/syntaxes/CsnSidSyntaxCheckerTest.java   |  16 +-
 .../schema/syntaxes/CsnSyntaxCheckerTest.java      |  16 +-
 .../DataQualitySyntaxSyntaxCheckerTest.java        |  16 +-
 .../syntaxes/DeliveryMethodSyntaxCheckerTest.java  |  16 +-
 .../syntaxes/DirectoryStringSyntaxCheckerTest.java |  16 +-
 ...DitContentRuleDescriptionSyntaxCheckerTest.java |  16 +-
 ...tStructureRuleDescriptionSyntaxCheckerTest.java |  15 +-
 .../DlSubmitPermissionSyntaxCheckerTest.java       |  15 +-
 .../model/schema/syntaxes/DnSyntaxCheckerTest.java |  16 +-
 .../DsaQualitySyntaxSyntaxCheckerTest.java         |  16 +-
 .../schema/syntaxes/DseTypeSyntaxCheckerTest.java  |  16 +-
 .../syntaxes/EnhancedGuideSyntaxCheckerTest.java   |  16 +-
 .../FacsimileTelephoneNumberSyntaxCheckerTest.java |  16 +-
 .../schema/syntaxes/FaxSyntaxCheckerTest.java      |  16 +-
 .../syntaxes/GeneralizedTimeSyntaxCheckerTest.java |  16 +-
 .../schema/syntaxes/GuideSyntaxCheckerTest.java    |  16 +-
 .../syntaxes/Ia5StringSyntaxCheckerTest.java       |  16 +-
 .../schema/syntaxes/IntegerSyntaxCheckerTest.java  |  16 +-
 .../schema/syntaxes/JavaByteSyntaxCheckerTest.java |  16 +-
 .../syntaxes/JavaIntegerSyntaxCheckerTest.java     |  16 +-
 .../schema/syntaxes/JavaLongSyntaxCheckerTest.java |  16 +-
 .../syntaxes/JavaShortSyntaxCheckerTest.java       |  16 +-
 .../schema/syntaxes/JpegSyntaxCheckerTest.java     |  16 +-
 .../LdapSyntaxDescriptionSyntaxCheckerTest.java    |  16 +-
 .../syntaxes/MailPreferenceSyntaxCheckerTest.java  |  16 +-
 ...asterAndShadowAccessPointSyntaxCheckerTest.java |  16 +-
 .../MatchingRuleDescriptionSyntaxCheckerTest.java  |  16 +-
 ...atchingRuleUseDescriptionSyntaxCheckerTest.java |  16 +-
 .../syntaxes/MhsOrAddressSyntaxCheckerTest.java    |  16 +-
 .../NameAndOptionalUIDSyntaxCheckerTest.java       |  15 +-
 .../NameFormDescriptionSyntaxCheckerTest.java      |  16 +-
 .../syntaxes/NameOrNumericIdSyntaxCheckerTest.java |  16 +-
 .../syntaxes/NumericStringSyntaxCheckerTest.java   |  16 +-
 .../ObjectClassDescriptionSyntaxCheckerTest.java   |  16 +-
 .../syntaxes/ObjectClassTypeSyntaxCheckerTest.java |  16 +-
 .../syntaxes/ObjectNameSyntaxCheckerTest.java      |  16 +-
 .../syntaxes/OctetStringSyntaxCheckerTest.java     |  14 +-
 .../syntaxes/OtherMailboxSyntaxCheckerTest.java    |  16 +-
 .../syntaxes/PostalAddressSyntaxCheckerTest.java   |  16 +-
 .../PresentationAddressSyntaxCheckerTest.java      |  16 +-
 .../syntaxes/PrintableStringSyntaxCheckerTest.java |  15 +-
 .../ProtocolInformationSyntaxCheckerTest.java      |  15 +-
 .../SubstringAssertionSyntaxCheckerTest.java       |  16 +-
 .../SupplierAndConsumerSyntaxCheckerTest.java      |  16 +-
 .../SupplierInformationSyntaxCheckerTest.java      |  16 +-
 .../SupplierOrConsumerSyntaxCheckerTest.java       |  16 +-
 .../SupportedAlgorithmSyntaxCheckerTest.java       |  16 +-
 .../syntaxes/TelephoneNumberSyntaxCheckerTest.java |  18 +-
 ...TeletexTerminalIdentifierSyntaxCheckerTest.java |  16 +-
 .../syntaxes/TelexNumberSyntaxCheckerTest.java     |  16 +-
 .../schema/syntaxes/UtcTimeSyntaxCheckerTest.java  |  16 +-
 .../schema/syntaxes/UuidSyntaxCheckerTest.java     |  15 +-
 ...buteTypeDescriptionSchemaParserRelaxedTest.java |  31 ++-
 ...ibuteTypeDescriptionSchemaParserStrictTest.java |  31 ++-
 .../ComparatorDescriptionSchemaParserTest.java     |  25 ++-
 ...tentRuleDescriptionSchemaParserRelaxedTest.java |  27 ++-
 .../DitContentRuleDescriptionSchemaParserTest.java |  27 ++-
 ...tureRuleDescriptionSchemaParserRelaxedTest.java |  26 ++-
 ...ctureRuleDescriptionSchemaParserStrictTest.java |  27 ++-
 .../LdapSyntaxDescriptionSchemaParserTest.java     |  23 +--
 .../MatchingRuleDescriptionSchemaParserTest.java   |  31 ++-
 ...MatchingRuleUseDescriptionSchemaParserTest.java |  31 ++-
 .../NameFormDescriptionSchemaParserTest.java       |  27 ++-
 .../NormalizerDescriptionSchemaParserTest.java     |  23 +--
 ...ectClassDescriptionSchemaParserRelaxedTest.java |  29 ++-
 ...jectClassDescriptionSchemaParserStrictTest.java |  29 ++-
 .../syntaxes/parser/SchemaParserTestUtils.java     |  10 +-
 .../SyntaxCheckerDescriptionSchemaParserTest.java  |  23 +--
 .../directory/api/ldap/model/url/LdapUrlTest.java  | 102 ++++++----
 ldap/schema/converter/pom.xml                      |  10 +-
 .../ldap/schema/converter/TestSchemaToLdif.java    |  27 +--
 ldap/schema/data/pom.xml                           |  17 +-
 .../schema/extractor/SchemaLdifExtractorTest.java  |  20 +-
 .../schema/loader/JarLdifSchemaLoaderTest.java     |  15 +-
 .../ldap/schema/loader/LdifSchemaLoaderTest.java   |  55 +++---
 .../api/ldap/schema/loader/MatchingRuleTest.java   |  65 +++----
 .../ldap/schema/loader/SchemaManagerAddTest.java   |  30 ++-
 .../ldap/schema/loader/SchemaManagerDelTest.java   |  30 ++-
 .../loader/SchemaManagerEnableDisableLoadTest.java |  36 ++--
 .../ldap/schema/loader/SchemaManagerLoadTest.java  |  28 ++-
 .../loader/SchemaManagerLoadWithDepsTest.java      |  30 ++-
 .../manager/impl/DefaultSchemaManagerTest.java     |   2 +-
 pom.xml                                            |  51 +++--
 util/pom.xml                                       |  16 +-
 .../apache/directory/api/util/ByteBufferTest.java  |  12 +-
 .../apache/directory/api/util/DateUtilTest.java    |   4 +-
 .../apache/directory/api/util/FileUtilsTest.java   |  37 ++--
 .../directory/api/util/GeneralizedTimeTest.java    |  11 +-
 .../org/apache/directory/api/util/HexTest.java     |  11 +-
 .../apache/directory/api/util/MethodUtilsTest.java |  11 +-
 .../org/apache/directory/api/util/StringsTest.java |  15 +-
 .../org/apache/directory/api/util/UnicodeTest.java |  44 ++---
 .../api/util/exception/MultiExceptionTest.java     |  13 +-
 .../util/exception/RuntimeMultiExceptionTest.java  |  13 +-
 346 files changed, 4566 insertions(+), 4502 deletions(-)

diff --git a/asn1/api/pom.xml b/asn1/api/pom.xml
index 2175a92..f8fd707 100644
--- a/asn1/api/pom.xml
+++ b/asn1/api/pom.xml
@@ -33,20 +33,29 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
       <scope>test</scope>
     </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
+      <scope>test</scope>
+    </dependency>
+
     <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <scope>test</scope>
     </dependency>
+
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <scope>test</scope>
     </dependency>
+
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
diff --git a/asn1/api/src/test/java/org/apache/directory/api/asn1/util/Asn1Buffer2Test.java b/asn1/api/src/test/java/org/apache/directory/api/asn1/util/Asn1Buffer2Test.java
index 38e9baa..54f8504 100644
--- a/asn1/api/src/test/java/org/apache/directory/api/asn1/util/Asn1Buffer2Test.java
+++ b/asn1/api/src/test/java/org/apache/directory/api/asn1/util/Asn1Buffer2Test.java
@@ -19,12 +19,12 @@
  */
 package org.apache.directory.api.asn1.util;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.nio.ByteBuffer;
 
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test for the Asn1Buffer class
@@ -34,7 +34,7 @@ import org.junit.Test;
 public class Asn1Buffer2Test
 {
     @Test
-    @Ignore
+    @Disabled
     public void testPutSmallBytes()
     {
         Asn1Buffer buffer = new Asn1Buffer();
@@ -96,7 +96,7 @@ public class Asn1Buffer2Test
     }
 
     @Test
-    @Ignore
+    @Disabled
     public void testBytesPerf()
     {
         long t0 = System.currentTimeMillis();
diff --git a/asn1/api/src/test/java/org/apache/directory/api/asn1/util/Asn1BufferTest.java b/asn1/api/src/test/java/org/apache/directory/api/asn1/util/Asn1BufferTest.java
index 47eebd9..9ecab4d 100644
--- a/asn1/api/src/test/java/org/apache/directory/api/asn1/util/Asn1BufferTest.java
+++ b/asn1/api/src/test/java/org/apache/directory/api/asn1/util/Asn1BufferTest.java
@@ -19,12 +19,12 @@
  */
 package org.apache.directory.api.asn1.util;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.nio.ByteBuffer;
 
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test for the Asn1Buffer class
@@ -95,7 +95,7 @@ public class Asn1BufferTest
     }
 
     @Test
-    @Ignore
+    @Disabled
     public void testBytesPerf()
     {
         long t0 = System.currentTimeMillis();
diff --git a/asn1/api/src/test/java/org/apache/directory/api/asn1/util/BitStringTest.java b/asn1/api/src/test/java/org/apache/directory/api/asn1/util/BitStringTest.java
index c49fc4e..4db8535 100644
--- a/asn1/api/src/test/java/org/apache/directory/api/asn1/util/BitStringTest.java
+++ b/asn1/api/src/test/java/org/apache/directory/api/asn1/util/BitStringTest.java
@@ -20,16 +20,14 @@
 package org.apache.directory.api.asn1.util;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import org.apache.directory.api.asn1.DecoderException;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -37,8 +35,7 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class BitStringTest
 {
     /**
@@ -59,7 +56,7 @@ public class BitStringTest
         }
         catch ( IndexOutOfBoundsException ioobe )
         {
-            assertTrue( true );
+            assertTrue(  true );
         }
     }
 
diff --git a/asn1/api/src/test/java/org/apache/directory/api/asn1/util/OidTest.java b/asn1/api/src/test/java/org/apache/directory/api/asn1/util/OidTest.java
index b082885..f98393b 100644
--- a/asn1/api/src/test/java/org/apache/directory/api/asn1/util/OidTest.java
+++ b/asn1/api/src/test/java/org/apache/directory/api/asn1/util/OidTest.java
@@ -20,15 +20,15 @@
 package org.apache.directory.api.asn1.util;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Arrays;
 
 import org.apache.directory.api.asn1.DecoderException;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 
 /**
diff --git a/asn1/ber/pom.xml b/asn1/ber/pom.xml
index 482cbd2..263ec7e 100644
--- a/asn1/ber/pom.xml
+++ b/asn1/ber/pom.xml
@@ -33,8 +33,14 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
 
diff --git a/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/LengthTest.java b/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/LengthTest.java
index 320b0e6..83fc488 100644
--- a/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/LengthTest.java
+++ b/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/LengthTest.java
@@ -20,16 +20,14 @@
 package org.apache.directory.api.asn1.ber.tlv;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.Arrays;
 
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -37,8 +35,7 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class LengthTest
 {
 
@@ -48,17 +45,17 @@ public class LengthTest
     @Test
     public void testLengthGetNbBytes()
     {
-        assertEquals( "1 expected", 1, TLV.getNbBytes( 0 ) );
-        assertEquals( "1 expected", 1, TLV.getNbBytes( 1 ) );
-        assertEquals( "1 expected", 1, TLV.getNbBytes( 127 ) );
-        assertEquals( "2 expected", 2, TLV.getNbBytes( 128 ) );
-        assertEquals( "2 expected", 2, TLV.getNbBytes( 255 ) );
-        assertEquals( "3 expected", 3, TLV.getNbBytes( 256 ) );
-        assertEquals( "3 expected", 3, TLV.getNbBytes( 65535 ) );
-        assertEquals( "4 expected", 4, TLV.getNbBytes( 65536 ) );
-        assertEquals( "4 expected", 4, TLV.getNbBytes( 16777215 ) );
-        assertEquals( "5 expected", 5, TLV.getNbBytes( 16777216 ) );
-        assertEquals( "5 expected", 5, TLV.getNbBytes( 0xFFFFFFFF ) );
+        assertEquals( 1, TLV.getNbBytes( 0 ), "1 expected" );
+        assertEquals( 1, TLV.getNbBytes( 1 ), "1 expected" );
+        assertEquals( 1, TLV.getNbBytes( 127 ), "1 expected" );
+        assertEquals( 2, TLV.getNbBytes( 128 ), "2 expected" );
+        assertEquals( 2, TLV.getNbBytes( 255 ), "2 expected" );
+        assertEquals( 3, TLV.getNbBytes( 256 ), "3 expected" );
+        assertEquals( 3, TLV.getNbBytes( 65535 ), "3 expected" );
+        assertEquals( 4, TLV.getNbBytes( 65536 ), "4 expected" );
+        assertEquals( 4, TLV.getNbBytes( 16777215 ), "4 expected" );
+        assertEquals( 5, TLV.getNbBytes( 16777216 ), "5 expected" );
+        assertEquals( 5, TLV.getNbBytes( 0xFFFFFFFF ), "5 expected" );
     }
 
 
diff --git a/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/PrimitivesTest.java b/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/PrimitivesTest.java
index c515439..a41edfc 100644
--- a/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/PrimitivesTest.java
+++ b/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/PrimitivesTest.java
@@ -20,23 +20,19 @@
 package org.apache.directory.api.asn1.ber.tlv;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
 
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the Primitives
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class PrimitivesTest
 {
     /**
diff --git a/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/ValueTest.java b/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/ValueTest.java
index 7b860e5..2d2e8c7 100644
--- a/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/ValueTest.java
+++ b/asn1/ber/src/test/java/org/apache/directory/api/asn1/ber/tlv/ValueTest.java
@@ -20,9 +20,9 @@
 package org.apache.directory.api.asn1.ber.tlv;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.math.BigInteger;
 import java.nio.ByteBuffer;
@@ -31,11 +31,10 @@ import java.util.Arrays;
 import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.util.Asn1StringUtils;
 import org.apache.directory.api.asn1.util.BitString;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 
@@ -44,8 +43,7 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class ValueTest
 {
 
diff --git a/dsml/parser/pom.xml b/dsml/parser/pom.xml
index 4279156..6c69eed 100644
--- a/dsml/parser/pom.xml
+++ b/dsml/parser/pom.xml
@@ -31,8 +31,14 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
     
@@ -81,6 +87,13 @@
               osgi-cache
             </org.osgi.framework.storage>
           </systemPropertyVariables>
+          <parallel>all</parallel>
+          <threadCount>10</threadCount>
+          <properties>
+            <configurationParameters>
+              junit.jupiter.execution.parallel.enabled=true
+            </configurationParameters>
+          </properties>
         </configuration>
       </plugin>
       <plugin>
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractResponseTest.java
index d8abb43..096605b 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractResponseTest.java
@@ -21,8 +21,8 @@
 package org.apache.directory.api.dsmlv2;
 
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -54,7 +54,7 @@ public abstract class AbstractResponseTest extends AbstractTest
         }
         catch ( XmlPullParserException e )
         {
-            assertTrue( e.getMessage(), true );
+            assertTrue( true, e.getMessage() );
             return;
         }
         catch ( Exception e )
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractTest.java
index 49dad1f..453547a 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AbstractTest.java
@@ -21,8 +21,8 @@
 package org.apache.directory.api.dsmlv2;
 
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import org.apache.directory.api.dsmlv2.request.Dsmlv2Grammar;
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
@@ -75,12 +75,12 @@ public abstract class AbstractTest
         }
         catch ( XmlPullParserException e )
         {
-            assertTrue( e.getMessage(), true );
+            assertTrue( true, e.getMessage() );
             return;
         }
         catch ( IllegalStateException e )
         {
-            assertTrue( e.getMessage(), true );
+            assertTrue( true, e.getMessage() );
             return;
         }
         catch ( Exception e )
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AllTests.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AllTests.java
index ce40700..24332aa 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AllTests.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/AllTests.java
@@ -44,19 +44,17 @@ import org.apache.directory.api.dsmlv2.searchResponse.SearchResponseTest;
 import org.apache.directory.api.dsmlv2.searchResponse.searchResultDone.SearchResultDoneTest;
 import org.apache.directory.api.dsmlv2.searchResponse.searchResultEntry.SearchResultEntryTest;
 import org.apache.directory.api.dsmlv2.searchResponse.searchResultReference.SearchResultReferenceTest;
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.platform.suite.api.SelectClasses;
 import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-import com.mycila.junit.concurrent.ConcurrentSuite;
-
 
 /**
  * This is the complete Test Suite for DSMLv2 Parser (Request and Response)
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentSuite.class)
-@Suite.SuiteClasses(
+@RunWith(JUnitPlatform.class)
+@SelectClasses(
     {
         AbandonRequestTest.class,
         AddRequestTest.class,
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/ParserUtilsTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/ParserUtilsTest.java
index 2398c0d..c4ef081 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/ParserUtilsTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/ParserUtilsTest.java
@@ -21,8 +21,8 @@
 package org.apache.directory.api.dsmlv2;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -31,7 +31,9 @@ import org.apache.directory.api.dsmlv2.batchRequest.BatchRequestTest;
 import org.apache.directory.api.dsmlv2.batchResponse.BatchResponseTest;
 import org.apache.directory.api.dsmlv2.request.BatchRequestDsml;
 import org.apache.directory.api.dsmlv2.response.BatchResponseDsml;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -39,6 +41,7 @@ import org.junit.Test;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
+@Execution( ExecutionMode.CONCURRENT)
 public class ParserUtilsTest extends AbstractTest
 {
 
@@ -62,8 +65,8 @@ public class ParserUtilsTest extends AbstractTest
         String dsml = batchRequest.toDsml();
         assertNotNull( dsml );
 
-        assertEquals( "Pretty printed DSML should contain newlines", 20, countNewlines( dsml ) );
-        assertEquals( "Pretty printed DSML should contain indention", 38, countIndention( dsml ) );
+        assertEquals( 20, countNewlines( dsml ), "Pretty printed DSML should contain newlines" );
+        assertEquals( 38, countIndention( dsml ), "Pretty printed DSML should contain indention" );
     }
 
 
@@ -84,8 +87,8 @@ public class ParserUtilsTest extends AbstractTest
         String dsml = batchResponse.toDsml();
         assertNotNull( dsml );
 
-        assertEquals( "Pretty printed DSML should contain newlines", 12, countNewlines( dsml ) );
-        assertEquals( "Pretty printed DSML should contain indention", 18, countIndention( dsml ) );
+        assertEquals( 12, countNewlines( dsml ), "Pretty printed DSML should contain newlines" );
+        assertEquals( 18, countIndention( dsml ), "Pretty printed DSML should contain indention" );
     }
 
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/abandonRequest/AbandonRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/abandonRequest/AbandonRequestTest.java
index f185e73..dcc0605 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/abandonRequest/AbandonRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/abandonRequest/AbandonRequestTest.java
@@ -21,11 +21,11 @@
 package org.apache.directory.api.dsmlv2.abandonRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Map;
 
@@ -36,20 +36,16 @@ import org.apache.directory.api.dsmlv2.request.BatchRequestDsml;
 import org.apache.directory.api.ldap.model.message.AbandonRequest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Abandon Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AbandonRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/addRequest/AddRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/addRequest/AddRequestTest.java
index ac2b23d..291cb62 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/addRequest/AddRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/addRequest/AddRequestTest.java
@@ -21,11 +21,11 @@
 package org.apache.directory.api.dsmlv2.addRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Iterator;
 import java.util.Map;
@@ -39,20 +39,16 @@ import org.apache.directory.api.ldap.model.entry.Value;
 import org.apache.directory.api.ldap.model.message.AddRequest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Add Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AddRequestTest extends AbstractTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/addResponse/AddResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/addResponse/AddResponseTest.java
index 4b2cfb4..1db9161 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/addResponse/AddResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/addResponse/AddResponseTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.addResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -41,20 +41,16 @@ import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Add Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AddResponseTest extends AbstractResponseTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/authRequest/AuthRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/authRequest/AuthRequestTest.java
index 5145dea..df86199 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/authRequest/AuthRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/authRequest/AuthRequestTest.java
@@ -21,11 +21,11 @@
 package org.apache.directory.api.dsmlv2.authRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Map;
 
@@ -35,20 +35,16 @@ import org.apache.directory.api.dsmlv2.Dsmlv2Parser;
 import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Auth Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AuthRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/authResponse/AuthResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/authResponse/AuthResponseTest.java
index b0ee7bb..efd0464 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/authResponse/AuthResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/authResponse/AuthResponseTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.authResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -41,20 +41,16 @@ import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Auth Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AuthResponseTest extends AbstractResponseTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/batchRequest/BatchRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/batchRequest/BatchRequestTest.java
index d8e50d1..d9d6aa1 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/batchRequest/BatchRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/batchRequest/BatchRequestTest.java
@@ -21,9 +21,9 @@
 package org.apache.directory.api.dsmlv2.batchRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.List;
 
@@ -41,20 +41,16 @@ import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
 import org.apache.directory.api.ldap.model.message.ModifyRequest;
 import org.apache.directory.api.ldap.model.message.Request;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Compare Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class BatchRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/batchResponse/BatchResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/batchResponse/BatchResponseTest.java
index 2f76952..c944d9e 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/batchResponse/BatchResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/batchResponse/BatchResponseTest.java
@@ -21,9 +21,9 @@
 package org.apache.directory.api.dsmlv2.batchResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import org.apache.directory.api.dsmlv2.AbstractResponseTest;
 import org.apache.directory.api.dsmlv2.DsmlDecorator;
@@ -39,20 +39,16 @@ import org.apache.directory.api.ldap.model.message.ExtendedResponse;
 import org.apache.directory.api.ldap.model.message.ModifyDnResponse;
 import org.apache.directory.api.ldap.model.message.ModifyResponse;
 import org.apache.directory.api.ldap.model.message.Response;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Compare Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class BatchResponseTest extends AbstractResponseTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/compareRequest/CompareRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/compareRequest/CompareRequestTest.java
index 2fd521a..749fc39 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/compareRequest/CompareRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/compareRequest/CompareRequestTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.compareRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Map;
 
@@ -36,20 +36,16 @@ import org.apache.directory.api.dsmlv2.Dsmlv2Parser;
 import org.apache.directory.api.ldap.model.message.CompareRequest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Compare Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class CompareRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/compareResponse/CompareResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/compareResponse/CompareResponseTest.java
index df715fe..e483baf 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/compareResponse/CompareResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/compareResponse/CompareResponseTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.compareResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -41,20 +41,16 @@ import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Compare Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class CompareResponseTest extends AbstractResponseTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/delRequest/DelRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/delRequest/DelRequestTest.java
index 682481c..80a86c2 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/delRequest/DelRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/delRequest/DelRequestTest.java
@@ -21,11 +21,11 @@
 package org.apache.directory.api.dsmlv2.delRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Map;
 
@@ -35,20 +35,16 @@ import org.apache.directory.api.dsmlv2.Dsmlv2Parser;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.DeleteRequest;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Del Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class DelRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/delResponse/DelResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/delResponse/DelResponseTest.java
index 041aaf7..3d8a45e 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/delResponse/DelResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/delResponse/DelResponseTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.delResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -41,20 +41,16 @@ import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Del Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class DelResponseTest extends AbstractResponseTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/errorResponse/ErrorResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/errorResponse/ErrorResponseTest.java
index 1a10bf0..1f86392 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/errorResponse/ErrorResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/errorResponse/ErrorResponseTest.java
@@ -21,28 +21,24 @@
 package org.apache.directory.api.dsmlv2.errorResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import org.apache.directory.api.dsmlv2.AbstractResponseTest;
 import org.apache.directory.api.dsmlv2.Dsmlv2ResponseParser;
 import org.apache.directory.api.dsmlv2.response.ErrorResponse;
 import org.apache.directory.api.dsmlv2.response.ErrorResponse.ErrorResponseType;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Error Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ErrorResponseTest extends AbstractResponseTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/extendedRequest/ExtendedRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/extendedRequest/ExtendedRequestTest.java
index 33b5e2c..c30f1a7 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/extendedRequest/ExtendedRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/extendedRequest/ExtendedRequestTest.java
@@ -20,12 +20,12 @@
 package org.apache.directory.api.dsmlv2.extendedRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Map;
 
@@ -35,20 +35,16 @@ import org.apache.directory.api.dsmlv2.Dsmlv2Parser;
 import org.apache.directory.api.dsmlv2.request.ExtendedRequestDsml;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Extended Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ExtendedRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/extendedResponse/ExtendedResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/extendedResponse/ExtendedResponseTest.java
index 59a5f5b..4c00722 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/extendedResponse/ExtendedResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/extendedResponse/ExtendedResponseTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.extendedResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -44,20 +44,16 @@ import org.apache.directory.api.ldap.model.message.LdapResult;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Extended Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ExtendedResponseTest extends AbstractResponseTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modDNRequest/ModifyDNRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modDNRequest/ModifyDNRequestTest.java
index 859c77e..264f675 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modDNRequest/ModifyDNRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modDNRequest/ModifyDNRequestTest.java
@@ -21,11 +21,11 @@
 package org.apache.directory.api.dsmlv2.modDNRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Map;
 
@@ -35,20 +35,16 @@ import org.apache.directory.api.dsmlv2.Dsmlv2Parser;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Modify Dn Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ModifyDNRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modDNResponse/ModifyDNResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modDNResponse/ModifyDNResponseTest.java
index dd1bcdb..3b1f361 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modDNResponse/ModifyDNResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modDNResponse/ModifyDNResponseTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.modDNResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -41,20 +41,16 @@ import org.apache.directory.api.ldap.model.message.ModifyDnResponse;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Modify Dn Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ModifyDNResponseTest extends AbstractResponseTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modifyRequest/ModifyRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modifyRequest/ModifyRequestTest.java
index d940415..5b11faa 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modifyRequest/ModifyRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modifyRequest/ModifyRequestTest.java
@@ -21,11 +21,11 @@
 package org.apache.directory.api.dsmlv2.modifyRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.nio.charset.StandardCharsets;
 import java.util.Collection;
@@ -42,20 +42,16 @@ import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ModifyRequest;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Modify Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ModifyRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modifyResponse/ModifyResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modifyResponse/ModifyResponseTest.java
index d963b12..d3215cb 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modifyResponse/ModifyResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/modifyResponse/ModifyResponseTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.modifyResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -41,20 +41,16 @@ import org.apache.directory.api.ldap.model.message.ModifyResponse;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Modify Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ModifyResponseTest extends AbstractResponseTest
 {
 
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchRequest/SearchRequestTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchRequest/SearchRequestTest.java
index f58ed1f..df88097 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchRequest/SearchRequestTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchRequest/SearchRequestTest.java
@@ -21,19 +21,16 @@
 package org.apache.directory.api.dsmlv2.searchRequest;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.List;
 import java.util.Map;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.dsmlv2.AbstractTest;
 import org.apache.directory.api.dsmlv2.DsmlControl;
 import org.apache.directory.api.dsmlv2.Dsmlv2Parser;
@@ -55,17 +52,16 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.ldap.model.message.SearchScope;
 import org.apache.directory.api.util.Strings;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Del Request parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchRequestTest extends AbstractTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/SearchResponseTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/SearchResponseTest.java
index 50d28bd..eb735bc 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/SearchResponseTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/SearchResponseTest.java
@@ -21,27 +21,23 @@
 package org.apache.directory.api.dsmlv2.searchResponse;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import org.apache.directory.api.dsmlv2.AbstractResponseTest;
 import org.apache.directory.api.dsmlv2.Dsmlv2ResponseParser;
 import org.apache.directory.api.dsmlv2.response.SearchResponse;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Search Result Done Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchResponseTest extends AbstractResponseTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultDone/SearchResultDoneTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultDone/SearchResultDoneTest.java
index 5e4f55e..44f04ba 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultDone/SearchResultDoneTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultDone/SearchResultDoneTest.java
@@ -21,12 +21,12 @@
 package org.apache.directory.api.dsmlv2.searchResponse.searchResultDone;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -42,20 +42,16 @@ import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.SearchResultDone;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Search Result Done Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchResultDoneTest extends AbstractResponseTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultEntry/SearchResultEntryTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultEntry/SearchResultEntryTest.java
index 9078102..201d938 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultEntry/SearchResultEntryTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultEntry/SearchResultEntryTest.java
@@ -20,19 +20,16 @@
 package org.apache.directory.api.dsmlv2.searchResponse.searchResultEntry;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.nio.charset.StandardCharsets;
 import java.util.Iterator;
 import java.util.Map;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.dsmlv2.AbstractResponseTest;
 import org.apache.directory.api.dsmlv2.DsmlControl;
 import org.apache.directory.api.dsmlv2.Dsmlv2ResponseParser;
@@ -44,8 +41,9 @@ import org.apache.directory.api.ldap.model.entry.Value;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.SearchResultEntry;
 import org.apache.directory.api.util.Strings;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -53,8 +51,7 @@ import org.junit.runner.RunWith;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchResultEntryTest extends AbstractResponseTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultReference/SearchResultReferenceTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultReference/SearchResultReferenceTest.java
index 51103a3..57c4385 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultReference/SearchResultReferenceTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/searchResponse/searchResultReference/SearchResultReferenceTest.java
@@ -21,11 +21,11 @@
 package org.apache.directory.api.dsmlv2.searchResponse.searchResultReference;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Collection;
 import java.util.Map;
@@ -39,20 +39,16 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.SearchResultReference;
 import org.apache.directory.api.ldap.model.url.LdapUrl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for the Search Result Reference Response parsing
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchResultReferenceTest extends AbstractResponseTest
 {
     /**
diff --git a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/soap/SoapDsmlParsingTest.java b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/soap/SoapDsmlParsingTest.java
index 891a3e0..6abcd3c 100644
--- a/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/soap/SoapDsmlParsingTest.java
+++ b/dsml/parser/src/test/java/org/apache/directory/api/dsmlv2/soap/SoapDsmlParsingTest.java
@@ -20,16 +20,18 @@
 package org.apache.directory.api.dsmlv2.soap;
 
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import org.apache.directory.api.dsmlv2.Dsmlv2Parser;
 import org.apache.directory.api.dsmlv2.request.BatchRequestDsml;
 import org.apache.directory.api.ldap.model.message.SearchRequest;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -37,9 +39,9 @@ import org.junit.Test;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
+@Execution( ExecutionMode.CONCURRENT)
 public class SoapDsmlParsingTest
 {
-
     @Test
     public void testParsingRequestsOneByOne() throws Exception
     {
diff --git a/integ-osgi/pom.xml b/integ-osgi/pom.xml
index a3ec4b4..f483f46 100644
--- a/integ-osgi/pom.xml
+++ b/integ-osgi/pom.xml
@@ -92,8 +92,13 @@
     </dependency>
 
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
 
@@ -170,6 +175,13 @@
             <reuseForks>false</reuseForks>
             <forkedProcessExitTimeoutInSeconds>1</forkedProcessExitTimeoutInSeconds>
             <rerunFailingTestsCount>1</rerunFailingTestsCount>
+            <parallel>all</parallel>
+            <threadCount>10</threadCount>
+            <properties>
+              <configurationParameters>
+                junit.jupiter.execution.parallel.enabled=true
+              </configurationParameters>
+            </properties>
           </configuration>
         </plugin>
         <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
diff --git a/integ/pom.xml b/integ/pom.xml
index 6dac59e..2c53c16 100644
--- a/integ/pom.xml
+++ b/integ/pom.xml
@@ -49,8 +49,14 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
     
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/aci/ACIItemCheckerTest.java b/integ/src/test/java/org/apache/directory/api/ldap/aci/ACIItemCheckerTest.java
index 18430b2..d5337b5 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/aci/ACIItemCheckerTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/aci/ACIItemCheckerTest.java
@@ -21,28 +21,24 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.text.ParseException;
 
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.loader.JarLdifSchemaLoader;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class for ACIItem checker (wrapper).
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class ACIItemCheckerTest
 {
     /** the ACIItem checker wrapper */
@@ -52,7 +48,7 @@ public class ACIItemCheckerTest
     /**
      * Initialization
      */
-    @BeforeClass
+    @BeforeAll
     public static void init() throws Exception
     {
         JarLdifSchemaLoader loader = new JarLdifSchemaLoader();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/aci/ACIItemParserTest.java b/integ/src/test/java/org/apache/directory/api/ldap/aci/ACIItemParserTest.java
index a5bd700..5320b8e 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/aci/ACIItemParserTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/aci/ACIItemParserTest.java
@@ -21,30 +21,26 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.text.ParseException;
 
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.loader.JarLdifSchemaLoader;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class for ACIItem parser (wrapper).
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class ACIItemParserTest
 {
 
@@ -55,7 +51,7 @@ public class ACIItemParserTest
     /**
      * Initialization
      */
-    @BeforeClass
+    @BeforeAll
     public static void init() throws Exception
     {
         JarLdifSchemaLoader loader = new JarLdifSchemaLoader();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/codec/api/StandaloneLdapCodecServiceTest.java b/integ/src/test/java/org/apache/directory/api/ldap/codec/api/StandaloneLdapCodecServiceTest.java
index 329b8e4..6030077 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/codec/api/StandaloneLdapCodecServiceTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/codec/api/StandaloneLdapCodecServiceTest.java
@@ -20,8 +20,8 @@
 package org.apache.directory.api.ldap.codec.api;
 
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.directory.api.ldap.codec.standalone.StandaloneLdapApiService;
 import org.apache.directory.api.ldap.extras.controls.ppolicy.PasswordPolicyRequest;
@@ -33,8 +33,8 @@ import org.apache.directory.api.ldap.extras.intermediate.syncrepl.SyncInfoValueI
 import org.apache.directory.api.ldap.extras.intermediate.syncrepl_impl.SyncInfoValueFactory;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.util.Strings;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -44,7 +44,7 @@ import org.junit.Test;
  */
 public class StandaloneLdapCodecServiceTest
 {
-    @BeforeClass
+    @BeforeAll
     public static void setupLdapApiService() throws Exception
     {
         // Load the extension points
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareAttributeSerializationTest.java b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareAttributeSerializationTest.java
index 6f63f4b..c49c089 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareAttributeSerializationTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareAttributeSerializationTest.java
@@ -20,7 +20,7 @@
 package org.apache.directory.api.ldap.entry;
 
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -34,9 +34,8 @@ import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueEx
 import org.apache.directory.api.ldap.model.schema.AttributeType;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test the Attribute Serialization
@@ -61,7 +60,7 @@ public class SchemaAwareAttributeSerializationTest
     /**
      * Initialize OIDs maps for normalization
      */
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareAttributeTest.java b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareAttributeTest.java
index 537c590..3de9241 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareAttributeTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareAttributeTest.java
@@ -20,13 +20,13 @@
 package org.apache.directory.api.ldap.entry;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -47,17 +47,13 @@ import org.apache.directory.api.ldap.model.schema.AttributeType;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.api.util.Strings;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
-
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 /**
  * Test the schema aware Attribute
  * 
@@ -179,7 +175,7 @@ public class SchemaAwareAttributeTest
     }
 
 
-    @BeforeClass
+    @BeforeAll
     public static void startup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
@@ -189,7 +185,7 @@ public class SchemaAwareAttributeTest
     /**
      * Initialize the schemaManager
      */
-    @Before
+    @BeforeEach
     public void setup() throws Exception
     {
         atCN = schemaManager.getAttributeType( "cn" );
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareEntrySerializationTest.java b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareEntrySerializationTest.java
index 5376806..a3474e2 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareEntrySerializationTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareEntrySerializationTest.java
@@ -20,8 +20,8 @@
 package org.apache.directory.api.ldap.entry;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -34,9 +34,8 @@ import org.apache.directory.api.ldap.model.entry.Entry;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test the Entry Serialization
@@ -51,7 +50,7 @@ public class SchemaAwareEntrySerializationTest
     /**
      * Initialize OIDs maps for normalization
      */
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareEntryTest.java b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareEntryTest.java
index 2f3c13d..c604af1 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareEntryTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareEntryTest.java
@@ -19,13 +19,13 @@
 package org.apache.directory.api.ldap.entry;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -48,21 +48,17 @@ import org.apache.directory.api.ldap.model.name.Dn;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.api.util.Strings;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * A test class for the DefaultEntry class
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class SchemaAwareEntryTest
 {
     private static Dn exampleDn;
@@ -179,7 +175,7 @@ public class SchemaAwareEntryTest
     /**
      * @throws java.lang.Exception
      */
-    @BeforeClass
+    @BeforeAll
     public static void setUpBeforeClass() throws Exception
     {
         exampleDn = new Dn( "dc=example,dc=com" );
@@ -853,13 +849,13 @@ public class SchemaAwareEntryTest
 
         entry.put( "sn", ( String ) null );
         assertEquals( 1, entry.size() );
-        assertNotNull( "sn", entry.get( "sn" ) );
+        assertNotNull( entry.get( "sn" ), "sn" );
         assertEquals( 1, entry.get( "sn" ).size() );
         assertNull( entry.get( "sn" ).get().getString() );
 
         entry.put( "ObjectClass", "top", "person", "top" );
         assertEquals( 2, entry.size() );
-        assertNotNull( "objectclass", entry.get( "sn" ) );
+        assertNotNull( entry.get( "sn" ), "objectclass" );
         assertEquals( 2, entry.get( "OBJECTCLASS" ).size() );
         Attribute attribute = entry.get( "objectClass" );
         assertTrue( attribute.contains( "top" ) );
@@ -909,7 +905,7 @@ public class SchemaAwareEntryTest
 
         entry.put( "sn", strNullValue );
         assertEquals( 1, entry.size() );
-        assertNotNull( "sn", entry.get( "sn" ) );
+        assertNotNull( entry.get( "sn" ), "sn" );
         assertEquals( 1, entry.get( "sn" ).size() );
         assertNull( entry.get( "sn" ).get().getString() );
 
@@ -917,7 +913,7 @@ public class SchemaAwareEntryTest
 
         entry.put( "ObjectClass", strValueTop, strValuePerson, strValueTop2, strNullValue );
         assertEquals( 1, entry.size() );
-        assertNotNull( "objectclass", entry.get( "objectclass" ) );
+        assertNotNull( entry.get( "objectclass" ), "objectclass" );
         assertEquals( 3, entry.get( "OBJECTCLASS" ).size() );
         Attribute attribute = entry.get( "objectClass" );
         assertTrue( attribute.contains( "top" ) );
@@ -930,7 +926,7 @@ public class SchemaAwareEntryTest
 
         entry.put( "userpassword", strNullValue );
         assertEquals( 1, entry.size() );
-        assertNotNull( "userpassword", entry.get( "userpassword" ) );
+        assertNotNull( entry.get( "userpassword" ), "userpassword" );
         assertEquals( 1, entry.get( "userpassword" ).size() );
         assertNull( entry.get( "userpassword" ).get().getString() );
 
@@ -938,7 +934,7 @@ public class SchemaAwareEntryTest
 
         entry.put( "userPassword", binValue1, binValue2, binValue3, binNullValue );
         assertEquals( 1, entry.size() );
-        assertNotNull( "userpassword", entry.get( "userpassword" ) );
+        assertNotNull( entry.get( "userpassword" ), "userpassword" );
         assertEquals( 3, entry.get( "userpassword" ).size() );
         attribute = entry.get( "userpassword" );
         assertTrue( attribute.contains( BYTES1 ) );
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareModificationSerializationTest.java b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareModificationSerializationTest.java
index ecbebd9..61ce3ed 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareModificationSerializationTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareModificationSerializationTest.java
@@ -20,8 +20,8 @@
 package org.apache.directory.api.ldap.entry;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -39,21 +39,17 @@ import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueEx
 import org.apache.directory.api.ldap.model.schema.AttributeType;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the DefaultModification class
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class SchemaAwareModificationSerializationTest
 {
     private static SchemaManager schemaManager;
@@ -63,7 +59,7 @@ public class SchemaAwareModificationSerializationTest
     /**
      * Initialize OIDs maps for normalization
      */
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareValueSerializationTest.java b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareValueSerializationTest.java
index c813a8e..4f7a6db 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareValueSerializationTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/entry/SchemaAwareValueSerializationTest.java
@@ -20,7 +20,7 @@
 package org.apache.directory.api.ldap.entry;
 
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -35,21 +35,17 @@ import org.apache.directory.api.ldap.model.schema.AttributeType;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.api.util.Strings;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the Value Serialization
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class SchemaAwareValueSerializationTest
 {
     private static final byte[] DATA = new byte[]
@@ -76,7 +72,7 @@ public class SchemaAwareValueSerializationTest
     /**
      * Initialize OIDs maps for normalization
      */
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/ldif/SchemaAwareLdifReaderTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/ldif/SchemaAwareLdifReaderTest.java
index eef9039..d1119ca 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/ldif/SchemaAwareLdifReaderTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/ldif/SchemaAwareLdifReaderTest.java
@@ -20,12 +20,13 @@
 package org.apache.directory.api.ldap.model.ldif;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.DataOutputStream;
 import java.io.File;
@@ -46,22 +47,18 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.api.util.Strings;
-import org.junit.Before;
-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.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the LdifReader class
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class SchemaAwareLdifReaderTest
 {
     private static byte[] data;
@@ -94,7 +91,7 @@ public class SchemaAwareLdifReaderTest
     /**
      * Create a file to be used by ":<" values
      */
-    @BeforeClass
+    @BeforeAll
     public static void setUp() throws Exception
     {
         data = new byte[256];
@@ -112,7 +109,7 @@ public class SchemaAwareLdifReaderTest
     /**
      * Initialize the SchemaManager
      */
-    @Before
+    @BeforeEach
     public void init()
     {
         schemaManager = new DefaultSchemaManager();
@@ -1254,8 +1251,8 @@ public class SchemaAwareLdifReaderTest
         }
         catch ( Exception ne )
         {
-            assertTrue( I18n.err( I18n.ERR_13442_ERROR_PARSING_LDIF_BUFFER ), 
-                ne.getMessage().startsWith( I18n.ERR_13442_ERROR_PARSING_LDIF_BUFFER.getErrorCode() ) );
+            assertTrue( ne.getMessage().startsWith( I18n.ERR_13442_ERROR_PARSING_LDIF_BUFFER.getErrorCode() ),
+                I18n.err( I18n.ERR_13442_ERROR_PARSING_LDIF_BUFFER ) );
         }
     }
 
@@ -2063,7 +2060,7 @@ public class SchemaAwareLdifReaderTest
     }
 
 
-    @Test(expected = LdapLdifException.class)
+    @Test
     public void testChangeTypeDeleteBadEntry() throws Exception
     {
         String ldif =
@@ -2072,14 +2069,17 @@ public class SchemaAwareLdifReaderTest
                 "changetype: delete\n" +
                 "attr1: test";
 
-        try ( LdifReader reader = new LdifReader( schemaManager ) )
+        assertThrows( LdapLdifException.class, ( ) ->
         {
-            reader.parseLdif( ldif );
-        }
+            try ( LdifReader reader = new LdifReader( schemaManager ) )
+            {
+                reader.parseLdif( ldif );
+            }
+        } );
     }
 
 
-    @Test(expected = LdapLdifException.class)
+    @Test
     public void testLdifContentWithControl() throws Exception
     {
         String ldif =
@@ -2090,7 +2090,10 @@ public class SchemaAwareLdifReaderTest
 
         try ( LdifReader reader = new LdifReader( schemaManager ) )
         {
-            reader.parseLdif( ldif );
+            assertThrows( LdapLdifException.class, ( ) ->
+            {
+                reader.parseLdif( ldif );
+            } );
         }
     }
 
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/AvaSerializationTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/AvaSerializationTest.java
index 0bcbab1..8e32a25 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/AvaSerializationTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/AvaSerializationTest.java
@@ -20,9 +20,9 @@
 package org.apache.directory.api.ldap.model.name;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -35,29 +35,25 @@ import org.apache.directory.api.ldap.model.name.Ava;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.api.util.Strings;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-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.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the AttributeTypeAndValue class serialization
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class AvaSerializationTest
 {
     /** A null schemaManager used in tests */
     private static SchemaManager schemaManager;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
@@ -363,7 +359,7 @@ public class AvaSerializationTest
 
 
     @Test
-    @Ignore
+    @Disabled
     public void testSerializationPerf() throws LdapException, IOException, ClassNotFoundException
     {
         Ava atav = new Ava( schemaManager, "cn", "This is a serialization test" );
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/AvaTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/AvaTest.java
index aba8889..f031bbc 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/AvaTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/AvaTest.java
@@ -20,9 +20,9 @@
 package org.apache.directory.api.ldap.model.name;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.Arrays;
 
@@ -30,27 +30,23 @@ import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the class AttributeTypeAndValue
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class AvaTest
 {
     private static SchemaManager schemaManager;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/DnTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/DnTest.java
index c82cc7c..d87ab98 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/DnTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/DnTest.java
@@ -20,13 +20,14 @@
 package org.apache.directory.api.ldap.model.name;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
@@ -40,22 +41,18 @@ import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.api.util.Strings;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-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.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the class Dn
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class DnTest
 {
     private static SchemaManager schemaManager;
@@ -64,7 +61,7 @@ public class DnTest
     /**
      * Initialize OIDs maps for normalization
      */
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
@@ -925,12 +922,15 @@ public class DnTest
     /**
      * Get the prefix out of bound
      */
-    @Test(expected = LdapInvalidDnException.class)
+    @Test
     public void testDnGetPrefixPos4() throws LdapException
     {
         Dn dn = new Dn( "a=b, c=d,e = f" );
 
-        dn.getAncestorOf( "a=z" );
+        assertThrows( LdapInvalidDnException.class, () ->
+        {
+            dn.getAncestorOf( "a=z" );
+        } );
     }
 
 
@@ -1680,14 +1680,14 @@ public class DnTest
 
         assertTrue( nn3210.isDescendantOf( nn3210 ) );
 
-        assertTrue( "Starting Dn fails with ADS Dn",
-            new Dn( "ou=foo,dc=apache,dc=org" ).isDescendantOf( new Dn( "dc=apache,dc=org" ) ) );
+        assertTrue( new Dn( "ou=foo,dc=apache,dc=org" ).isDescendantOf( new Dn( "dc=apache,dc=org" ) ),
+            "Starting Dn fails with ADS Dn" );
 
-        assertTrue( "Starting Dn fails with Java LdapName",
-            new Dn( "ou=foo,dc=apache,dc=org" ).isDescendantOf( new Dn( "dc=apache,dc=org" ) ) );
+        assertTrue( new Dn( "ou=foo,dc=apache,dc=org" ).isDescendantOf( new Dn( "dc=apache,dc=org" ) ),
+            "Starting Dn fails with Java LdapName" );
 
-        assertTrue( "Starting Dn fails with Java LdapName",
-            new Dn( "dc=apache,dc=org" ).isDescendantOf( new Dn( "dc=apache,dc=org" ) ) );
+        assertTrue( new Dn( "dc=apache,dc=org" ).isDescendantOf( new Dn( "dc=apache,dc=org" ) ),
+            "Starting Dn fails with Java LdapName" );
     }
 
 
@@ -3012,7 +3012,7 @@ public class DnTest
 
     
     @Test
-    @Ignore
+    @Disabled
     public void testDnParsingPerf() throws LdapInvalidDnException
     {
         long[] deltas = new long[10];
@@ -3116,7 +3116,7 @@ public class DnTest
     
     
     @Test
-    @Ignore
+    @Disabled
     public void testDnParsingOneRdnPerf() throws LdapInvalidDnException
     {
         long t0 = System.currentTimeMillis();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/FastParserRdnTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/FastParserRdnTest.java
index b449c49..bc56708 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/FastParserRdnTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/FastParserRdnTest.java
@@ -22,28 +22,25 @@ package org.apache.directory.api.ldap.model.name;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
-import static org.junit.Assert.assertEquals;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests for the schemaAware Rdn class when using teh FastParser
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class FastParserRdnTest
 {
     private static SchemaManager schemaManager;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/MultiThreadedTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/MultiThreadedTest.java
index 4ae57a2..a5ff923 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/MultiThreadedTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/MultiThreadedTest.java
@@ -20,33 +20,24 @@
 package org.apache.directory.api.ldap.model.name;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.apache.directory.junit.tools.MultiThreadedMultiInvoker;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Multi-threaded 
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class MultiThreadedTest
 {
-    @Rule
-    public MultiThreadedMultiInvoker i = new MultiThreadedMultiInvoker( 100, 1000 );
-
     private static Dn referenceDn;
     private static Dn sharedDn;
     private static Rdn referenceRdn;
@@ -57,7 +48,7 @@ public class MultiThreadedTest
     private static SchemaManager schemaManager;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/RdnTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/RdnTest.java
index 0711e5f..b12fdb2 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/RdnTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/RdnTest.java
@@ -23,28 +23,28 @@ import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import java.io.IOException;
 
 /**
  * Tests for the schemaAware Rdn class
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class RdnTest
 {
     private static SchemaManager schemaManager;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
@@ -262,10 +262,13 @@ public class RdnTest
      * test that a RDN with an attributeType used twice with the same value
      * throws an exception
      */
-    @Test( expected=LdapInvalidDnException.class )
+    @Test
     public void testWrongRdnAtUsedTwiceSameValue() throws LdapException
     {
-        new Rdn( schemaManager, " cn = b + cn = b " );
+        assertThrows( LdapInvalidDnException.class, () ->
+        {
+            new Rdn( schemaManager, " cn = b + cn = b " );
+        } );
     }
     
     
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareAvaSerializationTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareAvaSerializationTest.java
index 7d3f792..504d3c1 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareAvaSerializationTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareAvaSerializationTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.model.name;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -34,9 +35,9 @@ import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.api.util.Strings;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -49,7 +50,7 @@ public class SchemaAwareAvaSerializationTest
     private static SchemaManager schemaManager;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
@@ -124,7 +125,7 @@ public class SchemaAwareAvaSerializationTest
     }
 
 
-    @Ignore
+    @Disabled
     @Test
     public void testBinaryAtavSerializationBytes() throws LdapException, IOException, ClassNotFoundException
     {
@@ -333,7 +334,7 @@ public class SchemaAwareAvaSerializationTest
     }
 
 
-    @Ignore
+    @Disabled
     @Test
     public void testBinaryAtavStaticSerializationBytes() throws LdapException, IOException, ClassNotFoundException
     {
@@ -396,18 +397,20 @@ public class SchemaAwareAvaSerializationTest
     }
 
 
-    @Test(expected = IOException.class)
+    @Test
     public void testNullNormValueStaticSerialization() throws LdapException, IOException, ClassNotFoundException
     {
         byte[] buffer = new byte[128];
         Ava atav = new Ava( schemaManager, "DC", ( String ) null );
 
-        atav.serialize( buffer, 0 );
-        fail();
+        assertThrows( IOException.class, () ->
+        {
+            atav.serialize( buffer, 0 );
+        } );
     }
 
 
-    @Test(expected = IOException.class)
+    @Test
     public void testNullNormValueStaticSerializationBytes() throws LdapException, IOException, ClassNotFoundException
     {
         Ava atav = new Ava( schemaManager, "DC", ( String ) null );
@@ -415,8 +418,10 @@ public class SchemaAwareAvaSerializationTest
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         ObjectOutputStream out = new ObjectOutputStream( baos );
 
-        atav.writeExternal( out );
-        fail();
+        assertThrows( IOException.class, () ->
+        {
+            atav.writeExternal( out );
+        } );
     }
 
 
@@ -458,7 +463,7 @@ public class SchemaAwareAvaSerializationTest
     }
 
 
-    @Ignore
+    @Disabled
     @Test
     public void testStringAtavSerializationPerf() throws IOException, LdapException,
         ClassNotFoundException
@@ -489,7 +494,7 @@ public class SchemaAwareAvaSerializationTest
     }
 
 
-    @Ignore
+    @Disabled
     @Test
     public void testStringAtavSerializationBytesPerf() throws IOException, LdapException,
         ClassNotFoundException
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareDnSerializationTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareDnSerializationTest.java
index 4175c2c..132e24f 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareDnSerializationTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareDnSerializationTest.java
@@ -20,7 +20,7 @@
 package org.apache.directory.api.ldap.model.name;
 
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -31,9 +31,9 @@ import java.io.ObjectOutputStream;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -49,7 +49,7 @@ public class SchemaAwareDnSerializationTest
     /**
      * Initialize OIDs maps for normalization
      */
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
@@ -194,7 +194,7 @@ public class SchemaAwareDnSerializationTest
     }
 
 
-    @Ignore
+    @Disabled
     @Test
     public void testSerializationPerfs() throws Exception
     {
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareRdnSerializationTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareRdnSerializationTest.java
index 4ee80c4..fa99f7d 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareRdnSerializationTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareRdnSerializationTest.java
@@ -20,7 +20,7 @@
 package org.apache.directory.api.ldap.model.name;
 
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -31,22 +31,18 @@ import java.io.ObjectOutputStream;
 import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-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.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the Rdn Serialization
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class SchemaAwareRdnSerializationTest
 {
     private static SchemaManager schemaManager;
@@ -55,7 +51,7 @@ public class SchemaAwareRdnSerializationTest
     /**
      * Initialize OIDs maps for normalization
      */
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
@@ -180,7 +176,7 @@ public class SchemaAwareRdnSerializationTest
     }
 
 
-    @Ignore
+    @Disabled
     @Test
     public void testRdnFullSerializationPerf() throws IOException, LdapException, ClassNotFoundException
     {
@@ -210,7 +206,7 @@ public class SchemaAwareRdnSerializationTest
     }
 
 
-    @Ignore
+    @Disabled
     @Test
     public void testRdnFullSerializationBytesPerf() throws IOException, LdapException, ClassNotFoundException
     {
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareRdnTest.java b/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareRdnTest.java
index 774ff3a..0f55360 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareRdnTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/model/name/SchemaAwareRdnTest.java
@@ -20,12 +20,12 @@
 package org.apache.directory.api.ldap.model.name;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -38,28 +38,24 @@ import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.api.util.Strings;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the Schema aware Rdn class
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class SchemaAwareRdnTest
 {
     /** A null schemaManager used in tests */
     private static SchemaManager schemaManager;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception
     {
         schemaManager = new DefaultSchemaManager();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/schema/syntaxCheckers/ACIItemSyntaxCheckerTest.java b/integ/src/test/java/org/apache/directory/api/ldap/schema/syntaxCheckers/ACIItemSyntaxCheckerTest.java
index e6f4e4e..5cd0efa 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/schema/syntaxCheckers/ACIItemSyntaxCheckerTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/schema/syntaxCheckers/ACIItemSyntaxCheckerTest.java
@@ -20,35 +20,31 @@
 package org.apache.directory.api.ldap.schema.syntaxCheckers;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.directory.api.ldap.aci.ACIItemSyntaxChecker;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.schema.loader.JarLdifSchemaLoader;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test cases for ACIItemSyntaxChecker.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class ACIItemSyntaxCheckerTest
 {
     private static ACIItemSyntaxChecker checker;
 
 
-    @BeforeClass
+    @BeforeAll
     public static void init() throws Exception
     {
         JarLdifSchemaLoader loader = new JarLdifSchemaLoader();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/schema/syntaxCheckers/SubtreeSpecificationSyntaxCheckerTest.java b/integ/src/test/java/org/apache/directory/api/ldap/schema/syntaxCheckers/SubtreeSpecificationSyntaxCheckerTest.java
index 524b133..aa742df 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/schema/syntaxCheckers/SubtreeSpecificationSyntaxCheckerTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/schema/syntaxCheckers/SubtreeSpecificationSyntaxCheckerTest.java
@@ -20,29 +20,25 @@
 package org.apache.directory.api.ldap.schema.syntaxCheckers;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.ldap.model.schema.syntaxCheckers.SubtreeSpecificationSyntaxChecker;
 import org.apache.directory.api.ldap.schema.loader.JarLdifSchemaLoader;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test cases for SubtreeSpecificationSyntaxChecker.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class SubtreeSpecificationSyntaxCheckerTest
 {
     private static SubtreeSpecificationSyntaxChecker checker;
@@ -51,7 +47,7 @@ public class SubtreeSpecificationSyntaxCheckerTest
     /**
      * Initialization
      */
-    @BeforeClass
+    @BeforeAll
     public static void init() throws Exception
     {
         JarLdifSchemaLoader loader = new JarLdifSchemaLoader();
diff --git a/integ/src/test/java/org/apache/directory/api/ldap/subtree/SubtreeSpecificationParserTest.java b/integ/src/test/java/org/apache/directory/api/ldap/subtree/SubtreeSpecificationParserTest.java
index 414cf9d..b0bad2d 100644
--- a/integ/src/test/java/org/apache/directory/api/ldap/subtree/SubtreeSpecificationParserTest.java
+++ b/integ/src/test/java/org/apache/directory/api/ldap/subtree/SubtreeSpecificationParserTest.java
@@ -21,11 +21,11 @@
 package org.apache.directory.api.ldap.subtree;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.text.ParseException;
 import java.util.ArrayList;
@@ -43,21 +43,17 @@ import org.apache.directory.api.ldap.model.subtree.SubtreeSpecification;
 import org.apache.directory.api.ldap.model.subtree.SubtreeSpecificationParser;
 import org.apache.directory.api.ldap.schema.loader.JarLdifSchemaLoader;
 import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class for Subtree Specification parser (wrapper).
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT )
 public class SubtreeSpecificationParserTest
 {
     /** the ss parser wrapper */
@@ -126,7 +122,7 @@ public class SubtreeSpecificationParserTest
     /**
      * Initialization
      */
-    @BeforeClass
+    @BeforeAll
     public static void init() throws Exception
     {
         JarLdifSchemaLoader loader = new JarLdifSchemaLoader();
diff --git a/ldap/client/api/pom.xml b/ldap/client/api/pom.xml
index edfadf9..c09636a 100644
--- a/ldap/client/api/pom.xml
+++ b/ldap/client/api/pom.xml
@@ -85,8 +85,13 @@
     </dependency>
 
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
 
@@ -113,6 +118,13 @@
             <exclude>**/Abstract*</exclude>
             <exclude>**/*RegressionTest*</exclude>
           </excludes>
+          <parallel>all</parallel>
+          <threadCount>10</threadCount>
+          <properties>
+            <configurationParameters>
+              junit.jupiter.execution.parallel.enabled=true
+            </configurationParameters>
+          </properties>
         </configuration>
       </plugin>
 
diff --git a/ldap/codec/core/pom.xml b/ldap/codec/core/pom.xml
index 893e77f..8c7f920 100644
--- a/ldap/codec/core/pom.xml
+++ b/ldap/codec/core/pom.xml
@@ -32,8 +32,14 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
     
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
index 401ef7b..549d75a 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapControlTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -43,15 +44,12 @@ import org.apache.directory.api.ldap.model.message.controls.Cascade;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
 import org.apache.directory.api.ldap.model.message.controls.PagedResults;
 import org.apache.directory.api.ldap.model.message.controls.SortRequest;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
 
-
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class LdapControlTest extends AbstractCodecServiceTest
 {
     /**
@@ -235,7 +233,7 @@ public class LdapControlTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a Request with null OID controls
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeRequestWithControlsNullOID() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x19 );
@@ -259,14 +257,17 @@ public class LdapControlTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode the PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a Request with bad OID controls
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeRequestWithControlsBadOID() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x20 );
@@ -292,14 +293,17 @@ public class LdapControlTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a Request with bad criticality
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeRequestWithControlsBadCriticality() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x25 );
@@ -324,6 +328,9 @@ public class LdapControlTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
index c41c8aa..13bdf3d 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapDecoderTest.java
@@ -20,10 +20,11 @@
 package org.apache.directory.api.ldap.codec;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -45,12 +46,9 @@ import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.util.Strings;
 import org.apache.mina.core.session.DummySession;
 import org.apache.mina.core.session.IoSession;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -58,8 +56,7 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class LdapDecoderTest extends AbstractCodecServiceTest
 {
     /**
@@ -366,7 +363,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
      * Test the decoding of a PDU with a bad Length. The first TLV has a length
      * of 0x32 when the PDU is 0x33 bytes long.
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBadLengthTooSmall() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
@@ -396,7 +393,10 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
@@ -404,7 +404,7 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
      * Test the decoding of a PDU with a bad primitive Length. The second TLV
      * has a length of 0x02 when the PDU is 0x01 bytes long.
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBadPrimitiveLengthTooBig() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
@@ -432,14 +432,17 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a PDU with a bad tag.
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBadTagTransition() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
@@ -466,7 +469,10 @@ public class LdapDecoderTest extends AbstractCodecServiceTest
         LdapMessageContainer<Message> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
index 95155f4..4412bf2 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapMessageTest.java
@@ -20,10 +20,11 @@
 package org.apache.directory.api.ldap.codec;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.nio.ByteBuffer;
 
@@ -37,11 +38,9 @@ import org.apache.directory.api.ldap.codec.api.LdapMessageContainer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.UnbindRequest;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -49,14 +48,13 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class LdapMessageTest extends AbstractCodecServiceTest
 {
     /**
      * Test the decoding of null length messageId
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeMessageLengthNull() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x02 );
@@ -71,14 +69,17 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of null length messageId
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeMessageIdLengthNull() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x04 );
@@ -94,14 +95,17 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of null length messageId
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeMessageIdMinusOne() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x05 );
@@ -117,14 +121,17 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of messageId which value is -1
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeMessageIdMaxInt() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x08 );
@@ -141,7 +148,10 @@ public class LdapMessageTest extends AbstractCodecServiceTest
         Asn1Container ldapMessageContainer = new LdapMessageContainer<Message>( codec );
 
         // Decode a BindRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
index bdd7c92..6c2b475 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/LdapResultTest.java
@@ -20,10 +20,11 @@
 package org.apache.directory.api.ldap.codec;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Collection;
@@ -40,11 +41,9 @@ import org.apache.directory.api.ldap.model.message.AddResponseImpl;
 import org.apache.directory.api.ldap.model.message.Referral;
 import org.apache.directory.api.ldap.model.message.ReferralImpl;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -53,14 +52,13 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class LdapResultTest extends AbstractCodecServiceTest
 {
     /**
      * Test the decoding of a AddResponse with no LdapResult
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddResponseEmptyResultCode() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x10 );
@@ -79,14 +77,17 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a AddResponse with no LdapResult
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddResponseEmptyResultCodeAbove90() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
@@ -105,7 +106,10 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } ); 
     }
 
 
@@ -149,7 +153,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a AddResponse with no matched Dn
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddResponseEmptyResultCodeNoMatchedDN() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
@@ -168,14 +172,17 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a AddResponse with no error message
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddResponseEmptyResultCodeNoErrorMsg() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0C );
@@ -195,7 +202,10 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
@@ -453,7 +463,7 @@ public class LdapResultTest extends AbstractCodecServiceTest
      * Test the decoding of a AddResponse with a valid LdapResult and an invalid
      * transition after the referral sequence
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddResponseEmptyResultCodeEmptyReferrals() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x10 );
@@ -475,6 +485,9 @@ public class LdapResultTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode the AddResponse PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
index adfcd45..3bcb571 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/abandon/AbandonRequestTest.java
@@ -20,10 +20,11 @@
 package org.apache.directory.api.ldap.codec.abandon;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -42,11 +43,9 @@ import org.apache.directory.api.ldap.model.message.controls.Cascade;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
 import org.apache.directory.api.ldap.model.message.controls.PagedResults;
 import org.apache.directory.api.ldap.model.message.controls.SortRequest;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -54,8 +53,7 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class AbandonRequestTest extends AbstractCodecServiceTest
 {
     /**
@@ -225,7 +223,7 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a AbandonRequest with a null messageId
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAbandonRequestNoMessageId() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
@@ -243,14 +241,17 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AbandonRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a AbandonRequest with a bad Message Id
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAbandonRequestBadMessageId() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0B );
@@ -268,6 +269,9 @@ public class AbandonRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AbandonRequest>  container = new LdapMessageContainer<>( codec );
 
         // Decode the PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
index a421995..30424f9 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddRequestTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.add;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.HashMap;
@@ -50,20 +51,16 @@ import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaITImpl;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the AddRequest codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class AddRequestTest extends AbstractCodecServiceTest
 {
     /**
@@ -184,7 +181,7 @@ public class AddRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a AddRequest with a null body
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddRequestNullBody() throws DecoderException
     {
 
@@ -203,14 +200,17 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a AddRequest with a null entry
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddRequestNullEntry() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x39 );
@@ -248,27 +248,30 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        try
-        {
-            Asn1Decoder.decode( stream, container );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof AddResponseImpl );
-            assertEquals( ResultCodeEnum.NAMING_VIOLATION, ( ( AddResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, container );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof AddResponseImpl );
+                assertEquals( ResultCodeEnum.NAMING_VIOLATION, ( ( AddResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
     /**
      * Test the decoding of a AddRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddRequestbadDN() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x59 );
@@ -309,27 +312,30 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        try
-        {
-            Asn1Decoder.decode( stream, container );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof AddResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( AddResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, container );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof AddResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( AddResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
     /**
      * Test the decoding of a AddRequest with a null attributeList
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddRequestNullAttributes() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2B );
@@ -354,14 +360,17 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a AddRequest with a empty attributeList
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddRequestNullAttributeList() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
@@ -387,14 +396,17 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a AddRequest with a empty attributeList
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddRequestNullType() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2F );
@@ -421,27 +433,30 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        try
-        {
-            Asn1Decoder.decode( stream, container );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof AddResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, ( ( AddResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, container );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof AddResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, ( ( AddResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
     /**
      * Test the decoding of a AddRequest with a empty attributeList
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddRequestNoVals() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x30 );
@@ -469,14 +484,17 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a AddRequest with a empty attributeList
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddRequestNullVals() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x32 );
@@ -505,7 +523,10 @@ public class AddRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
index 7331bf7..2078230 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/add/AddResponseTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.add;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -38,18 +39,15 @@ import org.apache.directory.api.ldap.model.message.AddResponse;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution(ExecutionMode.CONCURRENT)
 public class AddResponseTest extends AbstractCodecServiceTest
 {
     /**
@@ -104,7 +102,7 @@ public class AddResponseTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a AddResponse with no LdapResult
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeAddResponseEmptyResult() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
@@ -122,7 +120,10 @@ public class AddResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<AddResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a AddResponse message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestPerfTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestPerfTest.java
index 15c4c67..f26f1e1 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestPerfTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestPerfTest.java
@@ -27,19 +27,15 @@ import org.apache.directory.api.ldap.model.message.BindRequest;
 import org.apache.directory.api.ldap.model.message.BindRequestImpl;
 import org.apache.directory.api.ldap.model.name.Dn;
 import org.apache.directory.api.util.Strings;
-import org.junit.Ignore;
-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.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 //@Ignore("Ignore performance tests: should not be with integration tests")
 public class BindRequestPerfTest extends AbstractCodecServiceTest
 {
@@ -48,7 +44,7 @@ public class BindRequestPerfTest extends AbstractCodecServiceTest
      * controls
      */
     @Test
-    @Ignore
+    @Disabled
     public void testEncodeBindRequestPerf() throws Exception
     {
         Dn dn = new Dn( "uid=akarasulu,dc=example,dc=com" );
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
index 35dab88..6bb1bc6 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindRequestTest.java
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -46,18 +47,14 @@ import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class BindRequestTest extends AbstractCodecServiceTest
 {
     /**
@@ -264,7 +261,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
      * Test the decoding of a BindRequest with Simple authentication, no name
      * and no controls
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBindRequestSimpleNoName() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x15 );
@@ -287,7 +284,10 @@ public class BindRequestTest extends AbstractCodecServiceTest
         Asn1Container container = new LdapMessageContainer<BindRequest>( codec );
 
         // Decode the BindRequest PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
@@ -516,7 +516,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a BindRequest with an empty body
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBindRequestEmptyBody() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -533,14 +533,17 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a BindRequest with an empty version
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBindRequestEmptyVersion() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
@@ -558,14 +561,17 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a BindRequest with a bad version (0)
      */
-    @Test( expected= DecoderException.class )
+    @Test
     public void testDecodeBindRequestBadVersion0() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
@@ -583,14 +589,17 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a BindRequest with a bad version (4)
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBindRequestBadVersion4() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
@@ -608,14 +617,17 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a BindRequest with a bad version (128)
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBindRequestBadVersion128() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0C );
@@ -633,14 +645,17 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a BindRequest with no name
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBindRequestNoName() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0A );
@@ -658,14 +673,17 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of a BindRequest with an empty name
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBindRequestEmptyName() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0C );
@@ -684,7 +702,10 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
@@ -734,7 +755,7 @@ public class BindRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a BindRequest with an empty sasl
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeBindRequestEmptySasl() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x0E );
@@ -754,22 +775,23 @@ public class BindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindRequest message
-        try
+        assertThrows( DecoderException.class, ( ) ->
         {
-            Asn1Decoder.decode( stream, container );
-        }
-        catch ( DecoderException de )
-        {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof BindResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_CREDENTIALS, ( ( BindResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
-
-        fail( "We should not reach this point" );
+            try
+            {
+                Asn1Decoder.decode( stream, container );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof BindResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_CREDENTIALS, ( ( BindResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
index ed61753..10a6c79 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/bind/BindResponseTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.bind;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -40,18 +41,14 @@ import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
 import org.apache.directory.api.ldap.model.message.controls.PagedResults;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class BindResponseTest extends AbstractCodecServiceTest
 {
     /**
@@ -355,8 +352,8 @@ public class BindResponseTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a BindResponse with no LdapResult
      */
-    @Test( expected=DecoderException.class )
-    public void testDecodeAddResponseEmptyResult()throws DecoderException
+    @Test
+    public void testDecodeAddResponseEmptyResult() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
 
@@ -373,6 +370,9 @@ public class BindResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<BindResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a BindResponse message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
index 9721f24..3f234c2 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareRequestTest.java
@@ -20,10 +20,11 @@
 package org.apache.directory.api.ldap.codec.compare;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -42,20 +43,16 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the CompareRequest codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class CompareRequestTest extends AbstractCodecServiceTest
 {
     /**
@@ -112,7 +109,7 @@ public class CompareRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of an empty CompareRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeCompareRequestEmptyRequest() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -131,14 +128,17 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of an empty entry CompareRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeCompareRequestEmptyEntry() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x18 );
@@ -164,14 +164,17 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of an empty ava
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeCompareRequestEmptyAVA() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2B );
@@ -196,14 +199,17 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
     /**
      * Test the decoding of an empty ava
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeCompareRequestInvalidDN() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2B );
@@ -228,28 +234,31 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        try
+        assertThrows( DecoderException.class, ( ) ->
         {
-            Asn1Decoder.decode( stream, container );
-            fail( "We should never reach this point !!!" );
-        }
-        catch ( DecoderException de )
-        {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof CompareResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( CompareResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, container );
+                fail( "We should never reach this point !!!" );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof CompareResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( CompareResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
     /**
      * Test the decoding of an empty attributeDesc ava
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeCompareRequestEmptyAttributeDesc() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
@@ -275,21 +284,24 @@ public class CompareRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode the CompareRequest PDU
-        try
-        {
-            Asn1Decoder.decode( stream, container );
-            fail( "We should never reach this point !!!" );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof CompareResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, ( ( CompareResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, container );
+                fail( "We should never reach this point !!!" );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof CompareResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, ( ( CompareResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
index a72cafb..689ee0c 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/compare/CompareResponseTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.compare;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -38,11 +39,9 @@ import org.apache.directory.api.ldap.model.message.CompareResponse;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -50,8 +49,7 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class CompareResponseTest extends AbstractCodecServiceTest
 {
     /**
@@ -174,7 +172,7 @@ public class CompareResponseTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a CompareResponse with no LdapResult
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeCompareResponseEmptyResult() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -193,6 +191,9 @@ public class CompareResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<CompareResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a CompareResponse message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/proxiedauthz/ProxiedAuthzControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/proxiedauthz/ProxiedAuthzControlTest.java
index eec0ab9..f8746a1 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/proxiedauthz/ProxiedAuthzControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/proxiedauthz/ProxiedAuthzControlTest.java
@@ -20,8 +20,9 @@
 package org.apache.directory.api.ldap.codec.controls.proxiedauthz;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 
@@ -29,11 +30,9 @@ import org.apache.directory.api.asn1.DecoderException;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.controls.ProxiedAuthz;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -41,8 +40,7 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProxiedAuthzControlTest extends AbstractCodecServiceTest
 {
     /**
@@ -137,7 +135,7 @@ public class ProxiedAuthzControlTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a ProxiedAuthzControl with a wrong DN user
      */
-    @Test( expected = DecoderException.class)
+    @Test
     public void testDecodeProxiedAuthzControlWrongDn() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x10 );
@@ -151,14 +149,18 @@ public class ProxiedAuthzControlTest extends AbstractCodecServiceTest
         ProxiedAuthzFactory factory = ( ProxiedAuthzFactory ) codec.getRequestControlFactories().
             get( ProxiedAuthz.OID );
         ProxiedAuthz control = factory.newControl();
-        factory.decodeValue( control, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( control, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a ProxiedAuthzControl with a wrong user
      */
-    @Test( expected = DecoderException.class )
+    @Test
     public void testDecodeProxiedAuthzControlWrongAuthzId() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x08 );
@@ -172,7 +174,11 @@ public class ProxiedAuthzControlTest extends AbstractCodecServiceTest
         ProxiedAuthzFactory factory = ( ProxiedAuthzFactory ) codec.getRequestControlFactories().
             get( ProxiedAuthz.OID );
         ProxiedAuthz control = factory.newControl();
-        factory.decodeValue( control, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( control, bb.array() );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/entryChange/EntryChangeControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/entryChange/EntryChangeControlTest.java
index 0de2bc9..c70744d 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/entryChange/EntryChangeControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/entryChange/EntryChangeControlTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.controls.search.entryChange;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 
@@ -34,20 +35,16 @@ import org.apache.directory.api.ldap.model.exception.LdapException;
 import org.apache.directory.api.ldap.model.message.controls.ChangeType;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
 import org.apache.directory.api.ldap.model.name.Dn;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the EntryChangeControlTest codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class EntryChangeControlTest extends AbstractCodecServiceTest
 {
     /**
@@ -165,7 +162,7 @@ public class EntryChangeControlTest extends AbstractCodecServiceTest
      * Test the decoding of a EntryChangeControl with a add so we should not
      * have a PreviousDN
      */
-    @Test( expected = DecoderException.class )
+    @Test
     public void testDecodeEntryChangeControlWithADDAndPreviousDNBad() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x0D );
@@ -186,7 +183,11 @@ public class EntryChangeControlTest extends AbstractCodecServiceTest
         EntryChangeFactory factory = ( EntryChangeFactory ) codec.getResponseControlFactories().get( 
             EntryChange.OID );
         EntryChange entryChange = factory.newControl();
-        factory.decodeValue( entryChange, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( entryChange, bb.array() );
+        } );
     }
 
 
@@ -229,7 +230,7 @@ public class EntryChangeControlTest extends AbstractCodecServiceTest
      * Test the decoding of a EntryChangeControl with a wrong changeType and
      * nothing else
      */
-    @Test( expected = DecoderException.class )
+    @Test
     public void testDecodeEntryChangeControlWithWrongChangeType() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x05 );
@@ -246,14 +247,18 @@ public class EntryChangeControlTest extends AbstractCodecServiceTest
         EntryChangeFactory factory = ( EntryChangeFactory ) codec.getResponseControlFactories().get( 
             EntryChange.OID );
         EntryChange entryChange = factory.newControl();
-        factory.decodeValue( entryChange, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( entryChange, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a EntryChangeControl with a wrong changeNumber
      */
-    @Test( expected = DecoderException.class )
+    @Test
     public void testDecodeEntryChangeControlWithWrongChangeNumber() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x1C );
@@ -274,7 +279,11 @@ public class EntryChangeControlTest extends AbstractCodecServiceTest
         EntryChangeFactory factory = ( EntryChangeFactory ) codec.getResponseControlFactories().get( 
             EntryChange.OID );
         EntryChange entryChange = factory.newControl();
-        factory.decodeValue( entryChange, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( entryChange, bb.array() );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/pagedSearch/PagedSearchControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/pagedSearch/PagedSearchControlTest.java
index a1fb013..f2546f6 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/pagedSearch/PagedSearchControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/pagedSearch/PagedSearchControlTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.controls.search.pagedSearch;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Arrays;
@@ -32,20 +33,16 @@ import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.controls.PagedResults;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the PagedSearchControlTest codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class PagedSearchControlTest extends AbstractCodecServiceTest
 {
     /**
@@ -86,7 +83,7 @@ public class PagedSearchControlTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a PagedSearchControl with no cookie
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodePagedSearchRequestNoCookie() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x05 );
@@ -99,14 +96,18 @@ public class PagedSearchControlTest extends AbstractCodecServiceTest
 
         PagedResultsFactory factory = ( PagedResultsFactory ) codec.getResponseControlFactories().get( PagedResults.OID );
         PagedResults pagedSearch = factory.newControl();
-        factory.decodeValue( pagedSearch, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( pagedSearch, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a PagedSearchControl with no size
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodePagedSearchRequestNoSize() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x08 );
@@ -120,14 +121,18 @@ public class PagedSearchControlTest extends AbstractCodecServiceTest
 
         PagedResultsFactory factory = ( PagedResultsFactory ) codec.getResponseControlFactories().get( PagedResults.OID );
         PagedResults pagedSearch = factory.newControl();
-        factory.decodeValue( pagedSearch, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( pagedSearch, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a PagedSearchControl with no size  and no cookie
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodePagedSearchRequestNoSizeNoCookie() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x02 );
@@ -139,7 +144,11 @@ public class PagedSearchControlTest extends AbstractCodecServiceTest
 
         PagedResultsFactory factory = ( PagedResultsFactory ) codec.getResponseControlFactories().get( PagedResults.OID );
         PagedResults pagedSearch = factory.newControl();
-        factory.decodeValue( pagedSearch, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( pagedSearch, bb.array() );
+        } );
     }
 
 
@@ -187,7 +196,7 @@ public class PagedSearchControlTest extends AbstractCodecServiceTest
     /**
      * Test encoding of a PagedSearchControl with a empty size
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testEncodePagedSearchControlEmptySize() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x0a );
@@ -202,7 +211,11 @@ public class PagedSearchControlTest extends AbstractCodecServiceTest
 
         PagedResultsFactory factory = ( PagedResultsFactory ) codec.getResponseControlFactories().get( PagedResults.OID );
         PagedResults pagedSearch = factory.newControl();
-        factory.decodeValue( pagedSearch, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( pagedSearch, bb.array() );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/persistentSearch/PSearchControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/persistentSearch/PSearchControlTest.java
index 4a68c16..0806204 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/persistentSearch/PSearchControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/persistentSearch/PSearchControlTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.controls.search.persistentSearch;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 
@@ -31,20 +32,16 @@ import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.controls.ChangeType;
 import org.apache.directory.api.ldap.model.message.controls.PersistentSearch;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the PSearchControlTest codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class PSearchControlTest extends AbstractCodecServiceTest
 {
     /**
@@ -123,7 +120,7 @@ public class PSearchControlTest extends AbstractCodecServiceTest
      * Test the decoding of a PSearchControl with a changes types which
      * value is 0
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeModifyDNRequestSuccessChangeTypes0() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x0b );
@@ -139,7 +136,11 @@ public class PSearchControlTest extends AbstractCodecServiceTest
         PersistentSearchFactory factory = ( PersistentSearchFactory ) codec.getRequestControlFactories().
             get( PersistentSearch.OID );
         PersistentSearch ctrl = factory.newControl();
-        factory.decodeValue( ctrl, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( ctrl, bb.array() );
+        } );
     }
 
 
@@ -147,7 +148,7 @@ public class PSearchControlTest extends AbstractCodecServiceTest
      * Test the decoding of a PSearchControl with a changes types which
      * value is above 15
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeModifyDNRequestSuccessChangeTypes22() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x0b );
@@ -163,14 +164,18 @@ public class PSearchControlTest extends AbstractCodecServiceTest
         PersistentSearchFactory factory = ( PersistentSearchFactory ) codec.getRequestControlFactories().
             get( PersistentSearch.OID );
         PersistentSearch ctrl = factory.newControl();
-        factory.decodeValue( ctrl, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( ctrl, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a PSearchControl with a null sequence
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeModifyDNRequestSuccessNullSequence() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x02 );
@@ -183,14 +188,18 @@ public class PSearchControlTest extends AbstractCodecServiceTest
         PersistentSearchFactory factory = ( PersistentSearchFactory ) codec.getRequestControlFactories().
             get( PersistentSearch.OID );
         PersistentSearch ctrl = factory.newControl();
-        factory.decodeValue( ctrl, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( ctrl, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a PSearchControl without changeTypes
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeModifyDNRequestSuccessWithoutChangeTypes() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x08 );
@@ -205,14 +214,18 @@ public class PSearchControlTest extends AbstractCodecServiceTest
         PersistentSearchFactory factory = ( PersistentSearchFactory ) codec.getRequestControlFactories().
             get( PersistentSearch.OID );
         PersistentSearch ctrl = factory.newControl();
-        factory.decodeValue( ctrl, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( ctrl, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a PSearchControl without changeOnly
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeModifyDNRequestSuccessWithoutChangesOnly() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x08 );
@@ -227,14 +240,18 @@ public class PSearchControlTest extends AbstractCodecServiceTest
         PersistentSearchFactory factory = ( PersistentSearchFactory ) codec.getRequestControlFactories().
             get( PersistentSearch.OID );
         PersistentSearch ctrl = factory.newControl();
-        factory.decodeValue( ctrl, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( ctrl, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a PSearchControl without returnECs
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeModifyDNRequestSuccessWithoutReturnECs() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x08 );
@@ -249,6 +266,10 @@ public class PSearchControlTest extends AbstractCodecServiceTest
         PersistentSearchFactory factory = ( PersistentSearchFactory ) codec.getRequestControlFactories().
             get( PersistentSearch.OID );
         PersistentSearch ctrl = factory.newControl();
-        factory.decodeValue( ctrl, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( ctrl, bb.array() );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/subentries/SubEntryControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/subentries/SubEntryControlTest.java
index 08811bd..a6beebc 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/subentries/SubEntryControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/search/subentries/SubEntryControlTest.java
@@ -20,8 +20,9 @@
 package org.apache.directory.api.ldap.codec.controls.search.subentries;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 
@@ -30,20 +31,16 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.controls.Subentries;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the SubEntryControlTest codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SubEntryControlTest extends AbstractCodecServiceTest
 {
     /**
@@ -103,7 +100,7 @@ public class SubEntryControlTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SubEntryControl with an empty visibility
      */
-    @Test( expected = DecoderException.class )
+    @Test
     public void testDecodeSubEntryEmptyVisibility() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x02 );
@@ -118,14 +115,18 @@ public class SubEntryControlTest extends AbstractCodecServiceTest
         // Allocate a LdapMessage Container
         SubentriesFactory factory = ( SubentriesFactory ) codec.getRequestControlFactories().get( Subentries.OID );
         Subentries subentries = factory.newControl();
-        factory.decodeValue( subentries, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( subentries, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a bad SubEntryControl
      */
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeSubEntryBad() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x03 );
@@ -140,6 +141,10 @@ public class SubEntryControlTest extends AbstractCodecServiceTest
         // Allocate a LdapMessage Container
         SubentriesFactory factory = ( SubentriesFactory ) codec.getRequestControlFactories().get( Subentries.OID );
         Subentries subentries = factory.newControl();
-        factory.decodeValue( subentries, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( subentries, bb.array() );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/sort/SortRequestControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/sort/SortRequestControlTest.java
index 7963051..0a9b9de 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/sort/SortRequestControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/sort/SortRequestControlTest.java
@@ -20,11 +20,12 @@
 package org.apache.directory.api.ldap.codec.controls.sort;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 
@@ -33,13 +34,16 @@ import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.controls.SortKey;
 import org.apache.directory.api.ldap.model.message.controls.SortRequest;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for SortRequestControl.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
+@Execution( ExecutionMode.CONCURRENT)
 public class SortRequestControlTest extends AbstractCodecServiceTest
 {
     @Test
@@ -132,7 +136,7 @@ public class SortRequestControlTest extends AbstractCodecServiceTest
     }
 
 
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeWithoutAtDesc() throws Exception
     {
         ByteBuffer stream = ByteBuffer.allocate( 16 );
@@ -146,7 +150,11 @@ public class SortRequestControlTest extends AbstractCodecServiceTest
 
         SortRequestFactory factory = ( SortRequestFactory ) codec.getRequestControlFactories().get( SortRequest.OID );
         SortRequest control = factory.newControl();
-        factory.decodeValue( control, stream.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( control, stream.array() );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/sort/SortResponseControlTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/sort/SortResponseControlTest.java
index 9e877da..85ffe04 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/sort/SortResponseControlTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/controls/sort/SortResponseControlTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.controls.sort;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 
@@ -30,13 +31,16 @@ import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.controls.SortResponse;
 import org.apache.directory.api.ldap.model.message.controls.SortResultCode;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Tests for SortResponseControl.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
+@Execution( ExecutionMode.CONCURRENT)
 public class SortResponseControlTest extends AbstractCodecServiceTest
 {
     @Test
@@ -97,7 +101,7 @@ public class SortResponseControlTest extends AbstractCodecServiceTest
     }
 
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testDecodeControlWithWrongResultCode() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x05 );
@@ -111,6 +115,10 @@ public class SortResponseControlTest extends AbstractCodecServiceTest
         SortResponseFactory factory = ( SortResponseFactory ) codec.getResponseControlFactories().
             get( SortResponse.OID );
         SortResponse control = factory.newControl();
-        factory.decodeValue( control, bb.array() );
+
+        assertThrows( IllegalArgumentException.class, ( ) ->
+        {
+            factory.decodeValue( control, bb.array() );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
index e5d2da1..713f338 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelRequestTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.del;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -41,11 +42,9 @@ import org.apache.directory.api.ldap.model.message.DeleteResponseImpl;
 import org.apache.directory.api.ldap.model.message.Message;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -53,8 +52,7 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class DelRequestTest extends AbstractCodecServiceTest
 {
     /**
@@ -102,7 +100,7 @@ public class DelRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a full DelRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeDelRequestBadDN() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x27 );
@@ -124,27 +122,30 @@ public class DelRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
-        try
-        {
-            Asn1Decoder.decode( stream, container );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof DeleteResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( DeleteResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, container );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof DeleteResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( DeleteResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
     /**
      * Test the decoding of an empty DelRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeDelRequestEmpty() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -164,7 +165,10 @@ public class DelRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteRequest> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelRequest PDU
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
index 22d2594..471dfbc 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/del/DelResponseTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.del;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -38,20 +39,16 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.DeleteResponse;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the DelResponse codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class DelResponseTest extends AbstractCodecServiceTest
 {
     /**
@@ -109,7 +106,7 @@ public class DelResponseTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a DelResponse with no LdapResult
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeDelResponseEmptyResult() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -127,7 +124,10 @@ public class DelResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<DeleteResponse> container = new LdapMessageContainer<>( codec );
 
         // Decode a DelResponse message
-        Asn1Decoder.decode( stream, container );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, container );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
index b412ad2..66803a9 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/intermediate/IntermediateResponseTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.intermediate;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -38,20 +39,16 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.IntermediateResponse;
 import org.apache.directory.api.ldap.model.message.controls.PagedResults;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the IntermediateResponse codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class IntermediateResponseTest extends AbstractCodecServiceTest
 {
     /**
@@ -242,7 +239,7 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of an empty IntermediateResponse
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeIntermediateResponseEmpty() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -262,14 +259,17 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of an empty OID
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeEmptyOID() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
@@ -290,14 +290,17 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a bad name
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeExtendedBadRequestName() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x16 );
@@ -320,7 +323,10 @@ public class IntermediateResponseTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a IntermediateResponse PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
index e422da2..4c95a97 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyRequestTest.java
@@ -20,10 +20,11 @@
 package org.apache.directory.api.ldap.codec.modify;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.nio.ByteBuffer;
 import java.util.Collection;
@@ -48,20 +49,16 @@ import org.apache.directory.api.ldap.model.message.ModifyResponseImpl;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the ModifyRequest codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ModifyRequestTest extends AbstractCodecServiceTest
 {
     /**
@@ -157,7 +154,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a ModifyRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestBadDN() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x54 );
@@ -207,20 +204,23 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        try
-        {
-            Asn1Decoder.decode( stream, ldapMessageContainer );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof ModifyResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( ModifyResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, ldapMessageContainer );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof ModifyResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( ModifyResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
@@ -506,7 +506,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a ModifyRequest with an empty body
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestEmptyBody() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -524,14 +524,17 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyRequest with an empty object
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestEmptyObject() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
@@ -550,14 +553,17 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyRequest with an object and nothing else
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestObjectAlone() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x29 );
@@ -579,14 +585,17 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyRequest with an empty modification
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestEmptyModification() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2B );
@@ -609,14 +618,17 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyRequest with an empty operation
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestEmptyOperation() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
@@ -640,14 +652,17 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyRequest with an wrong empty operation
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestWrongOperationEmpty() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2F );
@@ -672,14 +687,17 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyRequest with an wrong operation
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestWrongOperation() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x30 );
@@ -704,7 +722,10 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -712,7 +733,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
      * Test the decoding of a ModifyRequest with an add operation, and nothing
      * more
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestAddOperationEnd() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x30 );
@@ -737,7 +758,10 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -745,7 +769,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
      * Test the decoding of a ModifyRequest with an add operation, and an empty
      * modification
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestAddOperationEmptyModification() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x32 );
@@ -771,7 +795,10 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -779,7 +806,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
      * Test the decoding of a ModifyRequest with an add operation, and a
      * modification with an empty type
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestAddOperationModificationEmptyType() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x34 );
@@ -806,21 +833,24 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        try
+        assertThrows( DecoderException.class, ( ) ->
         {
-            Asn1Decoder.decode( stream, ldapMessageContainer );
-            fail( "We should never reach this point !!!" );
-        }
-        catch ( DecoderException de )
-        {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof ModifyResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, ( ( ModifyResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, ldapMessageContainer );
+                fail( "We should never reach this point !!!" );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof ModifyResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, ( ( ModifyResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
@@ -828,7 +858,7 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
      * Test the decoding of a ModifyRequest with an add operation, and a
      * modification with a type and no vals
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyRequestAddOperationModificationTypeNoVals() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
@@ -856,7 +886,10 @@ public class ModifyRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
index 35ac93a..7f77cc3 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modify/ModifyResponseTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.modify;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -38,20 +39,16 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ModifyResponse;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the ModifyResponse codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ModifyResponseTest extends AbstractCodecServiceTest
 {
     /**
@@ -173,7 +170,7 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a ModifyResponse with no LdapResult
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyResponseEmptyResult() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -191,6 +188,9 @@ public class ModifyResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyResponse message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
index 1cf9134..4308b3f 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNRequestTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.modifyDn;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -41,20 +42,16 @@ import org.apache.directory.api.ldap.model.message.ModifyDnRequest;
 import org.apache.directory.api.ldap.model.message.ModifyDnResponseImpl;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the ModifyDNRequest codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ModifyDNRequestTest extends AbstractCodecServiceTest
 {
     /**
@@ -110,7 +107,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a bad Dn ModifyDNRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyDNRequestBadDN() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x48 );
@@ -138,27 +135,30 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         // Allocate a ModifyRequest Container
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        try
-        {
-            Asn1Decoder.decode( stream, ldapMessageContainer );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof ModifyDnResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( ModifyDnResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, ldapMessageContainer );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof ModifyDnResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( ModifyDnResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
     /**
      * Test the decoding of a bad Rdn ModifyDNRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyDNRequestBadRDN() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x48 );
@@ -186,27 +186,30 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         // Allocate a ModifyRequest Container
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        try
-        {
-            Asn1Decoder.decode( stream, ldapMessageContainer );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof ModifyDnResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( ModifyDnResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, ldapMessageContainer );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof ModifyDnResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( ModifyDnResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
     /**
      * Test the decoding of a bad Rdn ModifyDNRequest
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyDNRequestBadNewSuperior() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x48 );
@@ -234,20 +237,23 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         // Allocate a ModifyRequest Container
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
-        try
+        assertThrows( DecoderException.class, ( ) ->
         {
-            Asn1Decoder.decode( stream, ldapMessageContainer );
-        }
-        catch ( DecoderException de )
-        {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof ModifyDnResponseImpl );
-            assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( ModifyDnResponseImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, ldapMessageContainer );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof ModifyDnResponseImpl );
+                assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( ModifyDnResponseImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
@@ -433,7 +439,7 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a ModifyDNRequest with an empty body
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyDNRequestEmptyBody() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -452,14 +458,17 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyDNRequest with an empty entry
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyDNRequestEmptyEntry() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
@@ -479,14 +488,17 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyDNRequest with an empty newRdn
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyDNRequestEmptyNewRdn() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2D );
@@ -510,14 +522,17 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a ModifyDNRequest with an empty deleteOldRdn
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyDNRequestEmptyDeleteOldRdnn() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x3C );
@@ -543,6 +558,9 @@ public class ModifyDNRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNRequest PDU
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
index c70cb19..c4a2275 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/modifyDn/ModifyDNResponseTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.modifyDn;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -38,20 +39,16 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.ModifyDnResponse;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the ModifyDNResponse codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ModifyDNResponseTest extends AbstractCodecServiceTest
 {
     /**
@@ -173,7 +170,7 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a ModifyDNResponse with no LdapResult
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeModifyDNResponseEmptyResult() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -191,6 +188,9 @@ public class ModifyDNResponseTest extends AbstractCodecServiceTest
         LdapMessageContainer<ModifyDnResponse> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a ModifyDNResponse message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/osgi/AbstractCodecServiceTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/osgi/AbstractCodecServiceTest.java
index 95b33b6..f306792 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/osgi/AbstractCodecServiceTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/osgi/AbstractCodecServiceTest.java
@@ -26,8 +26,7 @@ import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.codec.ProtocolCodecFactory;
 import org.apache.mina.filter.codec.ProtocolDecoder;
 import org.apache.mina.filter.codec.ProtocolEncoder;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.jupiter.api.BeforeEach;
 
 
 /**
@@ -37,7 +36,7 @@ import org.junit.BeforeClass;
  */
 public abstract class AbstractCodecServiceTest
 {
-    protected static DefaultLdapCodecService codec;
+    protected DefaultLdapCodecService codec;
 
     /** The encoder instance */
     protected static LdapEncoder encoder;
@@ -46,11 +45,11 @@ public abstract class AbstractCodecServiceTest
     /**
      * Initialize the codec service
      */
-    @BeforeClass
-    public static void setupLdapCodecService()
+    @BeforeEach
+    public void setupLdapCodecService()
     {
         codec = new DefaultLdapCodecService();
-
+        
         codec.registerProtocolCodecFactory( new ProtocolCodecFactory()
         {
             @Override
@@ -72,14 +71,4 @@ public abstract class AbstractCodecServiceTest
             LdapApiServiceFactory.initialize( codec );
         }
     }
-
-
-    /**
-     * Shutdown the codec service
-     */
-    @AfterClass
-    public static void tearDownLdapCodecService()
-    {
-        codec = null;
-    }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
index 182d4cc..73abfb1 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestMatchingRuleAssertionTest.java
@@ -20,12 +20,12 @@
 package org.apache.directory.api.ldap.codec.search;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-//import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 import java.util.HashMap;
@@ -48,28 +48,24 @@ import org.apache.directory.api.ldap.model.message.SearchRequest;
 import org.apache.directory.api.ldap.model.message.SearchScope;
 import org.apache.directory.api.ldap.model.schema.normalizers.DeepTrimToLowerNormalizer;
 import org.apache.directory.api.ldap.model.schema.normalizers.OidNormalizer;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * A test case for SearchRequest messages
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecServiceTest
 {
     /** An oid normalizer map */
     static Map<String, OidNormalizer> oids = new HashMap<String, OidNormalizer>();
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setUp() throws Exception
     {
         // DC normalizer
@@ -182,7 +178,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
     /**
      * Test the decoding of a SearchRequest with an empty extensible match
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyExtensibleMatch() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -212,7 +208,10 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
 
         // Decode a SearchRequest message
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -220,7 +219,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
      * Test the decoding of a SearchRequest with an extensible match and an
      * empty matching rule
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestExtensibleMatchEmptyMatchingRule() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -250,7 +249,10 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -258,7 +260,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
      * Test the decoding of a SearchRequest with an extensible match and an
      * empty type
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestExtensibleMatchEmptyType() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -288,7 +290,10 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -366,7 +371,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
      * Test the decoding of a SearchRequest with an extensible match and an
      * matching rule and an empty type
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestExtensibleMatchMatchingRuleEmptyType() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -398,7 +403,10 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -406,7 +414,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
      * Test the decoding of a SearchRequest with an extensible match and an
      * matching rule and an empty dnAttributes
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestExtensibleMatchDnAttributesEmptyType() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -456,7 +464,10 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -464,7 +475,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
      * Test the decoding of a SearchRequest with an extensible match and a
      * matching rule and nothing else
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestExtensibleMatchMatchingRuleAlone() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -495,7 +506,10 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -503,7 +517,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
      * Test the decoding of a SearchRequest with an extensible match and a type
      * and nothing else
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestExtensibleMatchTypeAlone() throws DecoderException, EncoderException
     {
         byte[] asn1BER = new byte[]
@@ -534,7 +548,10 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -542,7 +559,7 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
      * Test the decoding of a SearchRequest with an extensible match and a match
      * Value and nothing else
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestExtensibleMatchMatchValueAlone() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -573,6 +590,9 @@ public class SearchRequestMatchingRuleAssertionTest extends AbstractCodecService
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
index ad0a808..b35bf49 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestSubstringTest.java
@@ -20,10 +20,11 @@
 package org.apache.directory.api.ldap.codec.search;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Arrays;
@@ -49,28 +50,24 @@ import org.apache.directory.api.ldap.model.message.SearchScope;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
 import org.apache.directory.api.ldap.model.schema.normalizers.DeepTrimToLowerNormalizer;
 import org.apache.directory.api.ldap.model.schema.normalizers.OidNormalizer;
-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;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * A test case for SearchRequest messages
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchRequestSubstringTest extends AbstractCodecServiceTest
 {
     /** An oid normalizer map */
     static Map<String, OidNormalizer> oids = new HashMap<String, OidNormalizer>();
 
 
-    @BeforeClass
+    @BeforeAll
     public static void setUp() throws Exception
     {
         // DC normalizer
@@ -1054,7 +1051,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SearchRequest with an empty Substring filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptySubstringFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1090,7 +1087,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1098,7 +1098,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter and an empty
      * Substring
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterEmptyType() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1135,7 +1135,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1143,7 +1146,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter and an empty
      * Substring
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterNoSubstrings() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1181,7 +1184,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1189,7 +1195,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter and an empty
      * Substring
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterEmptySubstrings() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1228,7 +1234,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1236,7 +1245,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter and an empty
      * Substring Initial
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterEmptyInitial() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1276,7 +1285,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1284,7 +1296,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter and an empty
      * Substring Any
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterEmptyAny() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1324,7 +1336,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1332,7 +1347,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter and an empty
      * Substring Initial
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterEmptyFinal() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1372,7 +1387,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1380,7 +1398,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter Any before
      * initial
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterAnyInitial() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1423,7 +1441,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1431,7 +1452,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter Final before
      * initial
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterFinalInitial() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1474,7 +1495,10 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1482,7 +1506,7 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Substring filter Final before
      * any
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterFinalAny() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1525,14 +1549,17 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with a Substring filter Two initials
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterTwoInitials() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1575,14 +1602,17 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with a Substring filter Two finals
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestSubstringFilterTwoFinals() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1625,6 +1655,9 @@ public class SearchRequestSubstringTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 }
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
index e46cae0..2ac19f4 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchRequestTest.java
@@ -20,10 +20,11 @@
 package org.apache.directory.api.ldap.codec.search;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.HashMap;
@@ -63,28 +64,24 @@ import org.apache.directory.api.ldap.model.message.SearchScope;
 import org.apache.directory.api.ldap.model.message.controls.Subentries;
 import org.apache.directory.api.ldap.model.schema.normalizers.DeepTrimToLowerNormalizer;
 import org.apache.directory.api.ldap.model.schema.normalizers.OidNormalizer;
-import org.junit.Before;
-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.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * A test case for SearchRequest messages
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchRequestTest extends AbstractCodecServiceTest
 {
     /** An oid normalizer map */
     static Map<String, OidNormalizer> oids = new HashMap<String, OidNormalizer>();
 
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception
     {
         // DC normalizer
@@ -1352,7 +1349,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SearchRequest with an empty body
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyBody() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1371,14 +1368,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty baseDN and nothing more
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestBaseDnOnly() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1398,7 +1398,10 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -1551,7 +1554,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SearchRequest with a bad objectBase
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestGlobalBadObjectBase() throws DecoderException
     {
 
@@ -1624,27 +1627,30 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        try
-        {
-            Asn1Decoder.decode( stream, ldapMessageContainer );
-        }
-        catch ( DecoderException de )
+        assertThrows( DecoderException.class, ( ) ->
         {
-            assertTrue( de instanceof ResponseCarryingException );
-            Message response = ( ( ResponseCarryingException ) de ).getResponse();
-            assertTrue( response instanceof SearchResultDoneImpl );
-            assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( SearchResultDoneImpl ) response ).getLdapResult()
-                .getResultCode() );
-
-            throw de;
-        }
+            try
+            {
+                Asn1Decoder.decode( stream, ldapMessageContainer );
+            }
+            catch ( DecoderException de )
+            {
+                assertTrue( de instanceof ResponseCarryingException );
+                Message response = ( ( ResponseCarryingException ) de ).getResponse();
+                assertTrue( response instanceof SearchResultDoneImpl );
+                assertEquals( ResultCodeEnum.INVALID_DN_SYNTAX, ( ( SearchResultDoneImpl ) response ).getLdapResult()
+                    .getResultCode() );
+    
+                throw de;
+            }
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty scope
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyScope() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1667,14 +1673,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with a bad scope
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestGlobalBadScope() throws DecoderException
     {
 
@@ -1742,14 +1751,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty derefAlias
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyDerefAlias() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1773,14 +1785,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with a bad derefAlias
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestGlobalBadDerefAlias() throws DecoderException
     {
 
@@ -1848,14 +1863,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty size limit
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptySizeLimit() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1880,14 +1898,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with a bad sizeLimit
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestGlobalBadSizeLimit() throws DecoderException
     {
 
@@ -1954,14 +1975,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty time limit
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyTimeLimit() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -1987,14 +2011,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with a bad timeLimit
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestGlobalBadTimeLimit() throws DecoderException
     {
 
@@ -2066,14 +2093,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchRequest> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyTypeOnly() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2100,14 +2130,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2135,14 +2168,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty Present filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyPresentFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2170,14 +2206,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty equalityMatch filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyEqualityMatchFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2205,14 +2244,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty greaterOrEqual filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyGreaterOrEqualFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2240,14 +2282,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty lessOrEqual filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyLessOrEqualFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2275,14 +2320,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an approxMatch filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyApproxMatchFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2310,7 +2358,10 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -2318,7 +2369,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a greaterOrEqual filter and an
      * empty attributeDesc
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyGreaterOrEqualEmptyAttrDesc()
         throws DecoderException
     {
@@ -2348,7 +2399,10 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -2567,7 +2621,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SearchRequest with an empty And filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyAndFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2597,14 +2651,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty Or filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyOrFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2634,14 +2691,17 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchRequest with an empty Not filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestEmptyNotFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2671,7 +2731,10 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -2679,7 +2742,7 @@ public class SearchRequestTest extends AbstractCodecServiceTest
      * Test the decoding of a SearchRequest with a Not filter and an empty And
      * filter
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchRequestNotFilterEmptyAndFilter() throws DecoderException
     {
         byte[] asn1BER = new byte[]
@@ -2711,7 +2774,10 @@ public class SearchRequestTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
index b0e49ce..5ee41cb 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultDoneTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.search;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -39,20 +40,16 @@ import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.SearchResultDone;
 import org.apache.directory.api.ldap.model.message.controls.PagedResults;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the SearchResultDone codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchResultDoneTest extends AbstractCodecServiceTest
 {
     /**
@@ -179,7 +176,7 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SearchResultDone with no LdapResult
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultDoneEmptyResult() throws DecoderException
     {
 
@@ -198,7 +195,10 @@ public class SearchResultDoneTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultDone> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a SearchResultDone message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
index 24d92bd..9b168dd 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultEntryTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.search;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Arrays;
@@ -42,20 +43,16 @@ import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.SearchResultEntry;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the SearchResultEntry codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchResultEntryTest extends AbstractCodecServiceTest
 {
     /**
@@ -313,7 +310,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of an empty SearchResultEntry
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultEntryEmpty() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -333,14 +330,17 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of an SearchResultEntry with an empty object name
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultEntryEmptyObjectName() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
@@ -363,14 +363,17 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of an SearchResultEntry with an object name alone
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultEntryObjectNameAlone() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x24 );
@@ -394,7 +397,10 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -451,7 +457,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of an SearchResultEntry with an empty attributes list
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultEntryEmptyAttributeList() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x28 );
@@ -479,7 +485,10 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
@@ -487,7 +496,7 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
      * Test the decoding of an SearchResultEntry with an empty attributes list
      * with controls
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultEntryEmptyAttributeListWithControls() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x45 );
@@ -520,14 +529,17 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchResultEntry with an empty type
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultEntryEmptyType() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x2A );
@@ -556,14 +568,17 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
     /**
      * Test the decoding of a SearchResultEntry with a type alone
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultEntryTypeAlone() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x35 );
@@ -593,7 +608,10 @@ public class SearchResultEntryTest extends AbstractCodecServiceTest
         LdapMessageContainer<SearchResultEntry> ldapMessageContainer =
             new LdapMessageContainer<>( codec );
 
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
index 003740a..b08101e 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/search/SearchResultReferenceTest.java
@@ -20,11 +20,12 @@
 package org.apache.directory.api.ldap.codec.search;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.nio.ByteBuffer;
 import java.util.HashSet;
@@ -43,20 +44,16 @@ import org.apache.directory.api.ldap.model.message.Referral;
 import org.apache.directory.api.ldap.model.message.SearchResultReference;
 import org.apache.directory.api.ldap.model.message.controls.EntryChange;
 import org.apache.directory.api.util.Strings;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the SearchResultReference codec
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SearchResultReferenceTest extends AbstractCodecServiceTest
 {
     /**
@@ -283,7 +280,7 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SearchResultReference with no reference
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSearchResultReferenceNoReference() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x07 );
@@ -304,7 +301,10 @@ public class SearchResultReferenceTest extends AbstractCodecServiceTest
             new LdapMessageContainer<>( codec );
 
         // Decode a SearchResultReference message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 
 
diff --git a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
index 8d18b5a..7b56c38 100644
--- a/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
+++ b/ldap/codec/core/src/test/java/org/apache/directory/api/ldap/codec/unbind/UnBindRequestTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.codec.unbind;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -37,18 +38,15 @@ import org.apache.directory.api.ldap.codec.osgi.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.model.message.Control;
 import org.apache.directory.api.ldap.model.message.UnbindRequest;
 import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
-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.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class UnBindRequestTest extends AbstractCodecServiceTest
 {
     /**
@@ -138,7 +136,7 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a UnBindRequest with a not null body
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeUnBindRequestNotNull() throws DecoderException
     {
         ByteBuffer stream = ByteBuffer.allocate( 0x09 );
@@ -156,6 +154,9 @@ public class UnBindRequestTest extends AbstractCodecServiceTest
         LdapMessageContainer<UnbindRequest> ldapMessageContainer = new LdapMessageContainer<>( codec );
 
         // Decode a UnbindRequest message
-        Asn1Decoder.decode( stream, ldapMessageContainer );
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            Asn1Decoder.decode( stream, ldapMessageContainer );
+        } );
     }
 }
diff --git a/ldap/codec/standalone/pom.xml b/ldap/codec/standalone/pom.xml
index 6861d2f..993b895 100644
--- a/ldap/codec/standalone/pom.xml
+++ b/ldap/codec/standalone/pom.xml
@@ -43,8 +43,14 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
     
diff --git a/ldap/extras/aci/pom.xml b/ldap/extras/aci/pom.xml
index 278ca6e..d94e9de 100644
--- a/ldap/extras/aci/pom.xml
+++ b/ldap/extras/aci/pom.xml
@@ -32,8 +32,14 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
     
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AllAttributeValuesTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AllAttributeValuesTest.java
index c23f833..d3b84db 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AllAttributeValuesTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AllAttributeValuesTest.java
@@ -20,29 +20,25 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.AllAttributeValuesItem;
 import org.apache.directory.api.ldap.model.schema.AttributeType;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.AllAttributeValues.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_AllAttributeValuesTest
 {
     AllAttributeValuesItem allAttributeValuesA;
@@ -54,7 +50,7 @@ public class ProtectedItem_AllAttributeValuesTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         Set<AttributeType> colA = new HashSet<AttributeType>();
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AttributeTypeTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AttributeTypeTest.java
index 164e009..268803b 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AttributeTypeTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AttributeTypeTest.java
@@ -20,29 +20,25 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.AttributeTypeItem;
 import org.apache.directory.api.ldap.model.schema.AttributeType;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.AttributeType.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_AttributeTypeTest
 {
     AttributeTypeItem attributeTypeA;
@@ -54,7 +50,7 @@ public class ProtectedItem_AttributeTypeTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         Set<AttributeType> colA = new HashSet<AttributeType>();
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AttributeValueTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AttributeValueTest.java
index 7895367..3ce9dcd 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AttributeValueTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_AttributeValueTest.java
@@ -20,30 +20,26 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.AttributeValueItem;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.AttributeValue.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_AttributeValueTest
 {
     AttributeValueItem attributeValueA;
@@ -55,7 +51,7 @@ public class ProtectedItem_AttributeValueTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
 
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_ClassesTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_ClassesTest.java
index 8cb921e..fc82dbd 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_ClassesTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_ClassesTest.java
@@ -20,27 +20,23 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import org.apache.directory.api.ldap.aci.protectedItem.ClassesItem;
 import org.apache.directory.api.ldap.model.filter.ExprNode;
 import org.apache.directory.api.ldap.model.filter.FilterParser;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.Classes.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_ClassesTest
 {
     ClassesItem classesA;
@@ -52,7 +48,7 @@ public class ProtectedItem_ClassesTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         ExprNode filterA = FilterParser.parse( "(&(cn=test)(sn=test))" );
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_MaxImmSubTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_MaxImmSubTest.java
index 79f3314..a9decfe 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_MaxImmSubTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_MaxImmSubTest.java
@@ -20,25 +20,21 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import org.apache.directory.api.ldap.aci.protectedItem.MaxImmSubItem;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.MaxImmSub.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_MaxImmSubTest
 {
     MaxImmSubItem maxValueCountA;
@@ -50,7 +46,7 @@ public class ProtectedItem_MaxImmSubTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         MaxImmSubItem misA = new MaxImmSubItem( 1 );
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_MaxValueCountTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_MaxValueCountTest.java
index 37fe2a7..84311a0 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_MaxValueCountTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_MaxValueCountTest.java
@@ -20,30 +20,26 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.MaxValueCountElem;
 import org.apache.directory.api.ldap.aci.protectedItem.MaxValueCountItem;
 import org.apache.directory.api.ldap.model.schema.AttributeType;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.MaxValueCount.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_MaxValueCountTest
 {
     MaxValueCountItem maxValueCountA;
@@ -55,7 +51,7 @@ public class ProtectedItem_MaxValueCountTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
 
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_RangeOfValuesTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_RangeOfValuesTest.java
index 2c4e50c..67c1c43 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_RangeOfValuesTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_RangeOfValuesTest.java
@@ -20,27 +20,23 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import org.apache.directory.api.ldap.aci.protectedItem.RangeOfValuesItem;
 import org.apache.directory.api.ldap.model.filter.ExprNode;
 import org.apache.directory.api.ldap.model.filter.FilterParser;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.RangeOfValues.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_RangeOfValuesTest
 {
     RangeOfValuesItem rangeOfValuesA;
@@ -52,7 +48,7 @@ public class ProtectedItem_RangeOfValuesTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
 
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_RestrictedByTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_RestrictedByTest.java
index 22e6d3c..7705c9c 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_RestrictedByTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_RestrictedByTest.java
@@ -20,30 +20,26 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.RestrictedByElem;
 import org.apache.directory.api.ldap.aci.protectedItem.RestrictedByItem;
 import org.apache.directory.api.ldap.model.schema.AttributeType;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.RestrictedBy.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_RestrictedByTest
 {
     RestrictedByItem restrictedByA;
@@ -55,7 +51,7 @@ public class ProtectedItem_RestrictedByTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         RestrictedByElem rbiA = new RestrictedByElem( new AttributeType( "aa" ), new AttributeType( "aa" ) );
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_SelfValueTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_SelfValueTest.java
index a0219e5..96588fb 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_SelfValueTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/ProtectedItem_SelfValueTest.java
@@ -20,29 +20,25 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.SelfValueItem;
 import org.apache.directory.api.ldap.model.schema.AttributeType;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ProtectedItem.SelfValue.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ProtectedItem_SelfValueTest
 {
     SelfValueItem selfValueA;
@@ -54,7 +50,7 @@ public class ProtectedItem_SelfValueTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         Set<AttributeType> colA = new HashSet<AttributeType>();
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/UserClass_NameTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/UserClass_NameTest.java
index ec8e9a2..86e5ba6 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/UserClass_NameTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/UserClass_NameTest.java
@@ -20,22 +20,20 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.UserClass.Name;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.api.ldap.model.name.Dn;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 
 /**
@@ -43,8 +41,7 @@ import org.junit.runner.RunWith;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class UserClass_NameTest
 {
     private Name nameA;
@@ -56,7 +53,7 @@ public class UserClass_NameTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws LdapInvalidDnException
     {
         Set<String> dnSetA = new HashSet<>();
@@ -111,7 +108,7 @@ public class UserClass_NameTest
     }
 
 
-    @Ignore( "There is no way this test can succeed, we are hashcoding values in a set...")
+    @Disabled( "There is no way this test can succeed, we are hashcoding values in a set...")
     @Test
     public void testHashCodeSymmetric() throws Exception
     {
@@ -129,7 +126,7 @@ public class UserClass_NameTest
     }
 
 
-    @Ignore( "There is no way this test can succeed, we are hashcoding values in a set...")
+    @Disabled( "There is no way this test can succeed, we are hashcoding values in a set...")
     @Test
     public void testHashCodeTransitive() throws Exception
     {
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/UserClass_SubtreeTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/UserClass_SubtreeTest.java
index 160672f..adce38d 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/UserClass_SubtreeTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/UserClass_SubtreeTest.java
@@ -20,31 +20,26 @@
 package org.apache.directory.api.ldap.aci;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.UserClass.Subtree;
 import org.apache.directory.api.ldap.model.name.Dn;
 import org.apache.directory.api.ldap.model.subtree.BaseSubtreeSpecification;
 import org.apache.directory.api.ldap.model.subtree.SubtreeSpecification;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class UserClass.Subtree.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class UserClass_SubtreeTest
 {
     Subtree subtreeA;
@@ -56,7 +51,7 @@ public class UserClass_SubtreeTest
     /**
      * Initialize name instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         SubtreeSpecification subtreeSpecA = new BaseSubtreeSpecification();
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/AttributeValueItemTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/AttributeValueItemTest.java
index 5206e7e..0c22202 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/AttributeValueItemTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/AttributeValueItemTest.java
@@ -20,31 +20,27 @@
 package org.apache.directory.api.ldap.aci.protectedItem;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.AttributeValueItem;
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
 import org.apache.directory.api.ldap.model.filter.UndefinedNode;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class AttributeValueItem.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AttributeValueItemTest
 {
     AttributeValueItem attributeValueItemA;
@@ -61,7 +57,7 @@ public class AttributeValueItemTest
     /**
      * Initialize maxValueCountItem instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         attributeA = new HashSet<Attribute>();
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/ClassesItemTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/ClassesItemTest.java
index fe9afa5..8b94303 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/ClassesItemTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/ClassesItemTest.java
@@ -20,27 +20,23 @@
 package org.apache.directory.api.ldap.aci.protectedItem;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import org.apache.directory.api.ldap.aci.protectedItem.ClassesItem;
 import org.apache.directory.api.ldap.model.filter.SubstringNode;
 import org.apache.directory.api.ldap.model.filter.UndefinedNode;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class ClassesItem.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class ClassesItemTest
 {
     ClassesItem classesItemA;
@@ -52,7 +48,7 @@ public class ClassesItemTest
     /**
      * Initialize classesItem instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         classesItemA = new ClassesItem( new SubstringNode( "aa" ) );
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/MaxImmSubItemTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/MaxImmSubItemTest.java
index 8c358d6..4487912 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/MaxImmSubItemTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/MaxImmSubItemTest.java
@@ -20,26 +20,22 @@
 package org.apache.directory.api.ldap.aci.protectedItem;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import org.apache.directory.api.ldap.aci.protectedItem.MaxImmSubItem;
 import org.apache.directory.api.ldap.model.filter.UndefinedNode;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class MaxImmSubItem.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class MaxImmSubItemTest
 {
     MaxImmSubItem maxImmSubItemA;
@@ -51,7 +47,7 @@ public class MaxImmSubItemTest
     /**
      * Initialize maxImmSubItem instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         maxImmSubItemA = new MaxImmSubItem( 1 );
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/MaxValueCountItemTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/MaxValueCountItemTest.java
index 0b6beb4..9268d2d 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/MaxValueCountItemTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/MaxValueCountItemTest.java
@@ -20,31 +20,27 @@
 package org.apache.directory.api.ldap.aci.protectedItem;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.MaxValueCountElem;
 import org.apache.directory.api.ldap.aci.protectedItem.MaxValueCountItem;
 import org.apache.directory.api.ldap.model.filter.UndefinedNode;
 import org.apache.directory.api.ldap.model.schema.AttributeType;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class MaxValueCountItem.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class MaxValueCountItemTest
 {
     MaxValueCountItem maxValueCountItemA;
@@ -61,7 +57,7 @@ public class MaxValueCountItemTest
     /**
      * Initialize maxValueCountItem instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         itemsA = new HashSet<MaxValueCountElem>();
diff --git a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/RestrictedByItemTest.java b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/RestrictedByItemTest.java
index c2460dc..99efd2d 100644
--- a/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/RestrictedByItemTest.java
+++ b/ldap/extras/aci/src/test/java/org/apache/directory/api/ldap/aci/protectedItem/RestrictedByItemTest.java
@@ -20,31 +20,27 @@
 package org.apache.directory.api.ldap.aci.protectedItem;
 
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
-
 import org.apache.directory.api.ldap.aci.protectedItem.RestrictedByElem;
 import org.apache.directory.api.ldap.aci.protectedItem.RestrictedByItem;
 import org.apache.directory.api.ldap.model.filter.UndefinedNode;
 import org.apache.directory.api.ldap.model.schema.AttributeType;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Unit tests class RestrictedByItem.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class RestrictedByItemTest
 {
     RestrictedByItem restrictedByItemA;
@@ -61,7 +57,7 @@ public class RestrictedByItemTest
     /**
      * Initialize maxValueCountItem instances
      */
-    @Before
+    @BeforeEach
     public void initNames() throws Exception
     {
         elemsA = new HashSet<RestrictedByElem>();
diff --git a/ldap/extras/codec-api/pom.xml b/ldap/extras/codec-api/pom.xml
index b5318f7..7471667 100644
--- a/ldap/extras/codec-api/pom.xml
+++ b/ldap/extras/codec-api/pom.xml
@@ -35,8 +35,14 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
 
diff --git a/ldap/extras/codec/pom.xml b/ldap/extras/codec/pom.xml
index f0e69ba..0613ff0 100644
--- a/ldap/extras/codec/pom.xml
+++ b/ldap/extras/codec/pom.xml
@@ -38,8 +38,14 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.directory.junit</groupId>
-      <artifactId>junit-addons</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.junit.platform</groupId>
+      <artifactId>junit-platform-runner</artifactId>
       <scope>test</scope>
     </dependency>
 
@@ -89,6 +95,13 @@
               ${project.build.directory}/osgi-cache
             </org.osgi.framework.storage>
           </systemPropertyVariables>
+          <parallel>all</parallel>
+          <threadCount>10</threadCount>
+          <properties>
+            <configurationParameters>
+              junit.jupiter.execution.parallel.enabled=true
+            </configurationParameters>
+          </properties>
         </configuration>
       </plugin>
 
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/AbstractCodecServiceTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/AbstractCodecServiceTest.java
index a120c1c..acc69c9 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/AbstractCodecServiceTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/AbstractCodecServiceTest.java
@@ -22,8 +22,6 @@ package org.apache.directory.api.ldap.extras;
 
 import org.apache.directory.api.ldap.codec.api.LdapApiService;
 import org.apache.directory.api.ldap.codec.osgi.DefaultLdapCodecService;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 
 
 /**
@@ -33,25 +31,5 @@ import org.junit.BeforeClass;
  */
 public abstract class AbstractCodecServiceTest
 {
-    protected static LdapApiService codec;
-
-
-    /**
-     * Initialize the codec service
-     */
-    @BeforeClass
-    public static void setupLdapCodecService()
-    {
-        codec = new DefaultLdapCodecService();
-    }
-
-
-    /**
-     * Shutdown the codec service
-     */
-    @AfterClass
-    public static void tearDownLdapCodecService()
-    {
-        codec = null;
-    }
+    protected static LdapApiService codec = new DefaultLdapCodecService();
 }
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdDirSyncRequestControlTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdDirSyncRequestControlTest.java
index 60df0f6..512299d 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdDirSyncRequestControlTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdDirSyncRequestControlTest.java
@@ -20,8 +20,9 @@
 package org.apache.directory.api.ldap.extras.controls.ad;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 
@@ -31,13 +32,11 @@ import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.controls.ad_impl.AdDirSyncRequestFactory;
 import org.apache.directory.api.util.Strings;
-import org.junit.Before;
-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.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  *
@@ -45,12 +44,11 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AdDirSyncRequestControlTest extends AbstractCodecServiceTest
 {
-    @Before
-    public void init()
+    @BeforeAll
+    public static void init()
     {
         codec.registerRequestControl( new AdDirSyncRequestFactory( codec ) );
     }
@@ -123,7 +121,7 @@ public class AdDirSyncRequestControlTest extends AbstractCodecServiceTest
     }
 
 
-    @Test( expected=DecoderException.class )
+    @Test
     public void testAdDirSyncControlAbsentCookie() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x08 );
@@ -140,11 +138,15 @@ public class AdDirSyncRequestControlTest extends AbstractCodecServiceTest
         AdDirSyncRequestFactory factory = ( AdDirSyncRequestFactory ) codec.getRequestControlFactories().
             get( AdDirSyncRequest.OID );
         AdDirSyncRequest adDirSyncRequest = factory.newControl();
-        factory.decodeValue( adDirSyncRequest, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( adDirSyncRequest, bb.array() );
+        } );
     }
 
 
-    @Test( expected=DecoderException.class )
+    @Test
     public void testAdDirSyncControlAbsentParentFirst() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x07 );
@@ -161,11 +163,15 @@ public class AdDirSyncRequestControlTest extends AbstractCodecServiceTest
         AdDirSyncRequestFactory factory = ( AdDirSyncRequestFactory ) codec.getRequestControlFactories().
             get( AdDirSyncRequest.OID );
         AdDirSyncRequest adDirSyncRequest = factory.newControl();
-        factory.decodeValue( adDirSyncRequest, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( adDirSyncRequest, bb.array() );
+        } );
     }
 
 
-    @Test( expected=DecoderException.class )
+    @Test
     public void testAdDirSyncControlEmpty() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x02 );
@@ -180,6 +186,10 @@ public class AdDirSyncRequestControlTest extends AbstractCodecServiceTest
         AdDirSyncRequestFactory factory = ( AdDirSyncRequestFactory ) codec.getRequestControlFactories().
             get( AdDirSyncRequest.OID );
         AdDirSyncRequest adDirSyncRequest = factory.newControl();
-        factory.decodeValue( adDirSyncRequest, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( adDirSyncRequest, bb.array() );
+        } );
     }
 }
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdDirSyncResponseControlTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdDirSyncResponseControlTest.java
index 8115d31..5909e59 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdDirSyncResponseControlTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdDirSyncResponseControlTest.java
@@ -20,8 +20,9 @@
 package org.apache.directory.api.ldap.extras.controls.ad;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 import java.util.EnumSet;
@@ -32,13 +33,10 @@ import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.controls.ad_impl.AdDirSyncResponseFactory;
 import org.apache.directory.api.util.Strings;
-import org.junit.Before;
-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.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  *
@@ -46,14 +44,13 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AdDirSyncResponseControlTest extends AbstractCodecServiceTest
 {
-    @Before
+    @BeforeEach
     public void init()
     {
-        codec.registerRequestControl( new AdDirSyncResponseFactory( codec ) );
+        codec.registerResponseControl( new AdDirSyncResponseFactory( codec ) );
     }
     
     
@@ -73,7 +70,7 @@ public class AdDirSyncResponseControlTest extends AbstractCodecServiceTest
 
         bb.flip();
 
-        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getRequestControlFactories().
+        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getResponseControlFactories().
             get( AdDirSyncResponse.OID );
         AdDirSyncResponse adDirSyncResponse = factory.newControl();
         factory.decodeValue( adDirSyncResponse, bb.array() );
@@ -109,7 +106,7 @@ public class AdDirSyncResponseControlTest extends AbstractCodecServiceTest
 
         bb.flip();
 
-        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getRequestControlFactories().
+        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getResponseControlFactories().
             get( AdDirSyncResponse.OID );
         AdDirSyncResponse adDirSyncResponse = factory.newControl();
         factory.decodeValue( adDirSyncResponse, bb.array() );
@@ -127,7 +124,7 @@ public class AdDirSyncResponseControlTest extends AbstractCodecServiceTest
     }
 
 
-    @Test( expected=DecoderException.class )
+    @Test
     public void testAdDirSyncControlAbsentCookie() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x08 );
@@ -141,14 +138,18 @@ public class AdDirSyncResponseControlTest extends AbstractCodecServiceTest
 
         bb.flip();
 
-        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getRequestControlFactories().
+        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getResponseControlFactories().
             get( AdDirSyncResponse.OID );
         AdDirSyncResponse adDirSyncResponse = factory.newControl();
-        factory.decodeValue( adDirSyncResponse, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( adDirSyncResponse, bb.array() );
+        } );
     }
 
 
-    @Test( expected=DecoderException.class )
+    @Test
     public void testAdDirSyncControlAbsentParentFirst() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x07 );
@@ -162,14 +163,18 @@ public class AdDirSyncResponseControlTest extends AbstractCodecServiceTest
 
         bb.flip();
 
-        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getRequestControlFactories().
+        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getResponseControlFactories().
             get( AdDirSyncResponse.OID );
         AdDirSyncResponse adDirSyncResponse = factory.newControl();
-        factory.decodeValue( adDirSyncResponse, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( adDirSyncResponse, bb.array() );
+        } );
     }
 
 
-    @Test( expected=DecoderException.class )
+    @Test
     public void testAdDirSyncControlEmpty() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x02 );
@@ -181,9 +186,13 @@ public class AdDirSyncResponseControlTest extends AbstractCodecServiceTest
 
         bb.flip();
 
-        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getRequestControlFactories().
+        AdDirSyncResponseFactory factory = ( AdDirSyncResponseFactory ) codec.getResponseControlFactories().
             get( AdDirSyncResponse.OID );
         AdDirSyncResponse adDirSyncResponse = factory.newControl();
-        factory.decodeValue( adDirSyncResponse, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( adDirSyncResponse, bb.array() );
+        } );
     }
 }
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdPolicyHintsControlTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdPolicyHintsControlTest.java
index e88dd13..339bab6 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdPolicyHintsControlTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ad/AdPolicyHintsControlTest.java
@@ -20,8 +20,9 @@
 package org.apache.directory.api.ldap.extras.controls.ad;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 
@@ -30,13 +31,10 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.controls.ad_impl.AdPolicyHintsFactory;
-import org.junit.Before;
-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.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  *
@@ -44,18 +42,17 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class AdPolicyHintsControlTest extends AbstractCodecServiceTest
 {
-    @Before
+    @BeforeEach
     public void init()
     {
         codec.registerRequestControl( new AdPolicyHintsFactory( codec ) );
     }
     
     
-    @Test( expected=DecoderException.class )
+    @Test
     public void testAdPolicyHiontsControlNoFlag() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x02 );
@@ -70,11 +67,15 @@ public class AdPolicyHintsControlTest extends AbstractCodecServiceTest
         AdPolicyHintsFactory factory = ( AdPolicyHintsFactory ) codec.getRequestControlFactories().
             get( AdPolicyHints.OID );
         AdPolicyHints adPolicyHints = factory.newControl();
-        factory.decodeValue( adPolicyHints, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( adPolicyHints, bb.array() );
+        } );
     }
 
 
-    @Test( expected=DecoderException.class )
+    @Test
     public void testAdPolicyHiontsControlEmptyFlag() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x04 );
@@ -90,7 +91,11 @@ public class AdPolicyHintsControlTest extends AbstractCodecServiceTest
         AdPolicyHintsFactory factory = ( AdPolicyHintsFactory ) codec.getRequestControlFactories().
             get( AdPolicyHints.OID );
         AdPolicyHints adPolicyHints = factory.newControl();
-        factory.decodeValue( adPolicyHints, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( adPolicyHints, bb.array() );
+        } );
     }
 
 
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ppolicy/PasswordPolicyResponseTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ppolicy/PasswordPolicyResponseTest.java
index d3d338d..b0d2523 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ppolicy/PasswordPolicyResponseTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/ppolicy/PasswordPolicyResponseTest.java
@@ -21,9 +21,9 @@
 package org.apache.directory.api.ldap.extras.controls.ppolicy;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.nio.ByteBuffer;
 
@@ -32,18 +32,20 @@ import org.apache.directory.api.asn1.EncoderException;
 import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.controls.ppolicy_impl.PasswordPolicyResponseFactory;
-import org.junit.Before;
-import org.junit.Test;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * PasswordPolicyResponseControlTest.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
+@Execution( ExecutionMode.CONCURRENT)
 public class PasswordPolicyResponseTest extends AbstractCodecServiceTest
 {
-    @Before
+    @BeforeEach
     public void init()
     {
         codec.registerResponseControl( new PasswordPolicyResponseFactory( codec ) );
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncDoneValueControlTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncDoneValueControlTest.java
index cae7be6..f29864a 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncDoneValueControlTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncDoneValueControlTest.java
@@ -20,11 +20,11 @@
 package org.apache.directory.api.ldap.extras.controls.syncrepl_impl;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 
@@ -34,13 +34,10 @@ import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.controls.syncrepl.syncDone.SyncDoneValue;
 import org.apache.directory.api.util.Strings;
-import org.junit.Before;
-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.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * 
@@ -48,11 +45,10 @@ import com.mycila.junit.concurrent.ConcurrentJunitRunner;
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SyncDoneValueControlTest extends AbstractCodecServiceTest
 {
-    @Before
+    @BeforeEach
     public void init()
     {
         codec.registerResponseControl( new SyncDoneValueFactory( codec ) );
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncRequestValueControlTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncRequestValueControlTest.java
index bc639bf..99f9a1c 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncRequestValueControlTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncRequestValueControlTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.extras.controls.syncrepl_impl;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 
@@ -33,24 +34,20 @@ import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.controls.SynchronizationModeEnum;
 import org.apache.directory.api.ldap.extras.controls.syncrepl.syncRequest.SyncRequestValue;
 import org.apache.directory.api.util.Strings;
-import org.junit.Before;
-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.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the SyncRequestControlValue codec
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SyncRequestValueControlTest extends AbstractCodecServiceTest
 {
-    @Before
+    @BeforeEach
     public void init()
     {
         codec.registerRequestControl( new SyncRequestValueFactory( codec ) );
@@ -360,7 +357,7 @@ public class SyncRequestValueControlTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SyncRequestValue control with an empty sequence
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSyncRequestValueControlEmptySequence() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x02 );
@@ -373,14 +370,18 @@ public class SyncRequestValueControlTest extends AbstractCodecServiceTest
         SyncRequestValueFactory factory = ( SyncRequestValueFactory ) codec.getRequestControlFactories().
             get( SyncRequestValue.OID );
         SyncRequestValue syncRequestValue = factory.newControl();
-        factory.decodeValue( syncRequestValue, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( syncRequestValue, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a SyncRequestValue control with no mode
      */
-    @Test( expected=DecoderException.class )
+    @Test
     public void testDecodeSyncRequestValueControlNoMode() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x07 );
@@ -395,6 +396,10 @@ public class SyncRequestValueControlTest extends AbstractCodecServiceTest
         SyncRequestValueFactory factory = ( SyncRequestValueFactory ) codec.getRequestControlFactories().
             get( SyncRequestValue.OID );
         SyncRequestValue syncRequestValue = factory.newControl();
-        factory.decodeValue( syncRequestValue, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( syncRequestValue, bb.array() );
+        } );
     }
 }
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncStateValueControlTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncStateValueControlTest.java
index 5cb2443..3a37eef 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncStateValueControlTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/syncrepl_impl/SyncStateValueControlTest.java
@@ -20,9 +20,10 @@
 package org.apache.directory.api.ldap.extras.controls.syncrepl_impl;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.nio.ByteBuffer;
 
@@ -33,24 +34,20 @@ import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.controls.syncrepl.syncState.SyncStateTypeEnum;
 import org.apache.directory.api.ldap.extras.controls.syncrepl.syncState.SyncStateValue;
 import org.apache.directory.api.util.Strings;
-import org.junit.Before;
-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.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * Test the SyncStateControlValue codec
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@RunWith(ConcurrentJunitRunner.class)
-@Concurrency()
+@Execution( ExecutionMode.CONCURRENT)
 public class SyncStateValueControlTest extends AbstractCodecServiceTest
 {
-    @Before
+    @BeforeEach
     public void init()
     {
         codec.registerResponseControl( new SyncStateValueFactory( codec ) );
@@ -182,7 +179,7 @@ public class SyncStateValueControlTest extends AbstractCodecServiceTest
     /**
      * Test the decoding of a SyncStateValue control with an empty sequence
      */
-    @Test( expected = DecoderException.class )
+    @Test
     public void testDecodeSyncStateValueControlEmptySequence() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x02 );
@@ -195,14 +192,18 @@ public class SyncStateValueControlTest extends AbstractCodecServiceTest
         SyncStateValueFactory factory = ( SyncStateValueFactory ) codec.getResponseControlFactories().
             get( SyncStateValue.OID );
         SyncStateValue syncStateValue = factory.newControl();
-        factory.decodeValue( syncStateValue, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( syncStateValue, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a SyncStateValue control with no syncState
      */
-    @Test( expected = DecoderException.class )
+    @Test
     public void testDecodeSyncStateValueControlNoSyancState() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x07 );
@@ -217,14 +218,18 @@ public class SyncStateValueControlTest extends AbstractCodecServiceTest
         SyncStateValueFactory factory = ( SyncStateValueFactory ) codec.getResponseControlFactories().
             get( SyncStateValue.OID );
         SyncStateValue syncStateValue = factory.newControl();
-        factory.decodeValue( syncStateValue, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( syncStateValue, bb.array() );
+        } );
     }
 
 
     /**
      * Test the decoding of a SyncStateValue control with no syncUUID
      */
-    @Test( expected = DecoderException.class )
+    @Test
     public void testDecodeSyncStateValueControlNoSyncUUID() throws DecoderException
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x05 );
@@ -240,7 +245,11 @@ public class SyncStateValueControlTest extends AbstractCodecServiceTest
         SyncStateValueFactory factory = ( SyncStateValueFactory ) codec.getResponseControlFactories().
             get( SyncStateValue.OID );
         SyncStateValue syncStateValue = factory.newControl();
-        factory.decodeValue( syncStateValue, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( syncStateValue, bb.array() );
+        } );
     }
 
 
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/vlv/VLVRequestControlTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/vlv/VLVRequestControlTest.java
index 32c5842..4668599 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/vlv/VLVRequestControlTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/vlv/VLVRequestControlTest.java
@@ -21,10 +21,11 @@
 package org.apache.directory.api.ldap.extras.controls.vlv;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 
@@ -34,18 +35,20 @@ import org.apache.directory.api.asn1.util.Asn1Buffer;
 import org.apache.directory.api.ldap.extras.AbstractCodecServiceTest;
 import org.apache.directory.api.ldap.extras.controls.vlv_impl.VirtualListViewRequestFactory;
 import org.apache.directory.api.util.Strings;
-import org.junit.Before;
-import org.junit.Test;
-
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
 
 /**
  * VLV request control tests.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
+@Execution( ExecutionMode.CONCURRENT)
 public class VLVRequestControlTest extends AbstractCodecServiceTest
 {
-    @Before
+    @BeforeEach
     public void init()
     {
         codec.registerRequestControl( new VirtualListViewRequestFactory( codec ) );
@@ -306,7 +309,7 @@ public class VLVRequestControlTest extends AbstractCodecServiceTest
     }
 
 
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeEmptySequence() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x2 );
@@ -321,11 +324,15 @@ public class VLVRequestControlTest extends AbstractCodecServiceTest
         VirtualListViewRequestFactory factory = ( VirtualListViewRequestFactory ) codec.getRequestControlFactories().
             get( VirtualListViewRequest.OID );
         VirtualListViewRequest virtualListView = factory.newControl();
-        factory.decodeValue( virtualListView, bb.array() );
+
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( virtualListView, bb.array() );
+        } );
     }
 
 
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeNoBeforeCount() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x13 );
@@ -347,11 +354,15 @@ public class VLVRequestControlTest extends AbstractCodecServiceTest
         VirtualListViewRequestFactory factory = ( VirtualListViewRequestFactory ) codec.getRequestControlFactories().
             get( VirtualListViewRequest.OID );
         VirtualListViewRequest virtualListView = factory.newControl();
-        factory.decodeValue( virtualListView, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( virtualListView, bb.array() );
+        } );
     }
 
 
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeNoTarget() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x0E );
@@ -370,11 +381,15 @@ public class VLVRequestControlTest extends AbstractCodecServiceTest
         VirtualListViewRequestFactory factory = ( VirtualListViewRequestFactory ) codec.getRequestControlFactories().
             get( VirtualListViewRequest.OID );
         VirtualListViewRequest virtualListView = factory.newControl();
-        factory.decodeValue( virtualListView, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( virtualListView, bb.array() );
+        } );
     }
 
 
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeEmptyByOffset() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x10 );
@@ -394,7 +409,11 @@ public class VLVRequestControlTest extends AbstractCodecServiceTest
         VirtualListViewRequestFactory factory = ( VirtualListViewRequestFactory ) codec.getRequestControlFactories().
             get( VirtualListViewRequest.OID );
         VirtualListViewRequest virtualListView = factory.newControl();
-        factory.decodeValue( virtualListView, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( virtualListView, bb.array() );
+        } );
     }
 
 
@@ -435,7 +454,7 @@ public class VLVRequestControlTest extends AbstractCodecServiceTest
     }
 
 
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeByOffsetNoOffsetOrContentCount() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x13 );
@@ -457,11 +476,15 @@ public class VLVRequestControlTest extends AbstractCodecServiceTest
         VirtualListViewRequestFactory factory = ( VirtualListViewRequestFactory ) codec.getRequestControlFactories().
             get( VirtualListViewRequest.OID );
         VirtualListViewRequest virtualListView = factory.newControl();
-        factory.decodeValue( virtualListView, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( virtualListView, bb.array() );
+        } );
     }
 
 
-    @Test(expected = DecoderException.class)
+    @Test
     public void testDecodeByOffsetWrongOffset() throws Exception
     {
         ByteBuffer bb = ByteBuffer.allocate( 0x16 );
@@ -484,6 +507,10 @@ public class VLVRequestControlTest extends AbstractCodecServiceTest
         VirtualListViewRequestFactory factory = ( VirtualListViewRequestFactory ) codec.getRequestControlFactories().
             get( VirtualListViewRequest.OID );
         VirtualListViewRequest virtualListView = factory.newControl();
-        factory.decodeValue( virtualListView, bb.array() );
+        
+        assertThrows( DecoderException.class, ( ) ->
+        {
+            factory.decodeValue( virtualListView, bb.array() );
+        } );
     }
 }
diff --git a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/vlv/VLVResponseControlTest.java b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/vlv/VLVResponseControlTest.java
index 630bea6..f8b2269 100644
--- a/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/vlv/VLVResponseControlTest.java
+++ b/ldap/extras/codec/src/test/java/org/apache/directory/api/ldap/extras/controls/vlv/VLVResponseControlTest.java
@@ -21,8 +21,9 @@
 package org.apache.directory.api.ldap.extras.controls.vlv;
 
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
... 11790 lines suppressed ...