Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
Jun 01 2020
Jun 01

Many organizations are running into the challenge of managing content on their multiple websites for gaining centralized control and ensuring its secure flow.

Taking a piece-by-piece approach and allocating teams to work on each site separately drives the higher cost of maintenance, development, results in complex infrastructures, and inefficiencies in the process.

While content cannot be shared and shipped using CMI tools unlike configurations, Drupal modules can be utilized for sharing content among different sites or different instances of the same site.

This blog sheds light on the features that enterprises should not overlook while leveraging Drupal modules and also examines the benefits & limitations of the Entity share module and the cases in which it makes the biggest difference.

A Cost-effective Solution to Manage Content Across Sites 

Entity Share module helps enterprises achieve a workflow where subsites of a multisite architecture can share a piece of content across without disrupting the workflow at their respective ends. Besides, it also keeps UI experience and cost-effectiveness in check.

The module works for a setup where each of the sites have different databases. It provides easy means to share entities like nodes, taxonomy terms, media, etc on the basis of endpoints obtained from the JSON:API module via basic authentication.

 

Note- The websites sharing content among each other are designated by the terms, Server, and Client. The server (site) being the one from where content is shared and the client (site) is the one that takes in shared content.

Installation and Configuration Process of Entity Share Module

Follow these steps to install and configure the module-

  1. The entity_share module of desired version might be installed either via composer using
  2. Thereafter the module needs to be enabled using the drush command “drush en entity_share”.

  3. Next step is to create channels on the server site containing exact data to be exposed from its end. Channel configuration can be done after enabling the entity_share_server v.i.a command “drush en entity_share_server” which is a submodule present within entity_share. Additional filtering and sorting rules can be set on these channels as required after navigation through

    Configuration-> Web Services-> Entity Share-> Channels.

    text fields in white backgroundThe specification of an authorized user is a must to access this channel. 
    text fields in white background
  4. The client site, on the other hand, contains remote data that comprises the remote/server URL that it needs data from and authorization details like user and password to connect to the server which is provided after enabling the submodule entity_share_client using command “drush en entity_share_client”. Note this module needs to be enabled on the site that will pull shared content.

     

    Navigate to Configuration-> Web Services-> Entity Share-> Remote Websites and configure the remote settings. Ensure that the username and password in the Basic Auth section is the same as the credentials of the user that has access to entity share channels on the server end configured earlier.

    text fields in white background
  5. After successful authentication, all the shared content (from server end) will be available to the client site at [client_base_url]/admin/content/entity_share/pull to be pulled and displayed at its end. 


    This provides an added advantage to the client-side where it can accept the shared content only after complete verification. The shared content simply does not get created as soon as the server shares it.

    Moreover, the interface that the module provides for the entities to be pulled is user-friendly and easily understandable. It clearly depicts newly created and already pulled content along with its synchronization status. In case the content after being shared and pulled gets edited either at the server or client-side, the status gets immediately updated.

text fields in white background

Use Case of Entity Share

We implemented Entity Share module for a client project 

Recently Srijan came across a requirement where one of its established clients had local websites in regional languages distributed across many countries in the world.

Our main objective was to provide them with a solution where the administrator or central authority would be able to share some content like news updates, press releases, etc from the main/corporate website without affecting the rest of the content at each end. 

Additionally, a necessity of central control over each of the shared content/nodes was required where any change on the main site would be available on the client end to be pulled again or re-synchronized. 

Similarly, if a client site made any change on the content at its end, changes would appear on the corporate/main to be synced. The entity share module was best suited for such a scenario. 

We configured channels and remote sites as described above and the functionality was achieved. One of the custom functionalities added was to set the default status of the node being pulled into the Draft state so that the content editor can review the same before publishing. 

Despite the fact that Entity Share module is not yet identified as secure since a lot of inaccessible data is exposed using JSON:API endpoints, we implemented it for the client project. 

Because an extra security layer can be implemented to the web server configuration level by blocking requests from unwanted sources and allowing only trusted sources to fetch data. No third party expensive integrations were required. It matched with the clients’ requirements and also simplified our process of adding custom functionalities to it.

Benefits of Entity Share Module

