swisscat / salesforce-bundle
A Salesforce bundle for Sylius framework
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 0
Open Issues: 1
Type:symfony-bundle
Requires
- php: >=7.1
- doctrine/orm: *
- guzzlehttp/guzzle: 6.3.*
- php-amqplib/rabbitmq-bundle: 1.*
- phpforce/soap-client: *
- symfony/framework-bundle: *
- symfony/http-kernel: *
Requires (Dev)
This package is not auto-updated.
Last update: 2025-03-06 05:45:53 UTC
README
(Yet another) Salesforce synchronization tool, using a RabbitMQ engine to defer and bulk synchronization. Using Streaming API to fetch back records from Salesforce.
Installation
Require the bundle:
composer require swisscat/salesforce-bundle
Register the bundle:
// app/AppKernel.php
public function registerBundles()
{
$bundles = [
// ... ,
new \OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
new \Swisscat\SalesforceBundle\SalesforceBundle(),
];
}
Generate a Salesforce Enterprise WSDL
Fill in basic config
salesforce:
soap_client:
wsdl: "%kernel.root_dir%/config/sf.wsdl"
username: <username>
password: <password>
token: <token>
Update schema:
bin/console doctrine:migrations:diff
bin/console doctrine:migrations:migrate
Configuration
Edit config.yml
salesforce:
soap_client:
wsdl: "%kernel.root_dir%/config/sf.wsdl"
username: <username>
password: <password>
token: <token>
old_sound_rabbit_mq:
connections:
default:
host: 'localhost'
port: 5672
user: 'guest'
password: 'guest'
vhost: '/'
lazy: true
connection_timeout: 60
keepalive: true
use_socket: false # default false
producers:
sync_salesforce:
connection: default
exchange_options: {name: 'sync-salesforce', type: direct}
service_alias: sync_salesforce # no alias by default
consumers:
salesforce_back:
connection: default
exchange_options: {name: 'salesforce', type: direct}
queue_options: {name: 'salesforce'}
callback: sylius.consumer.salesforce_back
batch_consumers:
sync_salesforce:
connection: default
exchange_options: {name: 'sync-salesforce', type: direct}
queue_options: {name: 'sync-salesforce'}
callback: sylius.consumer.salesforce
qos_options: {prefetch_size: 0, prefetch_count: 2, global: false}
Run the command to process records
bin/console rabbitmq:batch:consumer sync_salesforce
Run the command to fetch Topic Updates (See https://github.com/swisscat/salesforce-amqp-connector)
bin/console rabbitmq:consumer salesforce_back
Roadmap
- Refactor / cleanup
- Complete tests
- Improve RabbitMQ exchange configuration
- Provide queue configurability on ecommerce
- Handle failures on ecommerce publish
- Generalize bundle for other providers (i.e magento)
- Authentication with Token for Java API
- Implement bundle logic for reconciliation (Master: SF/ECOM/storing conflicts)
- Improve mapping definition (custom functions)
- Implement mapping associations (entity relations)