Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Magento 2 ERP Integration Best Practices: Microsoft Dynamics

655 views

Published on

Magento 2 ERP Integration Best Practices: Microsoft Dynamics. Presented at MageTitans USA 2017.

Published in: Technology
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Magento 2 ERP Integration Best Practices: Microsoft Dynamics

  1. 1. Page | 2© 2017 Mage Titans Magento 2 ERP Integration Best Practices: Microsoft Dynamics
  2. 2. Page | 3© 2017 Mage Titans Joshua Warren CEO, Creatuity @JoshuaSWarren / #MageTitansUSA
  3. 3. Introductions
  4. 4. Page | 5© 2017 Mage Titans • Family of ERP systems • Dynamics AX • Dynamics GP • Dynamics NAV • Dynamics SL • Dynamics C5 Microsoft Dynamics
  5. 5. Page | 6© 2017 Mage Titans • Manages finance, manufacturing, CRM, supply chain and inventory for medium-sized enterprises Microsoft Dynamics NAV
  6. 6. Page | 7© 2017 Mage Titans • Needs no introduction Magento Commerce
  7. 7. Page | 8© 2017 Mage Titans • Business processes such as fulfillment and inventory management become highly automated • Employees don’t waste time manually entering data • Focus on delivering unique value – not just doing the things a computer could do Magento Commerce + Dynamics NAV
  8. 8. Page | 9© 2017 Mage Titans • Stable, scalable integration • Simple to maintain, low cost of ownership – no one wants to spend their budget on ERP integrations • Easy to support – no one wants to answer tickets about an ERP integration Project Goals
  9. 9. Page | 10© 2017 Mage Titans • Import basic product & inventory data from Dynamics (no PIM) • Export customers and orders from Magento into Dynamics • Import shipment data from Dynamics • Don’t break the Dynamics-powered POS deployed in 30+ stores – this is a real-world deployment, not a theoretical project Business Goals
  10. 10. Page | 11© 2017 Mage Titans
  11. 11. Page | 12© 2017 Mage Titans • Eliminate dependence on third-party encrypted ERP connectors A Corporate Mission
  12. 12. Page | 13© 2017 Mage Titans • Much of this integration was designed and written by an excellent long-time member of our development team, Scott A Special Thanks
  13. 13. Integration Architecture
  14. 14. Page | 15© 2017 Mage Titans • Base module for all of our integrations • Provides a common set of logging, reporting and UI components • Ensures all of our integrations have a merchant-friendly admin management page Base Module
  15. 15. Page | 16© 2017 Mage Titans • RabbitMQ, scalable messaging queue • Magento 2 has native support for communicating with Rabbit • Rabbit libraries for PHP, Java, .NET, Python, Javascript, Ruby & Go so ERP developers can use the language of their choice RabbitMQ
  16. 16. Page | 17© 2017 Mage Titans • Creatuity writes the module necessary to publish and consume Rabbit messages in Magento • ERP integrator or client’s in-house ERP team writes the code to publish and consume Rabbit messages for the ERP RabbitMQ – In General
  17. 17. Page | 18© 2017 Mage Titans • Creatuity also supports the client’s Microsoft Dynamics instance, so we’re writing both ends of the connection • Continuing to develop best practices around where to host the ERP-specific code in this case – another Magento module or a separate script RabbitMQ – Microsoft Dynamics
  18. 18. Page | 19© 2017 Mage Titans • Does the ERP have an existing PHP library? • If not, what language is the ERP’s library written in? RabbitMQ – Architecture Questions
  19. 19. Page | 20© 2017 Mage Titans • Best case – ERP’s library is written in PHP, merchant is using Magento Commerce Cloud • Worst case – client’s ERP utilizes an antiquated language and is hosted behind a strict firewall RabbitMQ – Architecture Questions
  20. 20. Page | 21© 2017 Mage Titans • Sometimes RabbitMQ is more than a smaller site needs • “Cron mode” enables direct communication from Magento to Dynamics using Magento’s cron system for scheduled tasks • Works well in this case as we are responsible for both the Magento code and the ERP integration code Rabbit Alternative - Cron Mode
  21. 21. Page | 22© 2017 Mage Titans • Task Layer • Service Layer • Data Layer • Connection Layer Layers
  22. 22. Page | 23© 2017 Mage Titans • Product update, shipment update and order update are each tasks • Easily add new tasks in the future • Cron and RabbitMQ level tasks occur here Task Layer
  23. 23. Page | 24© 2017 Mage Titans • Used to perform requests to Microsoft Dynamics • Executes and parses requests Service Layer
  24. 24. Page | 25© 2017 Mage Titans • Contains all logic related to processing both Magento and Microsoft Dynamics data Data Layer
  25. 25. Page | 26© 2017 Mage Titans • Performs and manages the actual connection to Microsoft Dynamics • Encapsulates all connection logic so remaining code doesn’t care how the connection works or if it changes Connection Layer
  26. 26. Integration Implementation
  27. 27. Page | 28© 2017 Mage Titans • Extract data from a source • Process, map and transform that data • Deliver it to the destination Basic Concepts
  28. 28. Page | 29© 2017 Mage Titans • Designed as a single Magento module • Module is broken down into 10 main models to implement our layers • Some of the models then break down into smaller components Structure
  29. 29. Page | 30© 2017 Mage Titans • Keeps code clean & easy to maintain Structure
  30. 30. Page | 31© 2017 Mage Titans • Manager that manages the overall data transformation process • Extractor pulls data from source, uses a Mapper to map fields to a standard format • Transform class performs basic transformations Data Layer
  31. 31. Page | 32© 2017 Mage Titans • Processor class processes changes in Magento that need to happen based on data from the ERP • Allows us to utilize core Magento functions for making these changes • DI & architecture of Magento 2 makes this simple • For instance – we use the core StockRegistryInterface API Data Layer - Processor
  32. 32. Page | 33© 2017 Mage Titans $stockItem = $this->stockRegistry->getStockItem($productData->getId()); $stockItem ->setQty($intermediateData->getQty()) ->setIsInStock($intermediateData->getIsInStock()); $this->stockRegistry->updateStockItemBySku($productData->getSku(), $stockItem); Updating Magento Stocks from ERP
  33. 33. Page | 34© 2017 Mage Titans • Microsoft Dynamics NAV can be customized – field names can be changed • Don’t hard-code field names • Separate out implementation-specific code from platform- specific code Lessons Learned
  34. 34. Page | 35© 2017 Mage Titans • 150 hours of development work and QA • 10 hours of documentation • Deploying this integration for future Microsoft Dynamics clients could be a 5-10 hour process Implementation Effort
  35. 35. End User Experience
  36. 36. Page | 37© 2017 Mage Titans • Customers on the site aren’t aware the ERP exists – which is our goal • Their orders are fulfilled quickly and they receive a tracking number soon after placing their order • If the customer experience is impacted by your ERP, there’s room to improve that integration Customer-Facing Experience
  37. 37. Page | 38© 2017 Mage Titans • Warehouse staff fulfill orders out of Microsoft Dynamics as they always have – no need to login to a separate system • Customer service representatives can view up-to-date product inventory and order status information in Magento, no need to login to Dynamics • If a sync encounters an issue, detailed information is available in the Magento admin panel for easy troubleshooting and resolution Admin User Experience
  38. 38. Page | 39© 2017 Mage Titans • Previous off-the-shelf connector required a developer to SSH to the server any time the sync failed. • Encrypted code made debugging impossible • No stable base for feature enhancements Developer Experience
  39. 39. Future Improvements
  40. 40. Page | 41© 2017 Mage Titans • Refactoring code to allow other members of the Microsoft Dynamics family to easily integrate with Magento • Developing new adapters based on other integration methods (i.e., CSV files) • Expanding to connect with other ERPs as well Adapters
  41. 41. Page | 42© 2017 Mage Titans • One consistent system for all integrations, lowering maintenance costs and time to implement • Open source? Collaboration? Vision
  42. 42. Results
  43. 43. Page | 44© 2017 Mage Titans • Restocked products go live on Magento much more quickly • Errors importing one order no longer stops all other orders from importing • It just works – no longer have to think about the ERP integration Faster, More Reliable Syncing
  44. 44. Page | 45© 2017 Mage Titans • This integration would’ve taken substantially longer if not for the design patterns and architecture of Magento 2 • Code is cleaner, easier to maintain and more robust thanks to following the Magento 2 architecture Impact of Magento 2
  45. 45. @JoshuaSWarren / Creatuity.com Questions?

×