It offers the following benefits-

  1. Authorized access- The module provides content exposure to a site ensuring authentication. Without proper authentication, no site can have access to the channel data exposed from the server website.
  2. Enhanced security for verifying content- The client site has a choice to pull data from the available list of content shared with it. This allows an extra layer of security that allows the administrator/editor of the client site to verify data at its end before synchronizing it. A link to the content/entity being shared is available beside each item in the list of entities present in the respective channel.
  3. Different versions to detect changes, if made- The module lets you view the difference between the already pulled entity and the entity on the server end, in case anyone of them gets changed.

    Given this, you have to install a module called diff to let you view revisions of an entity. Although the module has issues depicting differences in the reference fields; developers have an opportunity here to contribute to the community by finding an appropriate solution to the same.

  4. Multilingual support- Translated entities may be shared among sites provided the language is configured on both the ends. Even in the case where the default language of the server and the client site is different, this module is appropriate to use. 
    The client site may add appropriate translations based on the pulled content at its respective end.
  5. Auto-creation of referenced entities- All the referenced entities are auto-created based on UUID when a content/entity gets pulled if not present on the client end. Hence referenced paragraphs, images, and media that contain references to such fields need not be present on the client end before pulling content. They will be automatically created and linked.
  6. Clean and simple user interface- Lastly, the UI interface that entity_share provides for pulling/synchronizing content is easy to use. The entity pull access might be given to a specific user/editor of the website without developer intervention, once configured properly.

Limitations of Entity Share Module

Like other modules mentioned above, entity_share has limitations too:

  1. The entity when pulled on the client site, is displayed in the same state, i.e., published/unpublished as that on the main/server website. It implies that the module doesn’t obey customized editorial workflow and moderation process. Editors can’t take appropriate action of passing content through various workflow states such as draft, ready for review, approved and then published.

    For example - A published content when pulled is directly assigned a state from the pulled reference i.e published rather than in draft mode.

    However, there is a possibility to change this functionality by subscribing to the event

    \Drupal\entity_share_client\Event\EntityListDataAlterEvent

    provided by entity_share_client module to alter the status of the content being pulled.

    Likewise, other events are also available in the module that can be used to   tweak any functionality as and when required.

  2. The revision history of the node gets affected after pulling an already pulled entity that has been edited on the client end as well. This is because the changed timestamp that the JSON:API endpoint provides gets added to the client-side as it is after synchronization.

    This also needs to be fixed in the module to allow pull operations without affecting revisions on both ends. You can find another related issues  too.

Instead of using exorbitant and ineffective Drupal modules for content management across the various sites, give a try to Entity share module, it is a cost-effective solution that can be optimized as per enterprises' requirements.

Looking for a similar solution? Drop us a line and our team will get back to you.

Sep 30 2016
Sep 30

Customers are the heart of a business. As a business owner interacting directly with customers, or as a digital marketer for a business, you need to:

  • Track prospects and customers to provide individualized services.
  • Manage leads to find the high quality ones and improve revenue.
  • Engage with customers—the right tools can give you specific information about customers and their transactions.
  • Integrate social media with the business for better marketing and customer relationships.
  • Automate and optimize the end-to-end sales process.

The objectives mentioned above require a well thought out Customer Relationship Management (CRM) strategy. A CRM application seamlessly integrated with the business/CMS website can help in achieving this, leading the company to better customer retention and higher profitability.

Drupal allows custom integration with any type of third-party API. Drupal 8 has a revamped web services module which makes it even easier to integrate with third-party applications. Here are some CRM applications that Drupal can work with:

Webform CiviCRM
CiviCRM is a web-based contact relationship management application built in PHP. It integrates well with Drupal. It works seamlessly for functions like synchronization between Drupal roles and CiviCRM memberships, rules and triggers, Ubercart, views and web forms. It is a good tool for managing online subscriptions and contacts. Drupal modules can also be built to make use of direct CiviCRM.

Too many security updates, poor online documentation and lack of all CRM features are some drawbacks of CiviCRM.

