SlideShare a Scribd company logo
1 of 25
Download to read offline
Developer Training
Integrate your data
into OroCRM:
integration with PrestaShop
Developer Training
Goals
- Overview of OroCRM integration techniques
- Demonstrate implementation of integration
with PrestaShop
- Share best practices
Developer Training
Integration challenges
- Keeping data synced
- Performance
- Full and incremental sync
Developer Training
Change Data Capture (CDC)
- Timestamps
- Version Numbers
- Status indicators
- Time/Version/Status
Developer Training
Introduction
OroImportExportBundle:
- provides abstraction for processors, converters, normalizers and strategies
OroIntegrationBundle:
- interaction between third party services and the platform
- provides abstraction for integrations, transports and connectors
Developer Training
Terminology
- Integration Channel Type
- Integration Channel
- Transport
- Connector
Developer Training
Integrations in OroCRM
- Magento
- ZenDesk
- MailChimp
Developer Training
Goals
- Create UI for PrestaShop Integration management
- Create PrestShop Customer entity
- Import Customers from PrestaShop into our custom entity
- Create associated Contacts and Accounts
Integration with PrestaShop
Integration with PrestaShop
Developer Training
Step 1: Bundle creation
src/OroTutorial/Bundle/PrestashopBundle
http://www.orocrm.com/documentation/index/current/cookbook/how-to-create-new-bundle
Note: need to set bundle priority > 20 since we depend on Account and
Contact bundles in oro/bundles.yml:
bundles:
- { name: OroTutorialBundlePrestashopBundleOroTutorialPrestashopBundle, priority: 99 }
Integration with PrestaShop
Integration with PrestaShop
Developer Training
Step 2: Integration Channel Type
- implements OroBundleIntegrationBundleProviderChannelInterface
- register with oro_integration.channel tag using unique type
Step 3: PrestaShop Customer entity
- extends BasePerson
- should use IntegrationEntityTrait
- should be a configurable entity (defined by annotation:
OroBundleEntityConfigBundleMetadataAnnotationConfig)
- remoteId should be a configurable field (defined by annotation:
OroBundleEntityConfigBundleMetadataAnnotationConfigField)
Integration with PrestaShop
Integration with PrestaShop
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Step 4: Implement Transport
Responsibility of transport is communication between connector and channel
1. Implement transport type
- extends OroBundleIntegrationBundleProviderRestTransportAbstractRestTransport
- registered by oro_integration.transport tag with specified type and
channel_type
2. Create form to display on channel configuration page
- PrestaShop API requires API key and connection endpoint
3. Create entity that will store transport settings
- extends OroBundleIntegrationBundleEntityTransport
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Step 5: Migrations
- create ot_prestashop_customer table
- add columns to oro_integration_transport to store connection settings
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Step 6: Connector
Getting customers from PrestaShop that have been updated after our last sync
- create importexport.yml for suitability
- create batch_jobs.yml
Notes:
- we injected RegistryInterface to be able to retrieve last sync date
- importexport.yml is declared in extension file
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Let’s check what we have so far
we should be able to configure and create our custom
PrestaShop integration
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Step 7: Iterator
- extends OroBundleIntegrationBundleProviderRestClientAbstractRestIterator
- implements methods:
loadPage()
getRowsFromPageData()
getTotalCountFromPageData()
Update RestTransport to use our iterator for retrieving customers from
Prestashop
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Step 8: Data Converter
Data converter is responsible for converting header of import data
- basically a map of entity fields between source (PrestaShop) and target
(OroCRM)
- extends OroBundleImportExportBundleConverterAbstractTableDataConverter
- registered by tag oro_integration.connector and injected into processor
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Step 9: Data Normalizer/Denormalizer
Required for converting array representation to entity objects and visa versa
- registered by oro_importexport.normalizer tag name
- extends ConfigurableEntityNormalizer from OroIntegrationBundle
(This is why we created our PrestaShop customer as a configurable entity )
- on denormalize() set current integration to PrestaShop customer
- introduced DateTimeNormalizer to take care in date/time format differences
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Step 10: Strategy and Processor
Strategy
- extends OroBundleImportExportBundleStrategyImportConfigurableAddOrReplaceStrategy
- customize findExistingEntity() to filter entities by integration channel
- inject logger to show integration process
Processor
- extends OroBundleImportExportBundleProcessorImportProcessor
- no separate classes required for our simple case but we have to configure
processor in imporexport.yml
Developer Training
Integration with PrestaShop
Integration with PrestaShop
Wrap up
Are we missing anything ?
Developer Training
Integration with PrestaShop
Integration with PrestaShop
What about Contacts and Accounts?
We’ll utilize Workflow bundle and add a process definition into process.
yml that will:
- be triggered upon creation of new PrestaShop customer
- create new Contact associated to PrestaShop customer
- create new Account associated to the new Contact
Note: we need to make sure that job queue daemon is running to execute
our processes
Developer Training
Integration with PrestaShop
Integration with PrestaShop
use
oro:process:configuration:load
to load your changes from process.yml
Developer Training
Integration with PrestaShop
Integration with PrestaShop
That’s it.
Now we can run our sync!
oro:cron:integration:sync
Developer Training
Issues in real environments
- Unexpected data
- Large data sets
- Timeouts
- Connection issues
- Time diff between nodes
Developer Training
• Data sync challenges
• Methodology and Terminology
• Integration with PrestaShop
• Issues in real environments
Summary
Developer Training
Q & A
Quality Control

