diff --git a/jaxrs-tck-docs/userguide/src/main/jbake/content/attributes.conf b/jaxrs-tck-docs/userguide/src/main/jbake/content/attributes.conf
index e7352a9..d462414 100644
--- a/jaxrs-tck-docs/userguide/src/main/jbake/content/attributes.conf
+++ b/jaxrs-tck-docs/userguide/src/main/jbake/content/attributes.conf
@@ -26,6 +26,7 @@
 :MavenVersion: 3.6.3+
 :JakartaEEVersion: 10
 :excludeListFileName: jaxrs-tck-docs/TCK-Exclude-List.txt
+:groupsExample: xml_binding
 :TCKPackageName: jakarta-restful-ws-tck-x.y.z.zip
 // Directory names used in examples in using.adoc.
 :sigTestDirectoryExample: ee.jakarta.tck.ws.rs.signaturetest.jaxrs
diff --git a/jaxrs-tck-docs/userguide/src/main/jbake/content/using-examples.inc b/jaxrs-tck-docs/userguide/src/main/jbake/content/using-examples.inc
index da42a04..f989877 100644
--- a/jaxrs-tck-docs/userguide/src/main/jbake/content/using-examples.inc
+++ b/jaxrs-tck-docs/userguide/src/main/jbake/content/using-examples.inc
@@ -17,10 +17,27 @@
 --
 [source,oac_no_warn]
 ----
-mvn verify -DexcludedGroups="xml_binding"
+mvn verify -DexcludedGroups=xml_binding
+----
+--
+Run only the optional jaxb tests using the following command:
+
+--
+[source,oac_no_warn]
+----
+mvn verify -Dgroups=xml_binding
 ----
 --
 
+Run the tests by excluding the security & servlet tests using the following 
+command:
+
+--
+[source,oac_no_warn]
+----
+mvn verify -DexcludedGroups=security,servlet
+----
+--
 
 [[GCMCU]]
 
diff --git a/jaxrs-tck-docs/userguide/src/main/jbake/content/using.adoc b/jaxrs-tck-docs/userguide/src/main/jbake/content/using.adoc
index 4b181b0..a7db87c 100644
--- a/jaxrs-tck-docs/userguide/src/main/jbake/content/using.adoc
+++ b/jaxrs-tck-docs/userguide/src/main/jbake/content/using.adoc
@@ -96,7 +96,6 @@
 * link:#GBFWK[Section 5.2.1, "To Run a Subset of Tests in Command-Line Mode"]
 
 
-
 [[GBFWK]][[to-run-a-subset-of-tests-in-command-line-mode]]
 
 5.2.1 To Run a Subset of Tests in Command-Line Mode
@@ -111,6 +110,46 @@
 
 The tests in the directory and its subdirectories are run.
 