RedHen CRM
The best part about RedHen CRM is that its high level design is similar to Drupal Commerce, and therefore it uses Drupal capabilities well. It is a lightweight CRM application that has features like contact management, engagement tracking, customisable forms for input, etc. It is highly customisable, making it advantageous for businesses with very specific requirements. However, the frequency of software updates is very low.

Salesforce Suite
Salesforce.com is a popular cloud-based CRM application. It automates the end-to-end sales process. Drupal has a module called Salesforce Suite. This module enables integration between Drupal entities and Salesforce data objects, allowing data exchange between Drupal-based applications and Salesforce. You can create object mapping and extend the APIs to create functionality for customised business workflows. But the options available depend on the license you have. Salesforce is better suited for big businesses.

Other CRM applications that Drupal works well with include:

  • CRM Core is a platform within Drupal which can be used to track contacts, relationships and activities. It allows reporting and bulk operations, like sending emails to customers and merging contacts.
  • OpenCRM is a native Drupal CRM solution that has tools such as entities, rules, fields, etc, that can be used to build a CRM system as per client requirements.
  • SugarCRM is a highly customizable CRM solution that can integrate with Drupal to provide integration via web form integration and data synchronization.

A Drupal-based CRM product is a good choice as it can be customised for specific requirements. On the other hand, CRM products like Salesforce or Microsoft Dynamics are more comprehensive but might need more work when it comes to customisation.

Srijan has experience and expertise in projects involving integration of Drupal with CRM applications. These projects have its helped clients build a reliable CRM strategy.

Jul 11 2016
Jul 11

Docker, a container-based technology which I just came across, is great for setting up environments. It was first introduced to the world by Solomon Hykes, founder and CEO of dotCloud at Python Developers Conference in Santa Clara, California, in March 2013. The project was quickly open-sourced and made available on GitHub, where anyone can download and contribute to it.

Containers vs. Virtual Machines

You might be wondering, "What is the difference between Containers (like Docker) and Virtual Machines"?

Well, virtual machines (VM) work by creating a virtual copy of a computer's hardware, and running a full operating-system on that virtual hardware. Each new VM that you create results in a new copy of that virtual hardware, which is computationally expensive. Many people use VMs because they allow you to run an application in a separate environment which can have it's own versions of software and settings, which are different from the host machine.

On the other hand, container technologies like Docker, isolate the container's environment, software, and settings, in a sandbox; but all sandboxes share the same operating-system kernel and hardware as the host computer. Each new container results in a new sandbox. This enables us to pack a lot more applications into a single physical server as compared to a virtual machine.

Docker containers are isolated enough that the root process in a container cannot see the host machine’s processes or filesystem. However, it may still be able to make certain system calls to the kernel that a regular user would not, because in Docker, the kernel is shared with the host machine. This is also why Docker containers are not virtual machines and thus a lot faster.

Note, however, that Docker relies on a technology which is only available in the Linux kernel. When you run Docker on a Windows or Macintosh host machine, Docker and all it's containers run in a virtual machine

That said, there are two projects trying to bring Docker-style containers natively to OS/X , Dlite and Xhyve. But last I heard, these projects were still very experimental. So consider yourself warned.

When you are done with a container, on a Mac host machine, it’s probably good to suspend the containers, because they run in a virtual machine and that has a lot of overhead. But on a Linux host machine, there would be no need to suspend them because they would not create (much) additional overhead (no more than, say, MAMP).

Docker is a tool that promises to scale into any environment, streamlining the workflow and responsiveness of agile software organizations.

Docker’s Architecture

This is a diagram explaining the basic client-server architecture which docker uses.

Source: http://www.docker.com

Important Terminology

  • Docker daemon: A Docker engine which runs on the host machine as shown in the image above.
  • Docker client: A Docker cli which is used to interact with the daemon.

Workflow components

  • Docker image: A read-only disk image in which environment & your application resides.
  • Docker container: A read/writeable instance of an image, which you can start, stop, move, and  delete.
  • Docker registry: A public or private repository to store images.
  • Dockerfile: A Dockerfile is instructions for how to build a single image. You can think of a Dockerfile as kind of Vagrantfile, or a single Chef cookbook, or an Ansible script, or a Puppet script.

