diff --git a/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/BundleLifter.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/BundleLifter.java
similarity index 97%
rename from sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/BundleLifter.java
rename to sdks/java/core/src/main/java/org/apache/beam/sdk/util/BundleLifter.java
index fea68852c0f9..539ef147f173 100644
--- a/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/BundleLifter.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/BundleLifter.java
@@ -15,13 +15,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.beam.sdk.io.iceberg;
+package org.apache.beam.sdk.util;
import static org.apache.beam.sdk.util.Preconditions.checkArgumentNotNull;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.ArrayList;
import java.util.List;
+import org.apache.beam.sdk.annotations.Internal;
import org.apache.beam.sdk.transforms.DoFn;
import org.apache.beam.sdk.transforms.DoFn.MultiOutputReceiver;
import org.apache.beam.sdk.transforms.DoFn.OutputReceiver;
@@ -41,8 +42,11 @@
* A PTransform that buffers elements and outputs them to one of two TupleTags based on the total
* size of the bundle in finish_bundle.
*
+ *
For internal use only; no backwards-compatibility guarantees.
+ *
* @param The type of elements in the input PCollection.
*/
+@Internal
@SuppressFBWarnings(
value = "CT_CONSTRUCTOR_THROW",
justification =
diff --git a/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/BundleLifterTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/BundleLifterTest.java
similarity index 97%
rename from sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/BundleLifterTest.java
rename to sdks/java/core/src/test/java/org/apache/beam/sdk/util/BundleLifterTest.java
index 1eaa0920e6c6..0467f1383bcf 100644
--- a/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/BundleLifterTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/BundleLifterTest.java
@@ -15,14 +15,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.beam.sdk.io.iceberg;
+package org.apache.beam.sdk.util;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.empty;
-import org.apache.beam.sdk.io.iceberg.BundleLifter.BundleLiftDoFn;
import org.apache.beam.sdk.transforms.DoFnTester;
+import org.apache.beam.sdk.util.BundleLifter.BundleLiftDoFn;
import org.apache.beam.sdk.values.TupleTag;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/WriteToDestinations.java b/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/WriteToDestinations.java
index 6d8f08a2ae56..71b610a37a1d 100644
--- a/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/WriteToDestinations.java
+++ b/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/WriteToDestinations.java
@@ -36,6 +36,7 @@
import org.apache.beam.sdk.transforms.windowing.GlobalWindows;
import org.apache.beam.sdk.transforms.windowing.Repeatedly;
import org.apache.beam.sdk.transforms.windowing.Window;
+import org.apache.beam.sdk.util.BundleLifter;
import org.apache.beam.sdk.util.ShardedKey;
import org.apache.beam.sdk.values.KV;
import org.apache.beam.sdk.values.PCollection;