diff --git a/ds/org.eclipse.pde.ds.tck/.classpath b/ds/org.eclipse.pde.ds.tck/.classpath
new file mode 100644
index 00000000000..66d7021dd10
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/ds/org.eclipse.pde.ds.tck/.project b/ds/org.eclipse.pde.ds.tck/.project
new file mode 100644
index 00000000000..3fc41e16695
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/.project
@@ -0,0 +1,33 @@
+
+
+ org.eclipse.pde.ds.tck
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+ org.eclipse.pde.ds.core.builder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.core.resources.prefs b/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000000..99f26c0203a
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.jdt.core.prefs b/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..62ef3488cc0
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
diff --git a/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.m2e.core.prefs b/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.pde.ds.annotations.prefs b/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.pde.ds.annotations.prefs
new file mode 100644
index 00000000000..38f9eecff8e
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/.settings/org.eclipse.pde.ds.annotations.prefs
@@ -0,0 +1,7 @@
+dsVersion=V1_3
+eclipse.preferences.version=1
+enabled=true
+generateBundleActivationPolicyLazy=true
+path=OSGI-INF
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/ds/org.eclipse.pde.ds.tck/META-INF/MANIFEST.MF b/ds/org.eclipse.pde.ds.tck/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f27a3cf57c1
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/META-INF/MANIFEST.MF
@@ -0,0 +1,51 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Component XML TCK
+Bundle-SymbolicName: org.eclipse.pde.ds.tck
+Bundle-Version: 1.0.0.qualifier
+Import-Package: org.osgi.framework,
+ org.osgi.service.component,
+ org.osgi.service.component.propertytypes,
+ org.osgi.service.log
+Service-Component: OSGI-INF/org.osgi.impl.bundle.component.annotations.HelloWorld10.xml,
+ OSGI-INF/testActivationFields.xml,
+ OSGI-INF/testComponentPropertyTypes.xml,
+ OSGI-INF/testComponentReferences.xml,
+ OSGI-INF/testConfigPid.xml,
+ OSGI-INF/testConfigPidMultiple.xml,
+ OSGI-INF/testConfigPolicyIgnore.xml,
+ OSGI-INF/testConfigPolicyOptional.xml,
+ OSGI-INF/testConfigPolicyRequire.xml,
+ OSGI-INF/testConstructorInjection.xml,
+ OSGI-INF/testDelayed.xml,
+ OSGI-INF/testDisabled.xml,
+ OSGI-INF/testEnabled.xml,
+ OSGI-INF/testFactory.xml,
+ OSGI-INF/testFactoryProperties.xml,
+ OSGI-INF/testFieldReferences.xml,
+ OSGI-INF/testHelloWorld11.xml,
+ OSGI-INF/testHelloWorld12.xml,
+ OSGI-INF/testHelloWorld13.xml,
+ OSGI-INF/testHelloWorld14.xml,
+ OSGI-INF/testImmediate.xml,
+ OSGI-INF/testLoggerComponent.xml,
+ OSGI-INF/testNameMapping.xml,
+ OSGI-INF/testNoInheritService.xml,
+ OSGI-INF/testNoService.xml,
+ OSGI-INF/testNoServiceFactory.xml,
+ OSGI-INF/testProperties.xml,
+ OSGI-INF/testPropertyOrdering.xml,
+ OSGI-INF/testPropertyOrdering14.xml,
+ OSGI-INF/testReferenceNames.xml,
+ OSGI-INF/testReferenceScopes.xml,
+ OSGI-INF/testReferenceService.xml,
+ OSGI-INF/testReferences.xml,
+ OSGI-INF/testService.xml,
+ OSGI-INF/testServiceBundle.xml,
+ OSGI-INF/testServiceFactory.xml,
+ OSGI-INF/testServicePrototype.xml,
+ OSGI-INF/testServiceSingleton.xml
+Bundle-Vendor: Eclipse.org
+Automatic-Module-Name: org.eclipse.pde.ds.tck
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/ds/org.eclipse.pde.ds.tck/OSGI-INF/.gitignore b/ds/org.eclipse.pde.ds.tck/OSGI-INF/.gitignore
new file mode 100644
index 00000000000..b878e882aca
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/OSGI-INF/.gitignore
@@ -0,0 +1 @@
+/*.xml
diff --git a/ds/org.eclipse.pde.ds.tck/build.properties b/ds/org.eclipse.pde.ds.tck/build.properties
new file mode 100644
index 00000000000..c6035d8a0ee
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/build.properties
@@ -0,0 +1,5 @@
+source.. = tck/OSGI-INF/impl-src
+output.. = target/classes
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/
diff --git a/ds/org.eclipse.pde.ds.tck/pom.xml b/ds/org.eclipse.pde.ds.tck/pom.xml
new file mode 100644
index 00000000000..c8f7d414051
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/pom.xml
@@ -0,0 +1,144 @@
+
+
+ 4.0.0
+
+ org.eclipse.pde
+ eclipse.pde
+ 4.30.0-SNAPSHOT
+ ../../
+
+ org.eclipse.pde.ds.tck
+ 1.0.0-SNAPSHOT
+ eclipse-plugin
+
+
+
+
+ org.eclipse.tycho
+ target-platform-configuration
+
+
+
+
+ eclipse-plugin
+ org.osgi.service.component.annotations
+ [1.5, 1.6)
+
+
+ eclipse-plugin
+ org.eclipse.pde.ds.annotations
+ 0.0.0
+
+
+
+
+
+
+ p2-installable-unit
+ org.eclipse.osgi.services
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ unpack-tck-sourcec
+ process-resources
+
+ unpack-dependencies
+
+
+ org.osgi.test.cases.component.annotations
+ ${basedir}/tck
+
+
+
+
+
+ org.eclipse.tycho
+ tycho-eclipse-plugin
+ ${tycho.version}
+
+
+ generate-xmls
+
+ eclipse-build
+
+ compile
+
+ true
+
+ org.eclipse.pde.core
+ org.eclipse.pde.ds.annotations
+
+
+
+
+
+
+ org.eclipse.tycho
+ tycho-compiler-plugin
+
+
+
+ default-compile
+ none
+
+
+
+
+ org.eclipse.tycho
+ tycho-ds-plugin
+ ${tycho.version}
+
+
+
+ default-declarative-services
+ none
+
+
+
+
+ org.eclipse.tycho
+ tycho-surefire-plugin
+
+
+ execute-tck
+
+ bnd-test
+ verify
+
+
+
+ org.osgi.test.cases.component.annotations
+
+ false
+ false
+ true
+ true
+ ${project.build.directory}/tck-results
+
+ org.eclipse.pde.ds.tck
+
+
+
+
+
+
+
+
+
+
+ org.osgi
+ org.osgi.test.cases.component.annotations
+ 8.1.0
+
+
+
+
\ No newline at end of file
diff --git a/ds/org.eclipse.pde.ds.tck/tck/.gitignore b/ds/org.eclipse.pde.ds.tck/tck/.gitignore
new file mode 100644
index 00000000000..f59ec20aabf
--- /dev/null
+++ b/ds/org.eclipse.pde.ds.tck/tck/.gitignore
@@ -0,0 +1 @@
+*
\ No newline at end of file
diff --git a/ds/pom.xml b/ds/pom.xml
index 8ca46c8af7a..35ad3d379af 100644
--- a/ds/pom.xml
+++ b/ds/pom.xml
@@ -25,4 +25,13 @@
org.eclipse.pde.ds.ui
org.eclipse.pde.ds.annotations
+
+
+
+ tck
+
+ org.eclipse.pde.ds.tck
+
+
+