More Related Content

Similar to Integration with presta shop webinar

NetSuite Integrations - CuriousRubik
NetSuite Integrations - CuriousRubikNetSuite Integrations - CuriousRubik
NetSuite Integrations - CuriousRubik
CuriousRubik
 
EECI - EE And Magento Integration
EECI - EE And Magento IntegrationEECI - EE And Magento Integration
EECI - EE And Magento Integration
Simplified Safety
 
Customizing oro crm webinar
Customizing oro crm webinarCustomizing oro crm webinar
Customizing oro crm webinar
Oro Inc.
 
Mamdouh Sami - Resume
Mamdouh Sami - ResumeMamdouh Sami - Resume
Mamdouh Sami - Resume
Mamdouh Samy
 

Similar to Integration with presta shop webinar (20)

B2B add on implementation scenarios po. part I inbound edi
B2B add on implementation scenarios po. part I inbound ediB2B add on implementation scenarios po. part I inbound edi
B2B add on implementation scenarios po. part I inbound edi
 
NetSuite Integrations - CuriousRubik
NetSuite Integrations - CuriousRubikNetSuite Integrations - CuriousRubik
NetSuite Integrations - CuriousRubik
 
Me_Ishendu_Resume_Latest_March_2024.docx
Me_Ishendu_Resume_Latest_March_2024.docxMe_Ishendu_Resume_Latest_March_2024.docx
Me_Ishendu_Resume_Latest_March_2024.docx
 
How to develop a gateway service using code based implementation
How to develop a gateway service using code based implementationHow to develop a gateway service using code based implementation
How to develop a gateway service using code based implementation
 
EECI - EE And Magento Integration
EECI - EE And Magento IntegrationEECI - EE And Magento Integration
EECI - EE And Magento Integration
 
AspMVC4 start101
AspMVC4 start101AspMVC4 start101
AspMVC4 start101
 
Multiple odoo with single vue storefront
Multiple odoo with single vue storefrontMultiple odoo with single vue storefront
Multiple odoo with single vue storefront
 
SAP Integration for Supply Chain Management
SAP Integration for Supply Chain ManagementSAP Integration for Supply Chain Management
SAP Integration for Supply Chain Management
 
Achievement Archive
Achievement ArchiveAchievement Archive
Achievement Archive
 
Different architecture topology for dynamics 365 retail
Different architecture topology for dynamics 365 retailDifferent architecture topology for dynamics 365 retail
Different architecture topology for dynamics 365 retail
 
