SlideShare a Scribd company logo
1 of 42
Download to read offline
OpenERP / odoo Connector
OpenDays 2014
Guewen Baconnier / Alexandre Fayolle
2/42www.camptocamp.com /
30 seconds to say...
■ Documentation:
http://www.openerp-connector.com
■ Mailing list:
https://launchpad.net/~openerp-connector-community
3/42www.camptocamp.com /
What is a connector?
■ Connect odoo with external systems
■ Exchange any data between them
4/42www.camptocamp.com /
What is not the connector?
■ A middleware, it is a module inside odoo
■ It does not listen external systems, it speaks to them
5/42www.camptocamp.com /
A framework
Does not do anything “out of the box”, rather:
■ Suggests an implementation style
■ Proposes bare “interface” classes
■ Defines bricks
○ Jobs
○ Events
○ Backend / version mechanisms
6/42www.camptocamp.com /
Glossary
■ Backend
■ Event
■ Job / jobs queue
■ Worker
■ Binding
7/42www.camptocamp.com /
Existing implementations
■ Magento
■ Prestashop
■ Multicompany (odoo to odoo)
■ Solr
■ CMIS
■ Connector E-Commerce (not a full implementation)
See http://openerp-connector.com/ for links!
8/42www.camptocamp.com /
Find the doc
■ http://www.openerp-connector.com
■ Have a look at
http://www.openerp-magento-connector.com
(reference implementation, lots of great examples)
■ Source code itself.
9/42www.camptocamp.com /
Mailing List
■ Join the team on
https://launchpad.net/~openerp-connector-community
■ Shared for discussions about the connector and all
the different implementations
10/42www.camptocamp.com /
How to install
■ Just like any other add-on!
■ Grab the source code
bzr branch lp:openerp-connector/7.0
■ Add to --addons-path
■ Install in odoo like any other add-on
11/42www.camptocamp.com /
Multiprocessing and Workers
■ One odoo process: all is fine
■ Several processes: at least one independent
process must be launched for the processing of the
jobs queue
○ Tip: use the provided openerp-connector-worker
script
http://openerp-connector.com/guides/multiprocessing.html
12/42www.camptocamp.com /
Multiple databases and Workers
■ Supported!
Gotcha:
■ Only runs on databases that are
○ in the option database in the command line
○ or db_name in the configuration file
○ if nothing is provided, will run on all databases
13/42www.camptocamp.com /
Design goals – Overview
■ Do not impose a way of using the framework to the
developer, only strong advices
■ Propose bits of implementation, which can be used or
not, and the developer can cherry pick
■ The developer is in charge of choosing her path through
the code, the code does not choose it for her
■ Do not mix everything in Model objects
14/42www.camptocamp.com /
Design goals - Events
■ Declare an event only once
■ Consume it several times
○ → several actions can be triggered
■ Different connectors can share events
15/42www.camptocamp.com /
Code example: Events
16/42www.camptocamp.com /
Design goals - Jobs
■ Reliable
■ No batches!
■ Run in the background in a separate process
■ Overview of what is running, failing, waiting.
17/42www.camptocamp.com /
Overview - Jobs
18/42www.camptocamp.com /
Code example: Jobs
19/42www.camptocamp.com /
Design goals - Backends
■ Different behaviors across versions of a backend
(Magento 1.7 or 2.0, or a customized Magento
version...)
■ Extensible
20/42www.camptocamp.com /
Overview - Backends
21/42www.camptocamp.com /
Code example: Backends
22/42www.camptocamp.com /
Code example: Backends
23/42www.camptocamp.com /
The glue: Environment and
ConnectorSession
■ Environment is the current working context:
○ Model
○ Backend (with version)
○ ConnectorSession
■ ConnectorSession is a container for:
○ Cursor
○ User
○ Context
24/42www.camptocamp.com /
Design goals – Binding records
■ Store the external / odoo couples of IDs
○ Plus synchronization date
○ And possibly extra data related only to this record and this
backend
■ If several backends are possible (e.g. Magento):
→ _inherits on the model
■ If only one backend possible (e.g. Trello):
→ data may be added directly in the model
25/42www.camptocamp.com /
Example of binding record
26/42www.camptocamp.com /
Design goals - ConnectorUnit
■ Bare, decoupled, classes
■ Registered with a backend
■ 1 class: 1 responsibility
■ Combined to do the synchronizations
27/42www.camptocamp.com /
ConnectorUnit – Synchronizer
■ 2 kinds of synchronizers:
○ Importer
○ Exporter
■ Manage the flow of the synchronization
○ Use all or part of the other ConnectorUnit classes to
perform each synchronization step
28/42www.camptocamp.com /
Overview – ConnectorUnit (importer)
29/42www.camptocamp.com /
ConnectorUnit - Mapper
■ Transform data
■ Take data in, give data out
30/42www.camptocamp.com /
Code example: Mapper
31/42www.camptocamp.com /
Code example: using a Mapper
in a Synchronizer
32/42www.camptocamp.com /
ConnectorUnit - Binder
■ Know the external ID for an odoo ID (and
conversely)
■ Store the couple “external / odoo” IDs in binding
records
33/42www.camptocamp.com /
Code example: Binder
34/42www.camptocamp.com /
Code example: Binder bind method
35/42www.camptocamp.com /
Code example: using a Binder
in a Synchonizer
36/42www.camptocamp.com /
ConnectorUnit - BackendAdapter
■ Communicate with the external system
■ Speak the external language (REST, XML/RPC, …)
■ But 1 interface within odoo
○ Typically CRUD
○ Often uses helper library (trollop, requests, magento,
gdata...)
37/42www.camptocamp.com /
Code example: BackendAdapter
38/42www.camptocamp.com /
Code example: using a BackendAdapter
in a Synchronizer
39/42www.camptocamp.com /
Tests
■ Tests!
■ External system should not be required to run the
tests
→ Mock the external API
○ Examples in the Magento connector
40/42www.camptocamp.com /
Tips
■ When developing, deactivate the cron tasks / worker
process in charge of assigning and queueing the jobs
■ Use erppeek to run jobs one by one:
model('queue.worker').assign_then_enqueue(1)
■ Set a high priority on the job(s) you want to process first
○ high priority == low value
41/42www.camptocamp.com /
Demo: Trello connector
https://launchpad.net/openerp-trello-connector
Develop a connector on any apps using Odoo-connector

