diff --git a/jaxrs-tck-docs/TCK-Exclude-List.txt b/jaxrs-tck-docs/TCK-Exclude-List.txt
index c1c1b05..3d77d18 100644
--- a/jaxrs-tck-docs/TCK-Exclude-List.txt
+++ b/jaxrs-tck-docs/TCK-Exclude-List.txt
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2021, 2024 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
@@ -76,6 +76,9 @@
 ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithStringCallbackWhileServerWaitTest
 ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithStringClassWhileServerWaitTest
 
+# https://github.com/jakartaee/rest/issues/1162
+ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/ssebroadcaster/JAXRSClientIT.java#sseBroadcastTest
+
 #
 #
 ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java#connectionLostForDefault500msTest
@@ -152,3 +155,9 @@
 ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithResponseClassTest
 ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithGenericTypeStringTest
 ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithGenericTypeResponseTest
+
+https://github.com/jakartaee/rest/issues/1138
+ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT#getNormalizedUriTest
+
+https://github.com/jakartaee/rest/issues/1163
+ee/jakarta/tck/ws/rs/ee/rs/container/responsecontext/JAXRSClientIT#setEntityStreamTest
\ No newline at end of file
diff --git a/jaxrs-tck-docs/tckbundle.sh b/jaxrs-tck-docs/tckbundle.sh
index 150dd6b..7695256 100644
--- a/jaxrs-tck-docs/tckbundle.sh
+++ b/jaxrs-tck-docs/tckbundle.sh
@@ -1,6 +1,6 @@
 #!/bin/bash -xe
 
-# Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2024 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
@@ -40,6 +40,7 @@
 
 rm -rf $WORKSPACE/bundle
 
+mkdir -p $WORKSPACE/bundle
 mkdir -p $WORKSPACE/bundle/docs
 mkdir -p $WORKSPACE/bundle/docs/html-usersguide
 mkdir -p $WORKSPACE/bundle/docs/pdf-usersguide
@@ -51,17 +52,23 @@
 cp $WORKSPACE/jaxrs-tck-docs/*.txt $WORKSPACE/bundle/docs/
 cp -r $WORKSPACE/jaxrs-tck-docs/assertions $WORKSPACE/bundle/docs/
 
-mkdir -p $WORKSPACE/bundle
 cp $WORKSPACE/jaxrs-tck/target/*.jar $WORKSPACE/bundle/
 
 cd $WORKSPACE/bundle
+mkdir -p $WORKSPACE/bundle/META-INF
 
 if [[ "$1" == "epl" || "$1" == "EPL" ]]; then
     cp $WORKSPACE/LICENSE.md $WORKSPACE/bundle/LICENSE.md
+    cp $WORKSPACE/LICENSE.md $WORKSPACE/bundle/META-INF/LICENSE.md
     cp $WORKSPACE/jaxrs-tck/pom.epl.xml $WORKSPACE/bundle/restful-ws-tck-"$VERSION".pom
+    jar -uvf restful-ws-tck-"$VERSION".jar META-INF/LICENSE.md
+    rm -rf $WORKSPACE/bundle/META-INF
     zip -r restful-ws-tck-"$VERSION".zip *
 else
     cp $WORKSPACE/jaxrs-tck-docs/LICENSE_EFTL.md $WORKSPACE/bundle/LICENSE.md
+    cp $WORKSPACE/jaxrs-tck-docs/LICENSE_EFTL.md $WORKSPACE/bundle/META-INF/LICENSE.md
     cp $WORKSPACE/jaxrs-tck/pom.xml $WORKSPACE/bundle/jakarta-restful-ws-tck-"$VERSION".pom
+    jar -uvf jakarta-restful-ws-tck-"$VERSION".jar META-INF/LICENSE.md
+    rm -rf $WORKSPACE/bundle/META-INF
     zip -r jakarta-restful-ws-tck-"$VERSION".zip * 
 fi
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/container/responsecontext/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/container/responsecontext/JAXRSClientIT.java
index c40db3f..e2dfd37 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/container/responsecontext/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/container/responsecontext/JAXRSClientIT.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2024 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
@@ -53,7 +53,7 @@
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-
+import org.junit.jupiter.api.Disabled;
 /*
  * @class.setup_props: webServerHost;
  *                     webServerPort;
@@ -1103,6 +1103,7 @@
    * Throws IOException.
    */
   @Test
+  @Disabled
   public void setEntityStreamTest() throws Fault {
     setProperty(Property.SEARCH_STRING, ResponseFilter.ENTITY);
     setProperty(Property.SEARCH_STRING, "OK");
@@ -1121,6 +1122,7 @@
    * Throws IOException.
    */
   @Test
+  @Disabled
   public void setStatusTest() throws Fault {
     for (Response.Status status : Response.Status.values()) {
       String content = String.valueOf(status.getStatusCode());
@@ -1142,6 +1144,7 @@
    * Throws IOException.
    */
   @Test
+  @Disabled
   public void setStatusInfoTest() throws Fault {
     for (Response.Status status : Response.Status.values()) {
       String content = String.valueOf(status.getStatusCode());
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
index 3fbaaa5..52a001c 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2024 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
@@ -34,6 +34,7 @@
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -414,6 +415,7 @@
    * obtained from an injected UriInfo
    */
   @Test
+  @Disabled
   public void getNormalizedUriTest() throws Fault {
     setProperty(Property.REQUEST, buildRequest(GET, URIInfoTest.DECODED));
     invoke();
