diff --git a/src/app/project/repository.go b/src/app/project/repository.go
index efa2098b3e48d8c140b2a59117f546f3f8790b25..1750e39853be1f34bbeb4de93f4f4ca88f104a29 100644
--- a/src/app/project/repository.go
+++ b/src/app/project/repository.go
@@ -50,6 +50,9 @@ type ProjectRepository interface {
 
 	// Search finds projects matching a text query for a specific user
 	Search(ctx context.Context, query string, userID uuid.UUID) ([]*Project, error)
+
+	// CloneRequirement creates a copy of an existing requirement in a different project
+	CloneRequirement(ctx context.Context, sourceReqID primitive.ObjectID, targetProjectID string, newName string) error
 }
 
 // MongoProjectRepository implements ProjectRepository using MongoDB
@@ -434,3 +437,54 @@ func (r *MongoProjectRepository) Search(ctx context.Context, query string, userI
 	log.Printf("INFO: Search completed - found %d projects for query '%s'", len(projects), query)
 	return projects, cursor.Err()
 }
+
+// CloneRequirement creates a copy of an existing requirement in a different project
+func (r *MongoProjectRepository) CloneRequirement(ctx context.Context, sourceReqID primitive.ObjectID, targetProjectID string, newName string) error {
+	ctx, cancel := context.WithTimeout(ctx, r.timeout)
+	defer cancel()
+
+	log.Printf("DEBUG: Cloning requirement %s to project %s with name '%s'", sourceReqID.Hex(), targetProjectID, newName)
+
+	// Find the source requirement
+	var sourceReq bson.M
+	err := r.requirementCollection.FindOne(ctx, bson.M{"_id": sourceReqID}).Decode(&sourceReq)
+	if err != nil {
+		if err == mongo.ErrNoDocuments {
+			log.Printf("WARN: Source requirement %s not found", sourceReqID.Hex())
+			return fmt.Errorf("source requirement not found")
+		}
+		log.Printf("ERROR: Failed to find source requirement %s: %v", sourceReqID.Hex(), err)
+		return fmt.Errorf("failed to find source requirement: %w", err)
+	}
+
+	// Create cloned requirement with new ID and target project
+	clonedReq := bson.M{
+		"_id":        primitive.NewObjectID(),
+		"uuid":       uuid.New(),
+		"project_id": targetProjectID,
+		"shortcut":   newName,
+		"created_at": time.Now(),
+		"status":     "Entwurf",
+	}
+
+	// Copy relevant fields from source requirement
+	fieldsToClone := []string{"condition", "system", "requirement", "parsing_result"}
+	for _, field := range fieldsToClone {
+		if value, exists := sourceReq[field]; exists {
+			clonedReq[field] = value
+		}
+	}
+
+	// Generate requirement_id based on shortcut
+	clonedReq["requirement_id"] = newName
+
+	// Insert the cloned requirement
+	_, err = r.requirementCollection.InsertOne(ctx, clonedReq)
+	if err != nil {
+		log.Printf("ERROR: Failed to insert cloned requirement: %v", err)
+		return fmt.Errorf("failed to clone requirement: %w", err)
+	}
+
+	log.Printf("INFO: Requirement cloned successfully to project %s", targetProjectID)
+	return nil
+}