More Related Content

What's hot

Velocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFVelocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPF
Brendan Gregg
 

What's hot (20)

Five Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce StreamsFive Real-World Strategies for Perforce Streams
Five Real-World Strategies for Perforce Streams
 
Tools for Solving Performance Issues
Tools for Solving Performance IssuesTools for Solving Performance Issues
Tools for Solving Performance Issues
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
4. linux file systems
4. linux file systems4. linux file systems
4. linux file systems
 
Ceph and RocksDB
Ceph and RocksDBCeph and RocksDB
Ceph and RocksDB
 
Odoo External API
Odoo External APIOdoo External API
Odoo External API
 
Velocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFVelocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPF
 
5 Steps to PostgreSQL Performance
5 Steps to PostgreSQL Performance5 Steps to PostgreSQL Performance
5 Steps to PostgreSQL Performance
 
BlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year InBlueStore, A New Storage Backend for Ceph, One Year In
BlueStore, A New Storage Backend for Ceph, One Year In
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介
 
Reusing your existing software on Android
Reusing your existing software on AndroidReusing your existing software on Android
Reusing your existing software on Android
 
[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Linux boot process
Linux boot processLinux boot process
Linux boot process
 
Odoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best PracticesOdoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best Practices
 
Storage 101: Rook and Ceph - Open Infrastructure Denver 2019
Storage 101: Rook and Ceph - Open Infrastructure Denver 2019Storage 101: Rook and Ceph - Open Infrastructure Denver 2019
Storage 101: Rook and Ceph - Open Infrastructure Denver 2019
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
Sa1 chapter-5-managing-local-linux-users-and-groups-v2 (4)
Sa1 chapter-5-managing-local-linux-users-and-groups-v2 (4)Sa1 chapter-5-managing-local-linux-users-and-groups-v2 (4)
Sa1 chapter-5-managing-local-linux-users-and-groups-v2 (4)
 
twlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdsotwlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdso
 
The secret life of a dispatcher (Adobe CQ AEM)
The secret life of a dispatcher (Adobe CQ AEM)The secret life of a dispatcher (Adobe CQ AEM)
The secret life of a dispatcher (Adobe CQ AEM)
 

Viewers also liked

openERP- How to connect OpenERP with external Systems, AkretionAkretion base...
openERP-  How to connect OpenERP with external Systems, AkretionAkretion base...openERP-  How to connect OpenERP with external Systems, AkretionAkretion base...
openERP- How to connect OpenERP with external Systems, AkretionAkretion base...
Odoo
 
Best practices on how to import data into OpenERP. Cyril Morisse, Audaxis
Best practices on how to import data into OpenERP. Cyril Morisse, AudaxisBest practices on how to import data into OpenERP. Cyril Morisse, Audaxis
Best practices on how to import data into OpenERP. Cyril Morisse, Audaxis
Odoo
 
Odoo - How to create awesome websites and e-commerce
Odoo - How to create awesome websites and e-commerceOdoo - How to create awesome websites and e-commerce
Odoo - How to create awesome websites and e-commerce
Odoo
 
Odoo - Easily Reconcile your Invoices & Payments with the Brand New Bank Stat...
Odoo - Easily Reconcile your Invoices & Payments with the Brand New Bank Stat...Odoo - Easily Reconcile your Invoices & Payments with the Brand New Bank Stat...
Odoo - Easily Reconcile your Invoices & Payments with the Brand New Bank Stat...
Odoo
 

Viewers also liked (20)

OpenERP Magento Connector "New Generation" Workflow
OpenERP Magento Connector "New Generation" WorkflowOpenERP Magento Connector "New Generation" Workflow
OpenERP Magento Connector "New Generation" Workflow
 
openERP- How to connect OpenERP with external Systems, AkretionAkretion base...
openERP-  How to connect OpenERP with external Systems, AkretionAkretion base...openERP-  How to connect OpenERP with external Systems, AkretionAkretion base...
openERP- How to connect OpenERP with external Systems, AkretionAkretion base...
 
Development Odoo Basic
Development Odoo BasicDevelopment Odoo Basic
Development Odoo Basic
 
Modul Odoo ERP
Modul Odoo ERPModul Odoo ERP
Modul Odoo ERP
 
Finite capacity planning and scheduling for manufacturing: Odoo frePPLe conn...
Finite capacity planning and scheduling  for manufacturing: Odoo frePPLe conn...Finite capacity planning and scheduling  for manufacturing: Odoo frePPLe conn...
Finite capacity planning and scheduling for manufacturing: Odoo frePPLe conn...
 
Best practices on how to import data into OpenERP. Cyril Morisse, Audaxis
Best practices on how to import data into OpenERP. Cyril Morisse, AudaxisBest practices on how to import data into OpenERP. Cyril Morisse, Audaxis
Best practices on how to import data into OpenERP. Cyril Morisse, Audaxis
 
Odoo How to - Session - 1
Odoo  How to - Session - 1Odoo  How to - Session - 1
Odoo How to - Session - 1
 
Odoo - How to create awesome websites and e-commerce
Odoo - How to create awesome websites and e-commerceOdoo - How to create awesome websites and e-commerce
Odoo - How to create awesome websites and e-commerce
 
Odoo - Easily Reconcile your Invoices & Payments with the Brand New Bank Stat...
Odoo - Easily Reconcile your Invoices & Payments with the Brand New Bank Stat...Odoo - Easily Reconcile your Invoices & Payments with the Brand New Bank Stat...
Odoo - Easily Reconcile your Invoices & Payments with the Brand New Bank Stat...
 
Odoo - Business intelligence: Develop cube views for your own objects
Odoo - Business intelligence: Develop cube views for your own objectsOdoo - Business intelligence: Develop cube views for your own objects
Odoo - Business intelligence: Develop cube views for your own objects
 
The Odoo Culture
The Odoo CultureThe Odoo Culture
The Odoo Culture
 
How to manage a service company with Odoo
How to manage a service company with OdooHow to manage a service company with Odoo
How to manage a service company with Odoo
 
Odoo Strategy and Roadmap
Odoo Strategy and RoadmapOdoo Strategy and Roadmap
Odoo Strategy and Roadmap
 
Be a Team Leader, not a Manager!
Be a Team Leader, not a Manager!Be a Team Leader, not a Manager!
Be a Team Leader, not a Manager!
 
Improving the performance of Odoo deployments
Improving the performance of Odoo deploymentsImproving the performance of Odoo deployments
Improving the performance of Odoo deployments
 
Odoo - From v7 to v8: the new api
Odoo - From v7 to v8: the new apiOdoo - From v7 to v8: the new api
Odoo - From v7 to v8: the new api
 
Odoo 2016 - Retrospective
Odoo 2016 - RetrospectiveOdoo 2016 - Retrospective
Odoo 2016 - Retrospective
 
OpenERP Training with Apagen Solutions
OpenERP Training with Apagen SolutionsOpenERP Training with Apagen Solutions
OpenERP Training with Apagen Solutions
 
API REST para conectar Odoo
 API REST para conectar Odoo  API REST para conectar Odoo
API REST para conectar Odoo
 
Odoo OpenERP 7 SaaSKit
Odoo OpenERP 7 SaaSKitOdoo OpenERP 7 SaaSKit
Odoo OpenERP 7 SaaSKit
 

Similar to Develop a connector on any apps using Odoo-connector

Why and how to develop OpenERP test scenarios (in python and using OERPScenar...
Why and how to develop OpenERP test scenarios (in python and using OERPScenar...Why and how to develop OpenERP test scenarios (in python and using OERPScenar...
Why and how to develop OpenERP test scenarios (in python and using OERPScenar...
Odoo
 

Similar to Develop a connector on any apps using Odoo-connector (20)

Why and how to develop OpenERP test scenarios (in python and using OERPScenar...
Why and how to develop OpenERP test scenarios (in python and using OERPScenar...Why and how to develop OpenERP test scenarios (in python and using OERPScenar...
Why and how to develop OpenERP test scenarios (in python and using OERPScenar...
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
 
Boosting individual feedback with AutoFeedback
Boosting individual feedback with AutoFeedbackBoosting individual feedback with AutoFeedback
Boosting individual feedback with AutoFeedback
 
Why Concurrency is hard ?
Why Concurrency is hard ?Why Concurrency is hard ?
Why Concurrency is hard ?
 
Hexagonal Architecture.pdf
Hexagonal Architecture.pdfHexagonal Architecture.pdf
Hexagonal Architecture.pdf
 
Concurrency - Why it's hard ?
Concurrency - Why it's hard ?Concurrency - Why it's hard ?
Concurrency - Why it's hard ?
 
Continuous Integration In Php
Continuous Integration In PhpContinuous Integration In Php
Continuous Integration In Php
 
Contributing to the Odoo Community Association (OCA)
Contributing to the Odoo Community Association (OCA)Contributing to the Odoo Community Association (OCA)
Contributing to the Odoo Community Association (OCA)
 
Contributing to the Odoo Community Association
Contributing to the Odoo Community AssociationContributing to the Odoo Community Association
Contributing to the Odoo Community Association
 
2015-09-16 georchestra @ foss4g2015 Seoul
2015-09-16 georchestra @ foss4g2015 Seoul2015-09-16 georchestra @ foss4g2015 Seoul
2015-09-16 georchestra @ foss4g2015 Seoul
 
geOrchestra, a free, modular and secure SDI
geOrchestra, a free, modular and secure SDIgeOrchestra, a free, modular and secure SDI
geOrchestra, a free, modular and secure SDI
 
georchestra SDI: Project Status Report
georchestra SDI: Project Status Reportgeorchestra SDI: Project Status Report
georchestra SDI: Project Status Report
 
Headless Android
Headless AndroidHeadless Android
Headless Android
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fast
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"
 
Machine Learning & Graph Processing w/ Spark and Accumulo
Machine Learning & Graph Processing w/ Spark and AccumuloMachine Learning & Graph Processing w/ Spark and Accumulo
Machine Learning & Graph Processing w/ Spark and Accumulo
 
Android Platform Debugging and Development
Android Platform Debugging and DevelopmentAndroid Platform Debugging and Development
Android Platform Debugging and Development
 
XNAT_online_workshop_2020-05-13.pdf
XNAT_online_workshop_2020-05-13.pdfXNAT_online_workshop_2020-05-13.pdf
XNAT_online_workshop_2020-05-13.pdf
 
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary Slides
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary SlidesRise of the machines: Continuous Delivery at SEEK - YOW! Night Summary Slides
Rise of the machines: Continuous Delivery at SEEK - YOW! Night Summary Slides
 

Recently uploaded

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Recently uploaded (20)

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 

Develop a connector on any apps using Odoo-connector