Microservices
Because Docker allows you to run so many containers at the same time, it has popularized the idea of microservices: a collection of containers, each of which contain a single program,  all of which work together to run a complex application (e.g. Drupal).

Taking Drupal as an example, every Drupal site has at least two dependencies: an HTTP server (Apache, Nginx, etc.) running PHP; and MySQL. The idea of microservices would involve packaging Apache+PHP separately from MySQL; as opposed to most Drupal virtual machine images which bundle them together into the same VM. For more complicated setups, you could add another container for Solr, another container for LDAP, etc.

For me, the main advantage of using microservices is that it’s easier to update or swap one dependency of an application without affecting the rest of it. Another way of looking at this is that microcontainers make it easier to modify one piece without waiting a long time for the virtual machine to rebuild.

When I was using a virtual machine on a particularly complex project, if I needed to make a change to a setting, I had to make that change in the Puppet config, then run vagrant destroy && vagrant up and wait two hours for it to tell me that the new configuration wasn’t compatible with some other piece of the system. At which point I had to repeat the two hour process, which wasted a lot of time.

If I had been using Docker (properly), then I could have just changed the setting for that one program, rebuild that program's container (5 seconds), and not have to worry that one piece of the machine needed at least Java 6 and the other piece of the machine could not work without Java 5.

Now that you know the possibilities with Docker, watch this space to find out how all this applies to Drupal.

Jun 27 2016
Jun 27

Caching is an important aspect when it comes to improving site load times and capturing data on user behaviour. It also becomes a big technical roadblock if you’re not rendering dynamic content with a JS framework. This is usually not a part of the technical stack unless specifically architected at the start. Most of the web applications rely on server side frameworks/languages to render the page and serve HTML page on the frontend with basic JS interactions.

The Problem

If you’ve been working on a building personalization engine and have a site with huge traffic which needs Akamai or similar service to serve content, you’d understand the limitations imposed by these systems.

When you set the context of the content to be personalized via taxonomy, the application needs to send back the information to a personalization engine in terms of the browsing behaviour, or purchasing behaviour. If you’re looking for personalization in real-time, such scenarios become more pertinent to your situation. Additionally, if you have caching like Varnish or reverse proxies like Cloudflare or Akamai implemented on your site, purging data and rendering the content becomes very expensive for the application.

The Solution

Unfortunately, the only way to tackle this is to make some major architectural changes in your application. If you’re using Drupal, upgrading the application to Drupal 8.1, which has a built-in Facebook Bigpipe feature, can be a major boost to the application. With Bigpipe caching, major components of your web page are rendered 8 times faster than normal. That’s a huge improvement! There’s a reason people call it Facebook’s secret weapon. Bigpipe integration with Drupal is relatively new and I am still to see some implementations to confidently say it can work out of box. You might want to look at more custom implementations with JS libraries. Hypernova is one such example, which is developed by AirBNB. Check out Hypernova on github and I am sure you can find tons of them which will fit with your tech stack or your choice of technology framework. And don’t assume that your developers (or agencies) would’ve taken this into account. To be able to use the Bigpipe advantage, each entity needs to be defined with cache tags, cache contexts and cache max-age, to define in what scenarios you’d want the personalization to kick in. Wim Leers from Acquia gives a pretty detailed webinar on how you can achieve this with Drupal. 

Here at Srijan, we are in the midst of implementing one such personalization project. Stay tuned as I’ll soon update this post with our learnings from this project.

Jun 23 2016
Jun 23

Adobe Analytics or SiteCatalyst (called Omniture before being acquired by Adobe) is a leading industry solution that collects website statistics and applies real-time analytics and detailed segmentation across all of your marketing channels. It is used for the measurement, collection and analysis of web traffic data. The data collated can be used to discover high-value audiences. It can provide customer intelligence for your business.

Adobe Analytics can be integrated with Drupal 8. Once the integration capability is built between Adobe Analytics and Drupal 8, the client has the Adobe Analytics website to refer to for the traffic data. The client can log in to this site to view a dashboard with website statistics, and gain insights into customer behavior. This data can then be used to optimize the website to improve user experience and conversions.

