- How do I integrate this bundle into an existing Laravel/Symfony app if I’m not using ProcessBundle yet?
- This bundle *requires* ProcessBundle v3 as a dependency, so you’ll need to install and configure `cleverage/process-bundle` first. If your app doesn’t use workflows, the overhead may not justify adoption. Check the [ProcessBundle docs](https://github.com/cleverage/process-bundle) for setup, then add `cleverage/archive-process-bundle` via Composer. Ensure Symfony 6.4+ and PHP 8.1+ are met.
- Does this bundle support custom storage backends like S3 or database tables instead of filesystem?
- The bundle likely defaults to filesystem or Doctrine storage, but you may override storage logic via custom services or Doctrine repositories. Review the source for `ArchiveEntry` entity or storage handlers. If no adapters exist, you’ll need to extend the bundle or implement a custom storage service. Test thoroughly with your backend.
- What Laravel versions or Symfony equivalents does this bundle support?
- This is a *Symfony* bundle, not Laravel-native, but works in Laravel via Symfony integration (e.g., Laravel Symfony Bridge). It supports Symfony’s **stable/LTS releases** (e.g., 6.4, 7.0). For Laravel, ensure your Symfony components align with the bundle’s requirements. Check the [Symfony compatibility table](https://symfony.com/releases) for exact version matches.
- Can I use this for document versioning or immutable archives in production?
- Yes, the bundle’s archival focus suggests support for versioning and retention policies via ProcessBundle workflows. However, validate storage durability (e.g., filesystem permissions, Doctrine transactions) and test rollback scenarios. For critical data, combine with Symfony Messenger for async processing or add backup hooks.
- How do I handle failures during archival (e.g., disk full, DB errors)?
- The bundle may lack built-in retry logic, so integrate Symfony Messenger for async retries or implement a custom listener for `ArchiveProcessBundle` events. Use Doctrine events or filesystem error handlers to log failures. For resilience, pair with a dead-letter queue or fallback storage.
- Are there any known performance issues with large-scale archives (e.g., thousands of files)?
- Performance depends on storage backend: Doctrine may struggle with bulk inserts, while filesystem I/O can bottleneck with many small files. Optimize by batching writes, using async processing (Messenger), or indexing metadata. Profile with your expected load—no benchmarks are publicly documented.
- Does this bundle include tests or validation hooks for archival integrity?
- The bundle’s GitHub lacks visible test coverage or validation hooks, so you’ll need to implement checks manually. Use Symfony’s validation component or custom listeners to verify archives pre/post-processing. For critical data, add checksums or audit logs via Doctrine lifecycle callbacks.
- How do I extend existing ProcessBundle workflows to include archival steps?
- Hook into ProcessBundle’s transition events or add custom steps via YAML/XML workflow definitions. The bundle likely provides tags/events (e.g., `archive_process`) to trigger archival logic. Review the [ProcessBundle docs](https://github.com/cleverage/process-bundle) for step integration patterns. Example: Add a `archive` step after `approve` in your workflow.
- What alternatives exist for archival workflows in Laravel/Symfony?
- For Laravel, consider `spatie/laravel-activitylog` (audit trails) or `spatie/laravel-medialibrary` (file archival). In Symfony, `egulias/email-validator` + custom logic or `api-platform/core` (for API-driven archives) may fit. If you need workflows, `symfony/workflow` standalone or `workflow/doctrine` (for Doctrine integration) are robust alternatives.
- How do I configure this bundle to work with Doctrine migrations or existing schemas?
- The bundle likely introduces `ArchiveEntry` or similar entities. Run `php bin/console doctrine:migrations:diff` to generate migrations, then apply them. If conflicts arise, manually merge schema changes or extend the entity. For soft deletes, add `SoftDeletable` traits or custom queries. Always back up your database before migrations.