Message:

Parse to Backendless Migration Guide

Welcome to Backendless! We would love to be a backend of your choice. This is an evolving document which is updated as we iterate over features and simplify the Parse-to-Backendless migration process. Our goal is to make the transition as smooth as possible and we greatly rely on your feedback.

Update (03.24.16)

Support for custom server-side code in JavaScript is now available. Documentation.

Update (02.11.16)

We conducted a webinar on the topic of migration from Parse to Backendless. We recommend watching the webinar to become more familiar with Backendless and the migration process. There were a lot of answered questions and we hope you will find the recording useful:


Data Objects

Migration of data objects from Parse to Backendless is possible through the Export/Import procedure. Backendless implements a special data import algorithm for processing Parse’s export files and migrating user accounts, data objects, geopoints and files into Backendless. The import procedure should handle about 99% of possible deployment scenarios. If you however, you experience an error during the import or the data tables are not fully imported, please upload the Parse’s export file to either Dropbox or Google Drive and send the link to support@backendless.com so we can investigate it further.

data-import


Files

Similar to Parse, Backendless offers a hosting service for your application files. Unlike Parse, the hosting service can contain both static and dynamic (node.js) content. Parse dashboard does not contain File Browser and unfortunately there is no API to retrieve file listings from the Parse’s storage. This makes the migration of the files cumbersome. You can upload individual files to Backendless either using the API or with Backendless Console. It should be fairly straight-forward to create a script that accepts a listing of URLs of files hosted in Parse and uploads each of them to Backendless.


 Push Notifications

Backendless supports push notifications for Android, iOS and Windows Phone devices. To migrate your push notification functionality, you need to perform the following changes:

  1. Configure your Backendless backend with certificates and API keys as documented:
  2. Modify the client application to use the Backendless API to register device:
  3. Publish push notifications:

Users and Roles

Similar to Parse, Backendless stores user accounts in a special “Users” table. When you perform data import into Backendless, the user accounts will be recreated in Backendless as well. As for roles, Backendless maintains them separately (there is no specialized table for roles). Instead, they are available in the Users > Security & Permissions section of Backendless Console:

app-roles

The data import procedure will import the roles so they are recognized by Backendless.


Social Logins (Facebook, Twitter, Google+)

Backendless offers richer API support for social logins. Our APIs and the backend support include the complexity that otherwise would need to be in your app. There are two approaches available in Backendless. One is without Facebook/Twitter SDKs (it is called “easy login”) and the other with FB/Twitter SDKs. The following documentation describes the approaches and the configuration steps you need to go through to configure the backend:


Cloud Code

We use the term “Server code” and “Business logic” for the functionality Parse calls “Cloud Code”. Backendless supports three server-side languages: Java, PHP and JS(Node.js). Custom code on the server-side falls into the following categories:

  • Backendless Hosting – this is the file storage associated with your backend. It can contain both static and dynamic content. The dynamic content is possible with Node.js scripting (using the express.js framework). You can place your node.js scripts into Backendless file hosting and every JS file gets its own URL which can be used to call on the script. It supports GET and POST methods. Here’s a video overview of the node.js scripting in Backendless.
  • Server-side API Event handlers – you can attach your own custom code to every single API supported by Backendless. The code can be invoked before or after the default API implementation. This can be done in Java, PHP and JS (Node.js). When you build custom event handlers, you can use a code generator which is built into Backendless Console You can debug the custom code on your own computer before deploying it to our cloud.
  • Custom APIs – Backendless Platform supports generation of APIs from arbitrary Java and PHP code (node.JS support is coming in April). Once you deploy your Java or PHP code, the REST APIs and native mobile SDKs are created by inspecting the deployed code.

Jobs (Backendless Timers)

Backendless uses the term “Timers” for the functionality Parse calls “Jobs”. The concept is exactly the same, with the difference on the runtime duration a timer can run. A timer can be written either in Java, PHP or JavaScript. Backendless includes a code generator with a visual interface for configuring timer’s schedule:

timer-config

The primary difference between Parse and Backendless jobs/timers is the duration a timer can run for. Backendless free tier limits it to 5 seconds. It can be expanded to 20 seconds with a “Function Pack” available in Backendless Marketplace (click Marketplace in Backendless Console and select the Business Logic category).


Webhooks

Currently webhooks are not supported. We are adding support for this functionality. It should be available in the next 3-4 weeks.