Srijan has integrated Adobe Analytics with Drupal  successfully many times for its clients, allowing them to manage their content better.

Key Features of Adobe Analytics

The tool allows the capture of real time data that allows understanding of current and relevant business scenarios.

Source: Democratizing Insights with Analysis Workspace

Apart from website traffic statistics like number of hits on each page, number of unique visitors to each page, total hits, exit links, click maps, number of page not found instances, etc. the tool also shows the devices used to visit the website, along with details such as screen size, screen height, screen width and audio/video support on the device. It also gives details of referrals, next URL visited, etc.

Adobe Analytics provides drill down facilities to get precise and comprehensive views on the customers to understand most valuable customer segments or segments that can give business opportunities. The business can categorize customers into personas using the intelligence that the tool provides in terms of product preference, geo-demographics, and behavioral attributes. 

It provides mobile analytics intelligence with which you can understand the mobile app user base and review performance of mobile marketing campaigns launched. It provides rules based decision making tools. Visitor statistics include the number of users by geography, users by language and users by time zone. The client can generate reports for web traffic, based on time parameters.

This data is represented visually as well. Data for multiple websites can be viewed on one Adobe Analytics/SiteCatalyst website. On the home page, the dashboard can be set up to show important/critical indicators from the different websites configured under that account.

Custom data specific to a particular use-case can be captured—this is of great help for enterprises. For example, if an organization wants to capture data on its employees visiting the site, variables to capture employee data such as Employee ID can be included if this data is available in the network. Also, if there are videos on the site, events like 'play video' can be recorded. All this data is valuable in helping clients gain insights into customer behavior and manage their content better.

Integration Challenges

Srijan did face some challenges while integrating Drupal with Adobe Analytics. Since Drupal 8 has a completely different architecture from Drupal 7 and since there was no available module for Drupal * our teams had to work on porting the module to Drupal 8. The implementation had to be modified to ensure that there is no change in the functional performance of Adobe Analytics.

Srijan also had to be careful while handling data. With enterprises, a lot of data is available—both private and public data, which could include a lot of sensitive data that cannot be stored. The integration module had to effectively manage data privacy wherever applicable as per the enterprise confidentiality policy.

Benefits

Clients who have opted for integration of Adobe Analytics with Drupal have benefited from the improved website analytics in various ways:

Improved content strategy and content management - The integration helps clients understand which pages are visited more often and which not. Downloads and payment mechanisms can be tracked. The client can then devise a content strategy based on users' behavior on the website, and provide them with the right information at the right time. This gets more engagement and conversions as per online goals.

Improved customer retention - The tool provides data related to user navigation. It gives details about access mechanisms. The user journey and user map can be understood. This knowledge helps in refining the flow of data on the website, and allows the client to deliver content based on user needs. Better content strategy and improved information flow translate into better customer retention.

Better digital marketing strategy - The statistics provided by the tool helps a client understand how web traffic has changed since the launch of a promotion campaign, and to determine the success of their digital marketing campaigns.

By allowing the client to make better decisions around content and the flow of information on their website, the solution helps them achieve their marketing objectives.

Apr 14 2016
Apr 14

TUI India is part of the TUI Group, a leading leisure, travel and tourism company. The TUI Group is headquartered in Germany. The company started operations in India in 2005, offering travel packages to help craft fulfilling holidays for everyone.

TUI India had already established offline stores in different parts of the country. The company had been using Salesforce to manage its customer interactions. They had a static online presence but did not have an online portal for interacting with customers and selling holiday packages on the Internet. There was also no Drupal Salesforce integration, i.e. no interaction between the website and Salesforce. Customer interactions were therefore never captured.

The main business requirements of TUI India were to revamp the website so that online transactions could be integrated with Salesforce, and holiday packages could be sold seamlessly online.

Srijan had previously worked on other projects with the product owner at TUI India, who was impressed with its technical capabilities, adherence to deadlines and strong focus on lean thinking and agile processes.

TUI India approached Srijan with its business challenges. Srijan provided a digital solution to help TUI interact with online customers, and to allow online customer transactions to be integrated with Salesforce. 

Business and Technical Challenges

