Magento Commerce 2.2.2 Release Notes
Patch code and release notes published on December 12, 2017.
Release notes updated on January 5, 2018.
We are pleased to present Magento Commerce 2.2.2. This release includes new tools and numerous functional fixes and enhancements, plus a substantial number of contributions from the wider Magento community.
Look for the following highlights in this release:
Significant new features that streamline the customer experience and provide merchants with greater insight into their online business.
Numerous fixes and enhancements to core features, including significant improvements to the payment process.
Ninety-six community-submitted bug fixes and multiple pull requests.
Advanced Reporting powered by Magento Business Intelligence. Access easy-to-use order, product, and customer reports right from the Magento Admin to gain new insights and enable data-driven decision making. See Advanced Reporting for more information.
Magento Shipping (powered by Temando). This new feature provides integrated advanced multi-carrier shipping and fulfillment. (In addition to these release notes, you can find Magento Shipping-specific release notes in Magento Shipping Release Notes.)
Streamlined Instant Purchase checkout (contributed by Creatuity). Our new streamlined Instant Purchase option uses previously stored payment credentials and shipping information to bypass steps in the checkout process. See Instant Purchase module for more information.
Integrated dotmailer marketing automation software. Magento is one of the first ecommerce solutions to include the dotmailer marketing automation with their core product. See Email Marketing Automation.
Magento Functional Testing Framework. The Magento Functional Testing Framework (MFTF) is our open-source, cross-platform testing solution. Its purpose is to facilitate functional testing and minimize efforts to perform regression testing. See Introduction to Magento Functional Testing Framework.
Fixes and enhancements
Significant enhancements for payment methods. We’ve added support for the Indian Rupee (INR) to PayPal Express Checkout. We’ve also added a fix for an issue where some Braintree refunds did not work.
Improvements to multi-storeview sites. Switching store views multiple times no longer results in an error on the storefront.
New functionality for the command-line interface. We’ve added interactivity to the
admin:user:createcommand and added the ability to handle CLI setup interactively (with prompts).
You can now use the Enter key (in addition to a mouse click) to search tables in the Admin.
Magento no longer creates duplicate shipments when merchants create shipments with bundled products via API.
Installation, setup, and deployment
- We’ve increased the
.user.inifiles to 2GB. GitHub-11322
- The contents of the
js-translation.jsonfiles are now correct when you deploy static content with multiple locales.
- All cron dates are now saved in a single format and displayed according to user preference or needs. GitHub-4237
- Static versioning and minification no longer break email font styles. GitHub-8241
- You can now successfully upgrade from from 2.1.x to 2.2.0. Previously, when you tried to upgrade from 2.1.9 to 2.2.0, Magento displayed the postcode is a required field error message, and
setup:upgradefailed. Fix submitted by Mr. Lewis in pull request 11651. GitHub-11095
- We’ve replaced
htaccesstemplate now supports
apache2.4commands. Fix submitted by Jonas Hünig in pull request 11459. GitHub-10810 GitHub-10810
configVariablesnow contains a variable for VAT numbers. Fix submitted by Jeroen in pull request 11486. GitHub-10996
- We’ve fixed an issue with using the command line to install or remove
crontab. Previously, installing or removing
crontabvia the command line appended
2>&1to entries, even those not related to Magento. Fix submitted by @adrian-martinez-interactiv4 in pull request 11591. GitHub-11586
- You can now install and uninstall
bin/magento cron:installcommand. Fix submitted by @adrian-martinez-interactiv4 in pull request 11359.
admin:user:createcommand now recognizes the configured table prefix. Fix submitted by Oscar Recio in pull request 11199. GitHub-11176
- The default cron success or failure history is now seven days. Fix submitted by Max Chadwick in pull request 11505.
admin:user:createcommand now asks for the input value if a required option is not passed. Fix submitted by Christian Münch in pull request 11510.
/pub/.user.ininow specify a
memory_limitvalue of at least 1G to 2G for debugging purposes. Fix submitted by Mr. Lewis in pull request 11734. GitHub-11322
setup:installcommand now has an
-iflag. It validates parameters interactively. Fix submitted by Denis Ristic in pull request 11425.
- Magento now restarts cron jobs as needed after a cron job was terminated during execution.
- You can now enter strings that exceed 255 characters in Admin or frontend input fields. Previously, Magento saved only the first 255 characters of a long input string. GitHub-6238
- Magento now renders color attribute swatches correctly for the search result page if sorting for color attribute is enabled. Fix submitted by Roman K. in pull request 12077. GitHub-10628
\Magento\Quote\Model\ResourceModel\Quote\Item\Collectionnow returns items that have only existing relations in the
catalog_product_entitytable. Previously, Magento loaded quote items with non-existing products.
- Magento no longer duplicates attribute option values. Previously, Magento did not confirm the uniqueness of an attribute option value if you created it using REST. GitHub-8846
- Magento now saves the correct background color for images. Previously, product images always had a black background when using the Luma theme. GitHub-8799
- You can now save a product custom option price with a value of 0 (zero) by simply not entering a price. Fix submitted by Raul Mateos in pull request 11843. GitHub-4808
- You can now assign products to categories if those products are already assigned to the category tree. GitHub-8970
apply_tosetting for attributes is no longer hard-coded. GitHub-7225
- The Add to cart checkboxes in Related Products are no longer visible on the storefront when $canItemsAddToCart is set to false. Fix submitted by Marc Rodriguez in pull request 11610. GitHub-6891
- You can now successfully save and duplicate a simple product. Previously, when you clicked the Save and Duplicate option for an existing simple product in the Catalog Manager, Magento did not duplicate the product, but threw an error. Fix submitted by Roman K. in pull request 12001. GitHub-11532
- The Magento Admin Product Edit page now displays product alerts as expected. Fix submitted by Raul Mateos in pull request 11445. GitHub-10007
setProductsFilternow accepts an array of IDs. Previously, this method accepted either a single integer or an array, but returned only one item. Fix submitted by Kirill Morozov in pull request 11500. GitHub-7678
$sortByPostionflag has been added to the
getChildren()method. Fix submitted by Denis Ristic in pull request 11342. GitHub-11310
ProductRepositorySKU cache is no longer corrupted when
cacheLimitis reached . Fix submitted by Thomas in pull request 11553.
- Magento no longer displays the perpetual spinner when you switch custom options types in the Product Edit page. Fix submitted by Paul Briscoe in pull request 11824. GitHub-10291
Cart and checkout
- The default shipping-save-processor now has a payload extender. This feature allows third party extensions to modify the payload for the shipping address selection process. As a result, developers can now add
extension_attributeswhile minimizing potential extension conflicts. Fix submitted by Navarr Barnier in pull request 11249.
- You can now view the Products in cart report if the cart contains a bundle or a grouped product. Previously, when you viewed the Products in Cart report, Magento threw an exception under these conditions. GitHub-12079
- Magento now recognizes zip codes without spaces for addresses located in the Netherlands. GitHub-11898
- Magento now accepts coupon codes with special characters during checkout. Fix submitted by Gabriel Queiroz Silva in pull request 11710. GitHub-9763
- We’ve improved cache control headers.
- Magento no longer throws an exception when you place an order using a new address. Previously, Magento displayed this error, An error occurred on the server. Please try to place the order again.. GitHub-10583
- Magento now includes the Filter Groups and the Sort Order of the
$searchCriteriaparameter in the
searchCriteriaObject that is provided for the EAV set repository. Fix submitted by David Verholen in pull request 11421. GitHub-11022
- Magento no longer sets the product price to zero when you use REST to add a product to an empty cart. Previously, Magento displayed an error when you used REST to populate an empty cart. Fix submitted by Peter Jaap Blaakmeer in pull request 11458. GitHub-2991, GitHub-2991
- You can now translate the placeholder text for the checkout password field. Fix submitted by Jeroen in pull request 11493.
- Magento now redirects a user to the checkout page if he logs in after selecting the Checkout button. Previously, a user was redirected to the store home page. Fix submitted by @p-bystritsky in pull request 11876. GitHub-10834
Magento\ConfigurableProduct\Model\Product\Type\Configurable:::loadUsedProductsno longer ignores array keys that are returned by product collections. GitHub-11880
- The NGINX configuration sample now contains a health check. Fix submitted by Andrew Howden in pull request 11690. GitHub-11157
- Magento now allows underscore characters in module names and also permits their use when modules add a block to the layout via XML. Previously, Magento did not support underscore characters in module names to be added to the layout via XML. Fix submitted by Ben Tideswell in pull request 11765.
- You can now save using the mass action Update attributes option when multiselect attributes are set. Fix submitted by Manu Gonzalez Rodriguez in pull request 11349. GitHub-11329
- Magento now correctly handles all meta keywords and description in categories and in every product in locales that use non-Latin characters. GitHub-10682
- You can now include negative values in an XML export file and open the file with Office XML handler. Previously, the export files did not open correctly, and an Office XML handler error log was created. Fix submitted by HausO in pull request 11757. GitHub-11729, GitHub-11729
- The Magento custom URL rewrite functionality now works as expected when you include redirection of Magento controllers. Fix submitted by Marc Rodriguez in pull request 11470. GitHub-10231, GitHub-11469, GitHub-11471
- Magento now supports the setting of HTTP response status code in redirected responses. GitHub-9028
- Magento now throws a meaningful exception when a virtual theme does not have a physical parent theme. Fix submitted by David Fecke in pull request 11240.
app:config:dumpno longer adds an extra space to multiline array values. Fix submitted by @adrian-martinez-interactiv4 in pull request 11439. GitHub-11328
- The TRAVIS_BRANCH variable is now surrounded by double-quotes instead of single-quotes . Fix submitted by @adrian-martinez-interactiv4 in pull request 11704.
- The doc block of
setValuein FilterBuilder now reflects that the
setValuemethod will accept an array. Fix submitted by bytecreation in pull request 11854.
htaccesssyntax now uses
Options -Indexesinstead of
Options All -Indexes. Previously, Magento used
Options All -Indexes, which resulted in Magento rendering a 500 error page because of high restrictions for Options overrides in shared hosting environments. Fix submitted by @Danny Verkade - Cream in pull request 11327. GitHub-10812
- The X-Magento-Tags header can now contain white space. Fix submitted by Malyovanets Nickolas in pull request 11767. GitHub-7640, GitHub-7640
- The config array can now read all settings from
config. Previously, the config array was hardcoded to read three settings only. Fix submitted by Vova Yatsyuk in pull request 11643.
- Magento now exports the Confirmed email and Account Lock values when you export customer data. Previously, this information was missing from the exported CSV. Fix submitted by Luke Rodgers in pull request 11437. GitHub-10765, GitHub-10765
- You can now submit the search form from the keyboard. Fix submitted by Romain Ruaud in pull request 11250. GitHub-10275
- We’ve removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage.
- A typo in
sessionStoragepolyfill has been corrected. Fix submitted by mszydlo in pull request 11219.
Web API framework
customerAccountManagementV1interface now provides the
- XHTML templates now use schema URNs. GitHub-6661
- The image size used as a cross-sell product placeholder now equals the size of the image used in product listing placeholder images. Previously, the cross-sell product placeholder image was too small. GitHub-12017
- Magento now downloads the backup
.tgzfile that you select for downloading. Previously, no matter which backup you selected, Magento downloaded the most recent backup. Fix submitted by Pieter Cappelle in pull request 11595. GitHub-10032
- Magento now leaves a product’s date attribute’s current date field blank if you do not enter a value. Fix submitted by @enriquei4 in pull request 11749. GitHub-9869, GitHub-11636, GitHub-6661
- The Magento store code validation
regexnow supports uppercase letters in store code. GitHub-11996
- Magento now sets ISO-valid language code in the HTML header. Fix submitted by Cristian Sanclemente in pull request 11561. GitHub-11540
- Magento now validates CMS blocks before creating one. Fix submitted by Thiago in pull request 11802. GitHub-8236, GitHub-4831
- A custom field’s name attribute no longer remains empty during form creation. Fix submitted by Paul Briscoe in pull request 11637. GitHub-9944
widget.xmlfiles can now contain multiple
dependsparameters. Fix submitted by Raul E Watson in pull request 11495. GitHub-9783
- You can now use an
adminhtmlURL that differs from
adminand set Add Store Code to Urls to Yes. Fix submitted by Sylvain Rayé in pull request 11460. GitHub-11140, GitHub-11140
- You can now add an HTML node to the page XML root of a theme without causing a validation error. GitHub-11697
customer_data_objectfirstname is no longer equal to
orig_customer_data_objectafter you save an existing user account with a new name or address. Fix submitted by Roman K. in pull request 11676. GitHub-7915
- We removed a typo in the Paypal Module. GitHub-7591
- We’ve fixed the dashboard graph’s y-axis range. Fix submitted by Oscar Recio in pull request 11751. GitHub-7927
- Magento no longer throws an error when you try to load a quote item collection. GitHub-8954
- Customer Groups are now located in the Magento Admin under Customers > Customer Groups. Fix submitted by Mr. Lewis in pull request 11677.
- Magento now wraps long label text by word instead of letter. Fix submitted by @enriquei4 in pull request 11745. GitHub-7099, GitHub-711727
- Magento now displays and expects the format of birth years to match
yy. Fix submitted by Manu Gonzalez Rodriguez in pull request 11351. GitHub-11332
- Magento now displays the State/Province field after you edit the billing address on sales orders. Fix submitted by Raul Mateos in pull request 11381. GitHub-10441
- You can now successfully sync billing and shipping addresses on Admin Reorder and Admin Customer Create Order page for selected, existing addresses. Fix submitted by Ievgen Sentiabov in pull request 11385. GitHub-10856
FixAccountManagementTestunit test now works as expected. Fix submitted by @adrian-martinez-interactiv4 in pull request 11607.
- You can now submit a form by pressing Enter. Fix submitted by Raul Encinas in pull request 11827. GitHub-4696
- The Store View switcher now works as expected. Fix submitted by Thiago in pull request 11337. GitHub-10908, GitHub-11211
- We’ve removed object manager references as well as deprecated calls to
$messageManager. Fix submitted by Atish Goswami in pull request 12061.
- Magento now prepares street data to guarantee that the street array will be converted to a string. Fix submitted by Vova Yatsyuk in pull request 12130.
- Disabling and enabling the WYSIWYG editor with
ui/form/element/helper/servicecheckbox now works as expected. Fix submitted by Vova Yatsyuk in pull request 12141.
last modtime stamp now contains the correct date. GitHub-9151
- The Visual Swatch Attribute drop-down menu (accessible from Manage Swatch tab) now works as expected. Previously, when you clicked the Add Swatch button from this tab, the drop-down menu was not displayed. Fix submitted by @enriquei4 in pull request 11747. GitHub-11534
- Users are now subscribed by default to the Advanced Reporting service.
- The design rule hint message no longer includes a typo. Fix submitted by Javier Villanueva in pull request 11390. GitHub-8958
- Storefront labels and messages now use the American English spelling of “optimization”. Fix submitted by David Angel in pull request 11345.
- The Add page button now works as expected. Previously, when you clicked Add page while logged in to the Admin, and clicked Save, Magento did not create a new page, but returned you to the Orders page, and displayed this message: Data key is missing: code-entity. Fix submitted by Tomasz Gregorczyk in pull request 11205. GitHub-11163
- To improve performance, Magento now loads all relations using one query per bunch. Previously, Magento loaded relations one by one (multiple times for multiple attributes types). GitHub-10920
- Magento now provides more helpful error messages if problems occur during the import of products and images using System > Import Products. GitHub-4711
- Magento now provides better error reporting when an error occurs during the import of a CSV file with a semicolon delimiter. Previously, Magento stopped import, but did not provide a link to the error report CSV file. GitHub-5015
- Exception message was passed as a exception description argument instead of exception message. Fix submitted by Tim Bezhashvyly in pull request 11363. GitHub-6924
- Importing an import file to update customer data no loner results in the
entity fieldsbeing removed if the columns were not present on the imported file. Fix submitted by Juan Alonso in pull request 11968.
- Magento no longer re-indexes entities if they are unchanged, which improves the performance of the refresh index cron job without any loss of functionality. GitHub-4893
- Magento now correctly resets status to
StateInterface::STATUS_INVALIDif a fatal PHP error occurs during indexing. Fix submitted by Lars Roettig in pull request 11183. GitHub-11166
- New static block tests now detect blocks without a name attribute. We’ve also added a missing block name to allow block customization, and added a name for the order items grid default renderer block. Fix submitted by Ihor Sviziev in pull request 11235. GitHub-10824
- We’ve ported a fix for the Travis CI builds for the
2.2-developbranch to the
2.3-developbranch. Fix submitted by Ievgen Shakhsuvarov in pull request 11555.
- Integration tests now reset the integration test database when
TESTS_CLEANUPis set to enabled. Fix submitted by Joshua Warren in pull request 11499. GitHub-10025
- A typo in
Paypal/Test/TestCase/OnePageCheckoutTest.xmlhas been fixed. Fix submitted by Mr. Lewis in pull request 11673. GitHub-7591
FileClassScannerTestno longer has a dependency upon
Magento_Catalog. Fix submitted by WEXO team in pull request 12144. GitHub-11230
- Newsletter subscriptions now work as expected. Previously, Magento did not set the
create-datefield, and the
change_status_atwas broken. GitHub-4004
- When a customer with the same email address has an account on different stores in the same Magento installation, changes to the newsletter subscription in one account no longer affects the other subscription. Fix submitted by Sergio Baixauli in pull request 12035. GitHub-10014
- Magento now sends email confirmation of newsletter subscription to a user only when the user is newly subscribed. Fix submitted by Oscar Recio in pull request 11317. GitHub-5439
- Magento now retains an order’s
relation_child_real_idfield values when you edit the order. Previously, after you edited an order, the values of the
relation_child_real_idfields of the old order did not persist. GitHub-10195
- Magento no longer duplicates the Add Products button after you change the customer group. GitHub-11868
- New orders now appear as expected in the Order table after you migrating data. GitHub-10185
- You can now create an order from the Customer Edit page when working from the Admin. Fix submitted by Roman K. in pull request 11952. GitHub-11832
getTracksCollection()method now returns collection objects. Previously, this method returned either collections or arrays. Fix submitted by Roman K. in pull request 12173. GitHub-8022
- References to
Zend_Pdf_Color_RGBnow correctly use the camel-case class name (
Zend_Pdf_Color_Rgb). Previously, the former class name resulted in references to wrong or nonexistent classes. Fix submitted by Danny Verkade - Cream in pull request 11830. GitHub-11581
- The Order table now accurately reflects changes in order status.
- Invoices now display coupon code information. Fix submitted by Cristian Sanclemente in pull request 11635. GitHub-10168
- Magento no longer lets you cancel an invoice more than once. Fix submitted by Oscar Recio in pull request 11261. GitHub-9968
guest.phpnow handles breadcrumb performance as expected. Fix submitted by Juliano Vargas in pull request 11299. GitHub-11275
- Magento now sends confirmation emails to customers for orders containing a grouped product. Previously, when you tried to submit an invoice for an order containing a grouped product, Magento threw an error and did not send confirmation email to the customer. Fix submitted by Michiel Gerritsen in pull request 11297. GitHub-5105
- Magento PayPal integration now supports the Indian Rupee currency (INR).
- Braintree online refunds now work when you are using two Braintree accounts on two separate websites. Previously, when using two Braintree accounts for two separate websites, Magento did not process the refund, and displayed this message: Sorry, but something went wrong.
- Administrators with limited privileges can now log in without errors. Previously, Magento threw an error, but did not log errors in either the server or Magento logs. GitHub-11700
- Corrected a typo in a translatable string. Fix submitted by Danny Verkade - Cream in pull request 11569.
- Magento now displays the correct payment method string as displayed during checkout. Previously, the translated string associated the payment method title for a particular store view was not consistently displayed. Fix submitted by Bernhard in pull request 11165. GitHub-7582
- The search for the Customer Review report now works as expected. Fix submitted by Oscar Recio in pull request 11522. GitHub-10301
- Magento now reports handled exceptions to New Relic. Previously, Magento displayed only fatal errors. Fix submitted by Max Chadwick in pull request 11944.
- The Admin’s Most Viewed Products tab now displays all the products in all attribute sets, not simply the default attribute set. GitHub-9768
- You can now add a bundle product that includes a simple product with a price of 0 (zero) to your cart. Previously, Magento threw an error. GitHub-8969
- Cart Price rules are now applied to products if dropdown attributes are present. Previously, Magento checked only the items that were visible in the cart against the specified conditions. Fix submitted by Marina Gociu in pull request 11274. GitHub-10477
- The search template now uses the custom URL specified in
Magento\Search\Helper\getSuggestUrl()instead of the default. GitHub-6802
- Magento no longer throws an asymmetric transaction error on re-indexing when you use ElasticSearch as your search engine.
You can find Magento Shipping-specific release notes in Magento Shipping Release Notes.
- Magento now displays by default of two shipping address lines even when the
street_linessetting in customer configuration is set to 0 (zero). GitHub-7995
- Magento no longer displays a blank page at the shipping stage of checkout when the user tries to return to the Shipping page from the Payments page by clicking Back. GitHub-11197
- The Shipping report available from the Admin now uses the correct currency code. GitHub-11793
- An invoice’s
base_grand_totalnow match as expected. Previously, these values differed, leading to a rounding error when calculating the
- Magento now adds a customer note to a shipment invoice when the shipment is created by API and
appendCommentis set to true. Fix submitted by Jeroen in pull request 11383. GitHub-11207
- Shipping method radio buttons no longer have duplicate element IDs on the cart page. Previously, these radio buttons had duplicate IDs, which made it impossible to select the second method. Fix submitted by Peter Jaap Blaakmeer in pull request 11406. GitHub-10795
- The Shop By button is now rendered as expected on Android platforms. Previously, the Shop By button and other contents were positioned incorrectly. Fix submitted by Lorenzo Stramaccia in pull request 11430. GitHub-10941
freePackageValuevalue is now required to be defined. Previously, this value could be undefined, but in some cases was still accessed. Fix submitted by Alexander Menk in pull request 11720.
- We’ve fixed a problem with the Ignore this notification setting. Fix submitted by Cristian Sanclemente in pull request 11410. GitHub-11365
- You can now implement translations from themes (in contrast to translations from modules).
- Previously missing translation strings have been added to the UI module. Fix submitted by Jeroen in pull request 11440. GitHub-5956
- We’ve fixed an issue with the
<![CDATA]>translate phrase in the
system.xmlfile. [Fix submitted by Malyovanets Nickolas in pull request 11675. GitHub-7767
- The update
button.phtmltranslation has been simplified. Fix submitted by Karla Saaremäe in pull request 12136.
- Cache headers for documents now factor in the cookie for the store code as expected.
Issue: In Swagger, the text area that contains the payload structure of some POST and PUT operations is not displayed. If a fraction of the text area is displayed, you can click on it to display the payload structure in a text area in the center of the page. If the text area is not displayed at all, then you cannot access the payload structure.
Workaround: Use the static Swagger site to navigate to the REST call you want to use, then copy the payload structure to your Swagger instance.
Magento Shipping issues
We’ve identified the following unresolved issues with this version of Magento Shipping:
Issue: Merchants should not use Magento Shipping to connect with FedEx at this time. This option will be removed by Friday, December 15, and any existing shipping options tied to FedEx will no longer work at that time. We will be re-enabling FedEx integration through Magento Shipping at a future date.
Issue: Currency conversion problem for shipping methods during checkout when store supports multiple currencies.
Workaround: Ensure that the experience currency, base currency, and display currency are the same. Additionally, incorporate these best practices into your shipping method configuration by ensuring that:
- the Magento Core base currency is the same as the experience currency (Store > Configuration > Currency Set Up > Base Current).
- the Magento Core base currency converter is the same as the experience and base currency (Store > Currency Rates)
Issue: Selecting a shipping method at checkout can sometimes result in two shipping methods being selected. This issue occurs during checkout. When a user selects a shipping method during checkout, Magento will select two shipping methods.
Workaround: Ensure that no two rules with a ‘Show Shipping Method’ outcome can both apply to the scenario. Consider these example rules:
- Rule 1: Show ‘Free Shipping’ for Country is Canada and Cost is not greater than $99.99
- Rule 2: Show ‘Free Shipping’ for Country is not Canada and Cost is greater than $100
We are grateful to the wider Magento community and would like to acknowledge their contributions to this release.
The following table identifies contributions from our community members. This table lists the external pull requests, the GitHub issue number associated with it (if available), and the community member who contributed the pull request.
Our technology stack is built on PHP and MySQL. For details, see Technology stack requirements
For more information, System Requirements.
Installation and upgrade instructions
See How to get the Magento software for complete installation and upgrade information.
The Data Migration Tool helps transfer existing Magento 1.x store data to Magento 2.x. This command-line interface includes verification, progress tracking, logging, and testing functions. For installation instructions, see Install the Data Migration Tool. Consider exploring or contributing to the Magento Data Migration repository.
The Code Migration Toolkit helps transfer existing Magento 1.x store extensions and customizations to Magento 2.0.x. The command-line interface includes scripts for converting Magento 1.x modules and layouts.