Getting Started with Zend Framework
Getting Started with Zend FrameworkGetting Started with Zend Framework
Getting Started with Zend Framework
 
How to embed reporting into your asp.net core web applications
How to embed reporting into your asp.net core web applications How to embed reporting into your asp.net core web applications
How to embed reporting into your asp.net core web applications
 
DotNetNotts - Introduction to Kentico
DotNetNotts - Introduction to KenticoDotNetNotts - Introduction to Kentico
DotNetNotts - Introduction to Kentico
 
tonyzhangAv
tonyzhangAvtonyzhangAv
tonyzhangAv
 
Customizing oro crm webinar
Customizing oro crm webinarCustomizing oro crm webinar
Customizing oro crm webinar
 
Magento 2 Special Price Countdown Extension By Itoris Inc.
Magento 2 Special Price Countdown Extension By Itoris Inc.Magento 2 Special Price Countdown Extension By Itoris Inc.
Magento 2 Special Price Countdown Extension By Itoris Inc.
 
Customer FX Technical Reference Sheet
Customer FX Technical Reference SheetCustomer FX Technical Reference Sheet
Customer FX Technical Reference Sheet
 
NetSuite Integration Solutions - Folio3
NetSuite Integration Solutions - Folio3NetSuite Integration Solutions - Folio3
NetSuite Integration Solutions - Folio3
 
Mamdouh Sami - Resume
Mamdouh Sami - ResumeMamdouh Sami - Resume
Mamdouh Sami - Resume
 
Import and synchronize Drupal commerce content using Commerce feeds
Import and synchronize Drupal commerce content using Commerce feedsImport and synchronize Drupal commerce content using Commerce feeds
Import and synchronize Drupal commerce content using Commerce feeds
 

More from Oro Inc.

Import export.odp
Import export.odpImport export.odp
Import export.odp
Oro Inc.
 
Adding custom ui controls to your application (1)
Adding custom ui controls to your application (1)Adding custom ui controls to your application (1)
Adding custom ui controls to your application (1)
Oro Inc.
 
Working with oro crm entities
Working with oro crm entitiesWorking with oro crm entities
Working with oro crm entities
Oro Inc.
 

More from Oro Inc. (18)

Jary Carter Presents OroCRM
Jary Carter Presents OroCRMJary Carter Presents OroCRM
Jary Carter Presents OroCRM
 
Best Practices For Taking Your B2B Company Online
Best Practices For Taking Your B2B Company OnlineBest Practices For Taking Your B2B Company Online
Best Practices For Taking Your B2B Company Online
 
Oro Revolutionizes B2B Commerce - OroMeetup NL, 2017
Oro Revolutionizes B2B Commerce - OroMeetup NL, 2017Oro Revolutionizes B2B Commerce - OroMeetup NL, 2017
Oro Revolutionizes B2B Commerce - OroMeetup NL, 2017
 
How to Close More Deals with B2B eCommerce Systems
How to Close More Deals with B2B eCommerce SystemsHow to Close More Deals with B2B eCommerce Systems
How to Close More Deals with B2B eCommerce Systems
 
Email is the digital key - dotmailer, Oro MeetUp, Paris
Email is the digital key - dotmailer, Oro MeetUp, ParisEmail is the digital key - dotmailer, Oro MeetUp, Paris
Email is the digital key - dotmailer, Oro MeetUp, Paris
 
Revolutionizing CRM market & B2B eCommerce - Oro MeetUp in Paris
Revolutionizing CRM market & B2B eCommerce - Oro MeetUp in ParisRevolutionizing CRM market & B2B eCommerce - Oro MeetUp in Paris
Revolutionizing CRM market & B2B eCommerce - Oro MeetUp in Paris
 
Oro London Meetup - dotmailer: Faster, smarter, better, email marketing
Oro London Meetup - dotmailer: Faster, smarter, better, email marketingOro London Meetup - dotmailer: Faster, smarter, better, email marketing
Oro London Meetup - dotmailer: Faster, smarter, better, email marketing
 