TUI India has a separate team that handles Salesforce. Moreover, the different packages provided by TUI are handled by different call centres. Any enquiry or potential sale of a package is therefore routed to the respective call centre. As there was no capture of online information, online business became difficult. There was no tracking of online enquiries and feedback. TUI India also was unaware of the pages customers visited or the links they clicked. 

TUI has different marketing campaigns: a Facebook campaign, an email campaign and a Google campaign. The results of these campaigns were not captured and integrated in Salesforce, making them less effective than they could have been. TUI was unable to measure the success of these campaigns as well.

The technical challenge was that TUI India was not happy with the loading time of the AJAX pop-up forms. To address this, Srijan had to redesign the module to optimise performance.

Srijan's Solution

Srijan developed functionality for TUI India that allows customer queries and searches to be tracked on the Drupal website. These could be integrated with Salesforce too. 

TUI India has different packages, like domestic holidays and  international destinations. They have theme-based packages and campaign-based packages. Different holiday packages are handled by different call centres. Srijan built functionality so that customers could choose a particular package from the website, and the transaction would get routed to the appropriate call centre and thus be recorded in Salesforce. Some of the packages could be bought online. Srijan built application logic to distinguish between these packages, and redirect the customer to the right call centre. 

The website was integrated with Salesforce so that every transaction and enquiry on the different marketing campaigns could be tracked in Salesforce. It became possible for every user action to be tracked using the website and recorded using the Salesforce integration. TUI could find out which page a customer had visited, which package they had enquired about or which campaign they had used. This gave TUI access to a lot of information, allowing them to make better business decisions. TUI India's analytics data improved due to this tracking feature. The company could now track hits, enquiries and actual sales, and analyse different parameters, such as number of hits, packages in demand, etc, to find out how successful the business actually was.

Benefits

The application has been live for the last 10 months and TUI India has derived multiple benefits. These include:

  1. Improved tracking of performance data: Srijan's solution enables the company to track all transactions on the website. The pages visited, links clicked, enquiries, feedback, packages selected can be tracked. This helps TUI India measure its performance and the level of customer satisfaction, as well as manage offerings and marketing campaigns better.
  2. Flexibility to create custom rules: Srijan has set up multiple rules for TUI IndIa. Depending on the package that they have enquired about, the customer is routed to the appropriate call centre. Additionally, some packages can be bought offline only; in case a customer shows interest in one of these, they are routed to the call centre handling these requests.
  3. Reduced costs and effort: TUI India has several marketing campaigns and each of these has a separate website and server. All of these campaigns have been integrated in Salesforce with Srijan's solution. Now, TUI only has to manage one server, instead of multiple websites and servers.
  4. Better management of enquiries: JustDial queries are being integrated with Salesforce using the website. Whenever there is an enquiry in Justdial for TUI, JustDial sends the request details to TUI India, and this can be tracked on both the website and Salesforce. TUI India has also integrated Livechat, and enquiries there can also be tracked on Salesforce as well as the TUI website.

Other than  Drupal Salesforce Integration, Srijan also helped TUI  with Drupal website development with upgraded UX and multiple functionalities and integrations which improved customer experience and simplified lead capturing.

Feb 18 2016
Feb 18

Enterprises the world over now have Drupal as a key component of their digital strategy. However, it can be challenging for them to scale up their continuous development operations for Drupal. The reasons can be many: some find it too expensive to have onshore teams support them. Some enterprises do not have the confidence in their multinational system integration partners to deliver expert Drupal services that is business centric. Some, like Flight Centre, have tight workflows which an outsourced agency would find hard to match pace with. In all such cases, Srijan is helping enterprises get comfortable with outsourced Drupal development and consulting services. This is the story about Flight Centre and how it decided to test whether outsourcing was feasible for them or not, and eventually contracted Srijan as a long-term development partner.

Flight Centre (FC) is one of the world’s largest travel agency groups. It has company-owned operations in 11 countries and a corporate travel management network that spans more than 75 countries. It employs more than 15,000 people globally and has a total of 2500 stores.

