Audience : Jomres users who are already familiar with the system.
Jomres2jomres is a part of the Channel Management Framework group of plugins.
The purpose of the functionality is to allow you to create a network of Jomres sites where Properties, pricing, availability and bookings are shared from a parent to child servers. This allows you to, if you want, entirely bypass the need to be connected to any Channel Managers at all. Instead you'll create properties on one site and share them on one or more child sites. This makes your main server the Channel Manager and the individual child sites the OTAs.
Besides normal OTAs (renters of hotels, villas etc) other businesses who could potentially benefit from this functionality would be renters of camp sites, cars, boats etc. This is because those businesses don't normally use Channel Managers to synchronise those items between websites.
At the time of writing this article the Jomres2jomres plugin is still under development, however certain parts of it's functionality are already available through the relevant plugins in the Jomres plugin manager so those users who want to explore this exciting new feature can do so.
Getting started
Before we get started setting up your Parent and Child server, there are a few pre-requisites. You need two installations of Jomres, and you need to save your Jomres license key on both installations (you can re-use one key on both, that's not a problem). Ideally these two installations would be relatively "virgin" installations. To date the CMF template files for Bootstrap 2 (e.g. Protostar template in Joomla) don't exist therefore you would ideally be running WP or Joomla with the Leohtian theme/template installed and activated.
Make sure that you have renamed htaccess.txt to .htaccess if running Joomla, and if you're using a non-standard version of that file make sure that Rewriting (RewriteEngine On) is enabled.
I've had several users try to use the API on wordpress with varying levels of success so for the purposes of this tutorial I built the installations on Wordpress instead of Joomla as I would normally choose, to help me identify tweaks that you might need and the first one I ran across was a default installation of WP I couldn't access the API, it failed with a 403 error. After a little digging I found that adding
Options FollowSymLinks
if FollowSymLinks isn't allowed then SymLinksIfOwnerMatch may work instead.
to the Wordpress .htaccess file fixed that issue. Make this change on both the Child and Parent servers, if you need to. The Channel Management Framework plugin needs to call the local Jomres installation because it talks to itself to do stuff and without this change (on Ubuntu & Wordpress) a 403 forbidden error will be thrown.
Double check the REST API functionality all works correctly by visiting Admin > Jomres > Tools > REST API test page on both Parent and Child. This serves two purposes, firstly it tests the REST API paths are reachable, but it also sets up the "system" REST API client which is used extensively by the CMF functionality.
For now do not change the Regions as stored in the Parent or Child sites. This advice may change in the future but right now they should remain the same as a default installation (you can Rename them on the child server, but you shouldn't add or remove any).
On both Parent and Child sites, set the Admin > Jomres > Settings > Site Configuration > Misc tab option "API Core configuration" to Yes.
If you are using Cloudflare, it's recommended that you setup page rules, one for the parent and one for the child, according to the instructions on this page.
Finally, on both sites make sure your memory limit is set as high as you dare. Tariffs take up a lot of memory when moving from Parent to Child. As a general starting point, try setting the memory limit to 512mb, or even more.
On the Parent site,
In the administrator area :
install these plugins through the Jomres plugin manager
- API Feature CMF
- Channel Management Framework
- Channel Management Jomres2jomres
Once these plugins have been installed, visit the Admin > Jomres > Tools > REST API test page as this will setup the system's administrator API user if they haven't already been created.
In the frontend :
- Create the properties you want to export to the child installation. Ensure that their tariff editing modes are set to Micromanage and create tariffs, rooms and upload images.Make sure that their Latitude and Longitude settings are correct. In the current version of Jomres that's a bit of a nuisance because Google have broken the map section of the property details page, I'll fix it as soon as I can.
- You must ensure that you have followed the UI's prompts to complete and publish a property. Incomplete properties cannot be imported from parent to child sites.
- In Property Configuration set the API Privacy option to Off for any property you want to share. The Channel Management functionality restricts most API calls so that channels can only view and modify properties that they created. This is a security feature that prevents one channel from snooping on a manager's properties that they don't have the authority to see II.E properties that another Channel Manager may have created), however in Jomres2jomres the Child site didn't create the properties it wants to export therefore you need to disable the Privacy option which will then expose all of that manager's properties to the API client key pair that calls in from the Child site.
- In the Jomres Main Menu > Account Details > App Key Management create a new REST API client keypair. Give it the Identifier (name) of something like "Child Site 1" and make sure in the Permissions section you have checked "Channel Management".
- Click Save, then view the key pair again. Keep that tab open for now. Open a new tab in the browser and go to the Child site.
On the Child site
Note : Currently Child installations can only connect to one parent, and the API keypair used to connect to the Parent is the keypair as entered in the administrator area (see below) therefore only properties that belong to the manager who created the keypair on the Parent installation can be imported into the Child.
Default Quickstart properties cannot be imported into child sites. This is because the import feature relies on a queuing system that's a part of the Channel Management Framework's functionality. The import process requires use of the CMF plugin's handling of webhooks and properties created before the CMF plugin was installed will not have had those webhook events handled and added to the queue. This is why any properties you want to import into the Child installation must be "new" properties.
In the administrator area :
In the Jomres plugin manager install the same set of plugins.
- Once these plugins are installed go to to Settings > Site Settings > Channel Manager accounts tab and from the App key tab from the previous section copy and paste the Client ID, Client Secret and Redirect URL contents from the Parent to the Child to go into the Parent site client id, Parent site client secret and Parent url fields respectively. Save.
- Still in the admin area, you now need to go to the Portal > Channel Management Functionality page and click on the Resource Mapping link.These resource mapping steps are vital, they're not a step you can skip. You have to do them on the Child site because what you're doing is pulling the Property features, Room types and Property types from the remote Parent server and linking your local versions of these items with the ids of the items on the parent. Because in this example you're working on two relatively virgin installations of Jomres that have seed information installed the two system's id sets will be the same, nevertheless this needs to be done.
- Choose the Jomres 2 jomres channel and click Next. For each dictionary type (Property type, Room type & Property features) link the local item with the item from the remote server.
In the frontend :
Go to your Jomres page in the frontend as a property manager and visit Settings > Channel Mangement Framework.
Right now there will be no properties listed. On the right hand side there's the option to import Jomres2jomres properties. Click it.
From this new page you can import properties from the parent server. Remember that only properties that have the API Privacy option set to off can be imported.
If you now set a newly created property as the active property you will see that the management options available in the menu are very limited. This is because property management should be performed on the Parent property and Child properties then take their changes from there. You can, however, make bookings on a Child property and see those bookings exported to the parent property.
Todo as of 28/09/2021:
- Import availability (existing bookings) during the property import phase