+[NOTE]
+=======================================================================
+
+The Junit test tags(groups) available in the TCK are `xml_binding`, 
+`security` and `servlet`. These can be used to select or deselect the 
+tests for the execution.
+
+=======================================================================
+
+[[GBFQA]][[to-run-a-group-of-tests-in-command-line-mode]]
+
+5.2.2 To Run a Group of Tests in Command-Line Mode
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Start the test run by executing the following command: +
+
+[source,subs="attributes"]
+----
+mvn verify -Dgroups={groupsExample}
+----
+
+Only the tests in the group +{groupsExample}+ is run. 
+Multiple groups can be separated by comma.
+
+
+[[GBFEP]][[to-exclude-a-group-of-tests-in-command-line-mode]]
+
+5.2.3 To Exclude a Group of Tests in Command-Line Mode
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Start the test run by executing the following command: +
+
+[source,subs="attributes"]
+----
+mvn verify -DexcludedGroups={groupsExample}
+----
+
+The tests in the group +{groupsExample}+ is exclued from the run. 
+Multiple groups can be separated by comma.
+
 [[GCLRR]][[running-the-tck-against-the-ri]]
 
 5.3 Running the TCK Against another CI
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/container/requestcontext/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/container/requestcontext/JAXRSClientIT.java
index a731c03..dc3d48a 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/container/requestcontext/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/container/requestcontext/JAXRSClientIT.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -42,6 +42,7 @@
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.AfterEach;
 
 /*
@@ -97,6 +98,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void abortWithTest() throws Fault {
     invokeRequestAndCheckResponse(ContextOperation.ABORTWITH);
   }
@@ -113,8 +115,9 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getAcceptableLanguagesTest() throws Fault {
-    setProperty(Property.REQUEST_HEADERS, "Accpet-Language:en-us");
+    setProperty(Property.REQUEST_HEADERS, "Accept-Language:en-us");
     invokeRequestAndCheckResponse(ContextOperation.GETACCEPTABLELANGUAGES);
   }
 
@@ -130,6 +133,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getAcceptableLanguagesIsSortedTest() throws Fault {
     logMsg(
         "Check the #getAcceptableLanguages is sorted according to their q-value");
@@ -153,6 +157,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getAcceptableLanguagesIsReadOnlyTest() throws Fault {
     setProperty(Property.REQUEST_HEADERS,
         "Accept-Language: da, en-gb;q=0.6, en-us;q=0.7");
@@ -173,6 +178,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getAcceptableMediaTypesTest() throws Fault {
     setProperty(Property.REQUEST_HEADERS,
         buildAccept(MediaType.APPLICATION_JSON_TYPE));
@@ -192,6 +198,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getAcceptableMediaTypesIsSortedTest() throws Fault {
     logMsg(
         "Check the #getAcceptableMediaTypes is sorted according to their q-value");
@@ -217,6 +224,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getAcceptableMediaTypesIsReadOnlyTest() throws Fault {
     setProperty(Property.REQUEST_HEADERS, buildAccept(MediaType.TEXT_XML_TYPE));
     setProperty(Property.UNEXPECTED_RESPONSE_MATCH, MediaType.APPLICATION_JSON);
@@ -235,6 +243,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getCookiesTest() throws Fault {
     String[] cookies = { "cookie1", "coookkkie99", "cookiiieee999" };
     for (String cookie : cookies) {
@@ -258,6 +267,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getCookiesIsReadonlyTest() throws Fault {
     setPrintEntity(true);
     invokeRequestAndCheckResponse(ContextOperation.GETCOOKIESISREADONLY);
@@ -274,6 +284,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getDateTest() throws Fault {
     Calendar calendar = Calendar.getInstance();
     calendar.set(Calendar.MILLISECOND, 0);
@@ -296,6 +307,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getDateIsNullTest() throws Fault {
     setProperty(Property.SEARCH_STRING, "NULL");
     invokeRequestAndCheckResponse(ContextOperation.GETDATE);
@@ -312,6 +324,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getEntityStreamTest() throws Fault {
     String entity = "EnTiTyStReAmTeSt";
     setProperty(Property.CONTENT, entity);
@@ -331,6 +344,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getHeadersTest() throws Fault {
     for (int i = 1; i != 5; i++) {
       String header = "header" + i + ":" + "header" + i;
@@ -351,6 +365,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getHeadersIsMutableTest() throws Fault {
     setPrintEntity(true);
     invokeRequestAndCheckResponse(ContextOperation.GETHEADERSISMUTABLE);
@@ -367,6 +382,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getHeaderStringTest() throws Fault {
     setProperty(Property.SEARCH_STRING,
         ContextOperation.GETHEADERSTRING2.name());
@@ -384,6 +400,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getLanguageTest() throws Fault {
     setProperty(Property.REQUEST_HEADERS,
         HttpHeaders.CONTENT_LANGUAGE + ":en-gb");
@@ -402,6 +419,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getLanguageIsNullTest() throws Fault {
     setProperty(Property.SEARCH_STRING, "NULL");
     invokeRequestAndCheckResponse(ContextOperation.GETLANGUAGE);
@@ -419,6 +437,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getLengthTest() throws Fault {
     setProperty(Property.CONTENT, "12345678901234567890");
     setProperty(Property.SEARCH_STRING, "20");
@@ -437,6 +456,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getLengthWhenNoEntityTest() throws Fault {
     setProperty(Property.SEARCH_STRING, "-1");
     invokeRequestAndCheckResponse(ContextOperation.GETLENGTH);
@@ -454,6 +474,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getMediaTypeTest() throws Fault {
     addHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_SVG_XML);
     setProperty(Property.SEARCH_STRING, MediaType.APPLICATION_SVG_XML);
@@ -472,6 +493,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getMediaTypeIsNullTest() throws Fault {
     setProperty(Property.SEARCH_STRING, "NULL");
     invokeRequestAndCheckResponse(ContextOperation.GETMEDIATYPE);
@@ -488,6 +510,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getMethodTest() throws Fault {
     String method = Request.OPTIONS.name();
     String header = RequestFilter.OPERATION + ":"
@@ -512,6 +535,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getPropertyIsNullTest() throws Fault {
     setProperty(Property.SEARCH_STRING, "NULL");
     invokeRequestAndCheckResponse(ContextOperation.GETPROPERTY);
@@ -530,6 +554,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getPropertyNamesTest() throws Fault {
     for (int i = 0; i != 5; i++)
       setProperty(Property.UNORDERED_SEARCH_STRING,
@@ -547,6 +572,7 @@
    * request/response exchange context.
    */
   @Test
