oro/crm-call-bundle
Adds Call activity tracking to Oro applications: provides the Call entity plus UI to log, view, and manage call records for any entity with the activity enabled. Includes related docs on entities, form type, and validators.
oro/crm-call-bundle is a Laravel-compatible Symfony bundle designed to integrate seamlessly with OroPlatform, OroCRM, or OroCommerce ecosystems. It extends the ActivityBundle to add call-logging functionality, making it ideal for CRM/ERP systems requiring call tracking tied to entities (e.g., contacts, accounts, or orders).symfony/framework-bundle or laravel/symfony.spatie/laravel-symfony-support) to emulate Symfony’s container.call entity tables (e.g., oro_call, oro_call_association). Laravel’s migrations can adapt these via Doctrine Migrations or raw SQL.calls).twig/bridge) or custom adapters.| Risk Area | Severity | Mitigation |
|---|---|---|
| Symfony/Laravel DI Conflict | High | Abstract bundle services behind Laravel interfaces or use a facade layer. |
| Twig/Blade Integration | Medium | Use twig/bridge or rewrite templates in Blade with helper classes. |
| Entity-Activity Hooks | Medium | Ensure custom entities implement Oro\Bundle\ActivityBundle\Model\ActivityInterface. |
| Performance Overhead | Low | Profile call-logging queries; optimize with Doctrine caching. |
| Deprecation Breaks | High | Pin to a stable version (e.g., 5.x) and monitor Oro’s roadmap. |
6.x components. Use:
symfony/framework-bundle (for DI, EventDispatcher).symfony/validator, symfony/form.doctrine/orm (via laravel-doctrine/orm or illuminate/database bridge).twig/bridge + Blade templates (limited Twig features).composer require oro/crm-call-bundle symfony/*:6.x doctrine/orm
config/app.php to load the bundle’s services:
'providers' => [
Oro\Bundle\CallBundle\OroCallBundle::class,
// Symfony bridge providers...
],
oro_call tables:
php artisan doctrine:migrations:diff
calls exists).config/packages/oro_call.yaml:
oro_call:
entities:
Oro\Bundle\ContactBundle\Entity\Contact: ~
ActivityInterface and configure in YAML.twig/bridge and extend Laravel’s views.CallController to expose call data via JSON:
use Oro\Bundle\CallBundle\Entity\Call;
use Oro\Bundle\CallBundle\Repository\CallRepository;
public function index(CallRepository $repo) {
return response()->json($repo->findAll());
}
ContainerInterface differs from Laravel’s Container. Use:
$this->container->get('oro_call.service'); // May fail; use service locator instead.
AppServiceProvider:
$this->app->singleton('oro_call.service', fn() => $this->container->get('oro_call.service'));
oro_call.pre_create). Laravel’s events are compatible but may need aliasing.Validator integrates via symfony/validator. Laravel’s Illuminate\Validation can coexist but may require custom constraints.Contact) to validate integration.oro_call_association).5.x → 6.x) introduce breaking changes (see changelog). Pin to a stable branch and test upgrades.replace to lock minor/patch versions:
"require": {
"oro/crm-call-bundle": "5.1.*"
}
composer why symfony/*
composer install --optimize-autoloader --no-dev in production.Monolog. Laravel’s Log facade can route to the same handler.Xdebug with both stacks.How can I help you explore Laravel packages today?