To enable its operations, the company has developed multiple products to enable smooth running of their business workflows. FC runs a very tight, highly secure, and well run development process. Their IT setup has multiple third party integrations with Drupal, and is quite complex as they have created and extended a lot of custom and contributed modules. FC’s stringent design/code reviews help in maintaining the intrinsic quality of the product to make sure their daily product releases go as per plan without any hiccups. A very strong organizational workflow is designed to enable such quick rapid development and frequent releases. This brings agility to their business.

So it was but natural for FC to think that outsourcing any development would likely not work out for them. When Srijan met the FC team at DrupalCon, a conversation started on how outsourcing product development work has worked out well for Srijan’s clients like TheRecordXchange and OnCorps. Over multiple conversations FC decided to test outsourcing waters by contracting Srijan for two sprints. The work involved working on tickets related to their travel portal. Here is how FC decided to extend it to three more sprints, and then went on to hire Srijan as its continuous development partner.

Adherence to code standards: FC has had great expectations from Srijan on many counts. One of them was code quality. FC follows stringent code reviews to ensure that all Drupal, JS, HTML/CSS code adhere to best practices. Srijan’s team was able to quickly adapt to their development lifecycle process while ensuring total adherence to the FC code standards. FC gained confidence in Srijan’s capabilities and was happy to see Srijan pick-up speed by the second sprint, and come back to FC’s team to take on more stories from the backlog.

Working in FC’s Agile environment: FC runs its own JIRA instance to track its workflow. Srijan has been using JIRA for several years now and has a mature JIRA Agile workflow inhouse. In this project, Srijan was required to log into FC’s instance and track work and make updates. However, because of technical issues, Srijan’s team would end up spending about 20 minutes, just trying to log in. This had a huge impact on productivity. Srijan proposed that the sprints be run on Srijan’s JIRA instance. While this meant an additional workload for the FC team, they graciously agreed, as this would quicken things up in development. Srijan’s team reconfigured the JIRA workflow to better represent how the work with the FC team must happen.

Use of tools: Srijan uses various tools to streamline work. Other than JIRA, Srijan uses Ideaboardz for conducting retros with the FC team along with Skype. Planning Poker is used in sprint planning. For inhouse project communication and management, Slack is used, which also keeps the client team in the loop.

Communication: As the work time overlap between India and Australia is pretty narrow, it was important for communication to be efficient and effective. Srijan’s process involved in-house standups, immediately followed by a 10-min stand-up with the FC team. Sprint planning would take just one hour. The credit goes to the FC team for writing the backlog very well. Retros would be run for 20 mins. The focus during all communication was on seeking help and communicating issues while keeping a problem solving approach.

Leveraging time zones: The FC team was able to leverage the time zone difference by having a Drupal team working during and right after their work hours. This enables them to deliver a lot more releases within a shorter span.

Switching from Scrum to Kanban: After a few sprints Srijan realised that the sprints were getting delivered and tested at the development environment on time. However, code reviews and releases were taking longer. So the entire process, from story concept/writing to having it working on production was taking more than two weeks. This was because the workflow had items which needed other teams such as FC core developers to perform the code review, and devops team (for the releases). Hence, although development was complete from Srijan’s point of view, it was not made live due to dependencies on other teams. We were, thus, unable to close the sprints. 

So Srijan switched to Kanban - Continuous Flow model to measure throughput over measuring velocity. This model has really worked very well for Srijan, and the FC team is able to eliminate any bottlenecks in the story as it flows to the production.

FC is happy that Srijan’s team asks questions that are important from the development point of view. They are also happy with the smooth and streamlined communication that happens between the teams. FC has now contracted Srijan to continue work on the travel portal for a year.

Here is what our client has to say.

Srijan have become a very valued part of the extended Flight Centre team and are integral in our Digital plans to improve our retail brand websites. From the beginning Srijan have been open to feedback and have made some core changes to their team structure and processes so it better aligns with Flight Centre's approach and as a result we are seeing great benefits in our partnership with Srijan. We only see this improving over time which promises to be an exciting period in the future.

Luis Landaverde

Digital Portfolio Manager 

Flight Centre Travel Group

Explore how Srijan can help you scale up enterprise Drupal teams, and deliver as per the distributed agile development methodology.

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web