+  @Tag("servlet")
   public void getPropertyNamesIsReadOnlyTest() throws Fault {
     setProperty(Property.UNORDERED_SEARCH_STRING, "0");
     invokeRequestAndCheckResponse(ContextOperation.GETPROPERTYNAMESISREADONLY);
@@ -563,6 +589,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getRequestTest() throws Fault {
     String method = Request.OPTIONS.name();
     String header = RequestFilter.OPERATION + ":"
@@ -587,6 +614,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getSecurityContextPrincipalIsNullTest() throws Fault {
     setProperty(Property.SEARCH_STRING, "NULL");
     invokeRequestAndCheckResponse(ContextOperation.GETSECURITYCONTEXT);
@@ -603,6 +631,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void getUriInfoTest() throws Fault {
     setProperty(Property.SEARCH_STRING, getAbsoluteUrl());
     invokeRequestAndCheckResponse(ContextOperation.GETURIINFO);
@@ -620,6 +649,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void hasEntityTest() throws Fault {
     setRequestContentEntity("entity");
     setProperty(Property.SEARCH_STRING, "true");
@@ -638,6 +668,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void hasEntityWhenNoEntityTest() throws Fault {
     setProperty(Property.SEARCH_STRING, "false");
     invokeRequestAndCheckResponse(ContextOperation.HASENTITY);
@@ -657,6 +688,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void removePropertyTest() throws Fault {
     // getProperty returns null after the property has been set and removed
     setProperty(Property.SEARCH_STRING, "NULL");
@@ -674,6 +706,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void setEntityStreamTest() throws Fault {
     setProperty(Property.SEARCH_STRING, RequestFilter.SETENTITYSTREAMENTITY);
     invokeRequestAndCheckResponse(ContextOperation.SETENTITYSTREAM);
@@ -690,6 +723,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void setMethodTest() throws Fault {
     setProperty(Property.SEARCH_STRING, Request.OPTIONS.name());
     invokeRequestAndCheckResponse(ContextOperation.SETMETHOD);
@@ -709,6 +743,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void setPropertyTest() throws Fault {
     setProperty(Property.SEARCH_STRING, TemplateFilter.PROPERTYNAME);
     invokeRequestAndCheckResponse(ContextOperation.SETPROPERTY);
@@ -727,6 +762,7 @@
    * Throws IOException. *
    */
   @Test
+  @Tag("servlet")
   public void setPropertyNullTest() throws Fault {
     setProperty(Property.SEARCH_STRING, "NULL");
     invokeRequestAndCheckResponse(ContextOperation.SETPROPERTYNULL);
@@ -746,6 +782,7 @@
    * Throws IOException. *
    */
   @Test
+  @Tag("servlet")
   public void setPropertyIsReflectedInServletRequestTest() throws Fault {
     setProperty(Property.SEARCH_STRING, RequestFilter.PROPERTYNAME);
     invokeRequestAndCheckResponse(ContextOperation.SETPROPERTYCONTEXT);
@@ -763,6 +800,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void setRequestUriOneUriTest() throws Fault {
     setProperty(Property.SEARCH_STRING, RequestFilter.URI);
     invokeRequestAndCheckResponse(ContextOperation.SETREQUESTURI1);
@@ -780,6 +818,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void setRequestUriTwoUrisTest() throws Fault {
     setProperty(Property.SEARCH_STRING, RequestFilter.URI);
     invokeRequestAndCheckResponse(ContextOperation.SETREQUESTURI2);
@@ -797,6 +836,7 @@
    * Throws IOException.
    */
   @Test
+  @Tag("servlet")
   public void setSecurityContextTest() throws Fault {
     setProperty(Property.SEARCH_STRING, RequestFilter.PRINCIPAL);
     invokeRequestAndCheckResponse(ContextOperation.SETSECURITYCONTEXT);
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/securitycontext/basic/JAXRSBasicClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/securitycontext/basic/JAXRSBasicClientIT.java
index 9a7277a..5efacca 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/securitycontext/basic/JAXRSBasicClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/securitycontext/basic/JAXRSBasicClientIT.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -38,6 +38,7 @@
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.AfterEach;
 
 /*
@@ -104,6 +105,7 @@
    * @test_Strategy: Send no authorization, make sure of 401 response
    */
   @Test
+  @Tag("security")
   @RunAsClient
   public void noAuthorizationTest() throws Fault {
     super.noAuthorizationTest();
@@ -118,6 +120,7 @@
    * @test_Strategy: Send basic authorization, check security context
    */
   @Test
+  @Tag("security")
   @RunAsClient
   public void basicAuthorizationAdminTest() throws Fault {
     setProperty(Property.STATUS_CODE, getStatusCode(Response.Status.OK));
@@ -139,6 +142,7 @@
    * @test_Strategy: Send basic authorization, check security context
    */
   @Test
+  @Tag("security")
   @RunAsClient
   public void basicAuthorizationIncorrectUserTest() throws Fault {
     setProperty(Property.STATUS_CODE,
@@ -156,6 +160,7 @@
    * @test_Strategy: Send basic authorization, check security context
    */
   @Test
+  @Tag("security")
   @RunAsClient
   public void basicAuthorizationIncorrectPasswordTest() throws Fault {
     setProperty(Property.STATUS_CODE,
@@ -175,6 +180,7 @@
    * context
    */
   @Test
+  @Tag("security")
   @RunAsClient
   public void basicAuthorizationStandardUserTest() throws Fault {
     setProperty(Property.STATUS_CODE, getStatusCode(Response.Status.OK));