Oro Meetup in London - Oro product vision
Oro Meetup in London - Oro product visionOro Meetup in London - Oro product vision
Oro Meetup in London - Oro product vision
 
Webinar: “Create the Ultimate Customer Experience with Prestashop + OroCRM”
Webinar: “Create the Ultimate Customer Experience with Prestashop + OroCRM”Webinar: “Create the Ultimate Customer Experience with Prestashop + OroCRM”
Webinar: “Create the Ultimate Customer Experience with Prestashop + OroCRM”
 
11.17.15 Webinar: “Merchants: deliver an outstanding experience to your custo...
11.17.15 Webinar: “Merchants: deliver an outstanding experience to your custo...11.17.15 Webinar: “Merchants: deliver an outstanding experience to your custo...
11.17.15 Webinar: “Merchants: deliver an outstanding experience to your custo...
 
11.10.15 Webinar: “Improving Magento performance with Blackfire.io”
11.10.15 Webinar: “Improving Magento performance with Blackfire.io”11.10.15 Webinar: “Improving Magento performance with Blackfire.io”
11.10.15 Webinar: “Improving Magento performance with Blackfire.io”
 
OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015OroCRM Partner Technical Training: September 2015
OroCRM Partner Technical Training: September 2015
 
Benefits of OroCRM + Magento Webinar
Benefits of OroCRM + Magento WebinarBenefits of OroCRM + Magento Webinar
Benefits of OroCRM + Magento Webinar
 
OroCRM Multi-Channel Webinar
OroCRM Multi-Channel WebinarOroCRM Multi-Channel Webinar
OroCRM Multi-Channel Webinar
 
Powerful Customer Service with OroCRM + Zendesk
Powerful Customer Service with OroCRM + ZendeskPowerful Customer Service with OroCRM + Zendesk
Powerful Customer Service with OroCRM + Zendesk
 
Import export.odp
Import export.odpImport export.odp
Import export.odp
 
Adding custom ui controls to your application (1)
Adding custom ui controls to your application (1)Adding custom ui controls to your application (1)
Adding custom ui controls to your application (1)
 
Working with oro crm entities
Working with oro crm entitiesWorking with oro crm entities
Working with oro crm entities
 

Integration with presta shop webinar

  • 1. Developer Training Integrate your data into OroCRM: integration with PrestaShop
  • 2. Developer Training Goals - Overview of OroCRM integration techniques - Demonstrate implementation of integration with PrestaShop - Share best practices
  • 3. Developer Training Integration challenges - Keeping data synced - Performance - Full and incremental sync
  • 4. Developer Training Change Data Capture (CDC) - Timestamps - Version Numbers - Status indicators - Time/Version/Status
  • 5. Developer Training Introduction OroImportExportBundle: - provides abstraction for processors, converters, normalizers and strategies OroIntegrationBundle: - interaction between third party services and the platform - provides abstraction for integrations, transports and connectors
  • 6. Developer Training Terminology - Integration Channel Type - Integration Channel - Transport - Connector
  • 7. Developer Training Integrations in OroCRM - Magento - ZenDesk - MailChimp
  • 8. Developer Training Goals - Create UI for PrestaShop Integration management - Create PrestShop Customer entity - Import Customers from PrestaShop into our custom entity - Create associated Contacts and Accounts Integration with PrestaShop Integration with PrestaShop
  • 9. Developer Training Step 1: Bundle creation src/OroTutorial/Bundle/PrestashopBundle http://www.orocrm.com/documentation/index/current/cookbook/how-to-create-new-bundle Note: need to set bundle priority > 20 since we depend on Account and Contact bundles in oro/bundles.yml: bundles: - { name: OroTutorialBundlePrestashopBundleOroTutorialPrestashopBundle, priority: 99 } Integration with PrestaShop Integration with PrestaShop
  • 10. Developer Training Step 2: Integration Channel Type - implements OroBundleIntegrationBundleProviderChannelInterface - register with oro_integration.channel tag using unique type Step 3: PrestaShop Customer entity - extends BasePerson - should use IntegrationEntityTrait - should be a configurable entity (defined by annotation: OroBundleEntityConfigBundleMetadataAnnotationConfig) - remoteId should be a configurable field (defined by annotation: OroBundleEntityConfigBundleMetadataAnnotationConfigField) Integration with PrestaShop Integration with PrestaShop
  • 11. Developer Training Integration with PrestaShop Integration with PrestaShop Step 4: Implement Transport Responsibility of transport is communication between connector and channel 1. Implement transport type - extends OroBundleIntegrationBundleProviderRestTransportAbstractRestTransport - registered by oro_integration.transport tag with specified type and channel_type 2. Create form to display on channel configuration page - PrestaShop API requires API key and connection endpoint 3. Create entity that will store transport settings - extends OroBundleIntegrationBundleEntityTransport
  • 12. Developer Training Integration with PrestaShop Integration with PrestaShop Step 5: Migrations - create ot_prestashop_customer table - add columns to oro_integration_transport to store connection settings
  • 13. Developer Training Integration with PrestaShop Integration with PrestaShop Step 6: Connector Getting customers from PrestaShop that have been updated after our last sync - create importexport.yml for suitability - create batch_jobs.yml Notes: - we injected RegistryInterface to be able to retrieve last sync date - importexport.yml is declared in extension file
  • 14. Developer Training Integration with PrestaShop Integration with PrestaShop Let’s check what we have so far we should be able to configure and create our custom PrestaShop integration
  • 15. Developer Training Integration with PrestaShop Integration with PrestaShop Step 7: Iterator - extends OroBundleIntegrationBundleProviderRestClientAbstractRestIterator - implements methods: loadPage() getRowsFromPageData() getTotalCountFromPageData() Update RestTransport to use our iterator for retrieving customers from Prestashop
  • 16. Developer Training Integration with PrestaShop Integration with PrestaShop Step 8: Data Converter Data converter is responsible for converting header of import data - basically a map of entity fields between source (PrestaShop) and target (OroCRM) - extends OroBundleImportExportBundleConverterAbstractTableDataConverter - registered by tag oro_integration.connector and injected into processor
  • 17. Developer Training Integration with PrestaShop Integration with PrestaShop Step 9: Data Normalizer/Denormalizer Required for converting array representation to entity objects and visa versa - registered by oro_importexport.normalizer tag name - extends ConfigurableEntityNormalizer from OroIntegrationBundle (This is why we created our PrestaShop customer as a configurable entity ) - on denormalize() set current integration to PrestaShop customer - introduced DateTimeNormalizer to take care in date/time format differences
  • 18. Developer Training Integration with PrestaShop Integration with PrestaShop Step 10: Strategy and Processor Strategy - extends OroBundleImportExportBundleStrategyImportConfigurableAddOrReplaceStrategy - customize findExistingEntity() to filter entities by integration channel - inject logger to show integration process Processor - extends OroBundleImportExportBundleProcessorImportProcessor - no separate classes required for our simple case but we have to configure processor in imporexport.yml
  • 19. Developer Training Integration with PrestaShop Integration with PrestaShop Wrap up Are we missing anything ?
  • 20. Developer Training Integration with PrestaShop Integration with PrestaShop What about Contacts and Accounts? We’ll utilize Workflow bundle and add a process definition into process. yml that will: - be triggered upon creation of new PrestaShop customer - create new Contact associated to PrestaShop customer - create new Account associated to the new Contact Note: we need to make sure that job queue daemon is running to execute our processes
  • 21. Developer Training Integration with PrestaShop Integration with PrestaShop use oro:process:configuration:load to load your changes from process.yml
  • 22. Developer Training Integration with PrestaShop Integration with PrestaShop That’s it. Now we can run our sync! oro:cron:integration:sync
  • 23. Developer Training Issues in real environments - Unexpected data - Large data sets - Timeouts - Connection issues - Time diff between nodes
  • 24. Developer Training • Data sync challenges • Methodology and Terminology • Integration with PrestaShop • Issues in real environments Summary
  • 25. Developer Training Q & A Quality Control