Video summary
Taking over an existing Drupal project often feels like opening a mysterious box filled with unknown risks, ranging from outdated code versions and undocumented patches to hazardous deployment processes that could lead to costly downtime or data loss. The core challenge lies in managing the fear associated with these uncertainties, as developers may hesitate to touch a site they do not fully understand, potentially delaying improvements for months while clients suffer. To mitigate this anxiety, the first step is to create a safe local and test environment where changes can be made without risking the live production site, ensuring that every action taken locally does not trigger dangerous external integrations or mass email blasts before being deployed.
The process of taming this "beast" begins with thorough documentation and auditing, which involves gathering all available information such as original requests for proposals, technical diagrams, and contact lists for critical infrastructure like DNS, firewalls, and CRM systems. Developers must dig deep into the code to identify custom modules, automation workflows, API integrations with enterprise software like Salesforce, and any hidden dependencies that might break during updates. By building a list of specific keywords to search through the codebase and using tools to intercept outgoing emails or network requests, teams can statically assess the application's behavior before installing it locally, effectively catching potential issues like unsecured configurations or dangerous cron jobs early in the process.
Once the technical environment is understood and secured, the focus shifts to addressing non-functional requirements such as security, recoverability, and interoperability. It is crucial to verify that the client has a robust backup and disaster recovery strategy in place, especially if they lack one, and to establish clear processes for handling firewall rules and internal IP connections that might otherwise cause last-minute failures during deployment. Beyond technical safeguards, the approach emphasizes compassion and transparency when dealing with clients who may be fearful or uninformed about their site's history; by understanding the context of previous mistakes and avoiding blame, developers can guide clients toward safer decisions, ensuring that the value of the risk mitigation work is recognized and that the team does not set themselves up for failure.
Ultimately, successfully taking over a Drupal project requires a disciplined workflow that prioritizes estimation, documentation, and local testing before any production changes are made. Developers should clearly communicate the time and effort required to make a site safe, convincing clients that rushing a deployment without proper preparation exposes them to significant risk. By solving each identified problem individually and maintaining open communication with all stakeholders, including previous teams and current clients, the development team can transform a chaotic legacy project into a stable, secure platform, turning initial fear into confidence and delivering long-term value to the business.
Read the full video transcript
all right hi everyone welcome to taming
the big boobies a practical vibe for
taking over a Drupal project alright so
first hi there I'm Matthew I work at
some interests I've been with Drupal
since 2010 I'm passionate about
technology science in general and I
would say I'm a cautious optimist so I
try to see the good side of everything
but I pace myself
alright then I work with some interest
here in Montreal so what's what's the
story here why we why are we talking
about the beast so you have your guy
you're a business guy the business is
about them doing sell that your company
that parts into your office saying good
news guys we have a new client he won't
he wants us to maintain its current
website and he wants us to add new
features and then you are you you have
your critical Drupal is typical
developer is here maxime that first what
his thinking is man I love a Baillieu
stuff I don't like to take over others
people website I want to do cleanup I
don't want to fix bugs that I haven't
introduced myself so it's not to try to
deactivate the project and then the
words starts
what's in the box so when we open the
hood of a new website this is where we
uncover the beast so the base is the
analogy for which you're picking up from
a previous previous provider for your
clients and you're never sure what
you're gonna gonna see opening the box
so what does it mean for you it means
maybe the code is 30 versions behind
maybe the core is hacked some patches
were applied but not documented maybe
the application sends emails to clients
on every actions when you update a note
when you run run maybe everyone who
receives an email and you have no way to
know about it maybe contribution are
ugly managed you remember Drupal 7
features maybe some stuff are in code
maybe some stuff are not maybe
conviction are not managed at all maybe
deployment is are hazardous so you cross
your finger each time you put something
in production and what it means for the
clients it means that maybe the initial
core updates and country update you are
going to do on the website will cause
them thousands of dollars because you
don't know what's in the box maybe in
the process the site went down 10 times
even for short period that could mean
something very fine
maybe hunter content was lost maybe
worse maybe the last customer during
that process so it can mean that first
improvement to the website arrives 20
weeks later so the time to market may be
very low because you don't know what's
in the box so you know you understand
that it's all about fear and what I'm
gonna talk about today I'm gonna talk
about managing fear and I think that's
the one thing we want to do when we pick
up someone else project we want to make
sure that we don't live death here
we want to manage our own fears and we
want to manage the clients fears because
maybe if you're left from a previous
provider maybe that's because you have a
bad relationship with it alright let's
greet so now that we went over the hours
that we can find in the box let's see
what we can do to mitigate that it's all
going to be okay I promise you you don't
know why how it got like that you don't
know why that Drupal websites you in a
rivet is as bad as it is and maybe it's
not maybe it's just little little stuff
that that bounced you but you don't know
why it is like that you do know that
you're going to find a path forward I'm
gonna help you get it all right
so it all starts with the work estimate
I knew that there was the talk just
before me in that same room about a
stimulating work often were good at
estimating new projects new website the
ones that we will build from the ground
up were not necessarily so good to
estimate the work involved in taking
over a new an existing project so here's
an alternative scenario kazuya our
business guy I wants everything for next
week because it's what you talked about
with the clients and of course is your
name is a real person at our company and
is more sensible than this he won't
promise stuff like that but it's for the
sake of the argument and Max again our
enthusiastic about this only one
requirement or two you first need to
understand what he is taking over and
and then leave the fully functional and
safe local and test environment you want
to make sure that everything is going to
do from now on is is able to do it
locally on his own computer in a safe
space and to be poised on the test
environment that is sensible with what
the clan has in production if you're
happy what do you want he wants comfort
he wants to walk away from that fear of
every new thing every little CSS
adjustments is going to be is gonna
deploy introduction will break the whole
site you want to live that country
let's see how we can do that all right
first step calm down documentation you
are on a mission to find everything in
can put your hands on it could be an old
RFP request for proposal so in that
original document you're gonna find
maybe API integration that you didn't
think was in the product you can find
automation that you didn't think was in
the project you want to see if the
client or its past provider as
functional or technical documentation
about the product you're you're in
everything you wanna see the plant as a
backwards to a backlog of bugs of bug
fixes to address and maybe the old
provider as long as well
original repositories so if the old
provider is kind enough to give you like
that get folder of their previous
project it could it could help you
understand that the journey went through
and then you want to understand what's
going on with with the kind of the the
whole project not only the technical
things done with the whole project so
you wanna know who are the stakeholders
stakeholders of that website who uses it
you want to understand the digital
environment of the project so you you're
getting a simple website what you don't
know is is is there a ciarán that
connects to that drupal website is there
any automation that includes more than
one application do the client has ten
other providers working on different
website do the plan of processes that go
through all their different application
so to see the digital environment as a
whole gives you information about what
the site should do or should not do and
you wanna know our governance work for
that website and
is really important write this down
write everything down write the
telephone numbers of you to contact like
the server goes down if the CRM to which
content is is is synced if the firewall
of this year
CRM starts blocking the simple
application you want to know who to call
if you have a problem with the DNS zone
maybe you're not managing it maybe even
the client I've lost the email used to
register a domain name that's something
that can happen and and maybe the client
forgot to pay the bill for the domain
name that's actually already happened
with us so the client site goes down
down and after a couple I would say
maybe minutes four hours of
troubleshooting we found out that the
problem was a bill that was not paid and
reminders that were ignored by the cloud
because locks this email for
registration so you want to have a list
of phone number and people to call and
understand who manages what all right
now about the technical environment
again assumes who manages it what's in
it
is there any MX record link to the main
domain name or you're working with it's
there any sub domains that are
registered to IP is that nobody has any
idea what what it is and you fall in a
white white screen when you visit them
so you kind of have to dig for this
information and often the client will
have no idea at all of what it is so you
have to find a technical person that
please you can go through to understand
everything about that focusing company
so who's a single website what kind of
infrastructure it's using what ya type
of an interactive structure and Vicky as
a service level of every nothing to that
hosting company so maybe everything is
in on let's say an infrastructure as a
service at Amazon and your hire to
maintain due to qualification but they
have no one to maintain in the server
the server itself so do you need do you
need this assignment
and how to take care of this did you
cost those those those those hours I
work on the server and to the client
know what what's the difference between
let's infrastructure as a service and
platform of the service so is everything
manage
on that application you want to know
software inversions that are used to run
your job application because you want to
reproduce that on your look on very much
you want to reproduce this on your
testing environment and you want to know
every external integration and
dependencies for the website is there
any software installed on the server
that you want to replicate on your side
it could be a solar server it could be
some PHP plugins to crawl through PDF or
or through Word documents so each an
original dependence you must be
addressed and is there any build step to
to kind of assemble that project so we
can think of obviously compose and
install and everything but also for the
front end are there any tests for honor
that were used for the theme I'm
thinking about sass and less I won't
work on a project where we didn't have
access to the previous provider and we
only add compiled CSS so where do you go
from here if you don't have a satisfy so
you can you want to look for all of
those things when you're you're looking
at taking over a new website
and then the application the Beast you
want to see is there any automation in
the in the website so you're looking for
rules workflow country modules or custom
modules that were be able to automate
stuff linked to the client processes you
could look at hooks so yeah rules books
mail so for every drupal books there
could be a in automation link to that so
if only Oh can't it again cert there's
some funny business going on there for
the big clients internal processes you
wanna you want to look for that when you
when you kind of do an audit at the
color code and then api's you wanna find
every API integration with either
enterprise software that exists out
there we're thinking about Salesforce
CRM maybe Microsoft Dynamics AX Arava
also custom ideas that were built by
maybe the clients technical team and
often you will you will you will
innovate the mandate from let's say the
marketing side of the clients and they
did not really talk to their IT guys and
maybe there's an integration where with
their ERP in apps so you want to look
for those integration it could be also
commerce integration so make sure you
know what is the payment platform that
the client uses can you have a sandbox
at that payment platform the libraries
that could be used and here my best
advice is to kind of build a set of
keywords
look for when you look through the code
so at one point hopefully before you can
install anything you're gonna try to
look through the code custom code custom
modules and the theme and you want to
look for a bunch of keywords so you can
even build a script with those keywords
so I'm thinking that stuff that relate
to excel so every maybe efforts and mail
Google Mail that are in custom modules
you want to pick those up and see
understand when they are fired and why
they're fired for for API integration
you can build a list of keyword like
soap Jason you could look at turbo HTTP
requests that is the the e helper to to
access external links so you try to
build a list of keywords you can crawl
through the site I tend to include as
well enterprise software and those lists
in that list of keywords so Salesforce
is an example Dynamics is an example so
you really want to kind of statically
assess the code before installing it
and and then the last thing to take into
a account of the application is
user-generated content so if you you
have to move around databases if you
have to change our hosting company if
you want to move the infrastructure you
want to understand what is the
user-generated content and what what
does it mean if you have to have some
content freeze on the website because
you're changing infrastructure and the
the most vicious one in that category is
webform because the client account with
only web form on their website will
always tell you I don't know it's just
it just static content we are the only
one touching the content etc but they
are like to contact form that are linked
to business processes that they don't
take into account when we're thinking
user-generated content
all right now you can install the sack
locally you've you gather documentation
you went through the code
you asked around for API integration for
business processes and now you're ready
to install the cyclo hood
maybe it's a good idea before evening
the first PHP page on that side to this
side from the network why us spinning
and so that's a true story an
unfortunate one but but when is the true
one so we did all those steps we kind of
add a bunch of documentation we went
through but there's one thing we didn't
catch is that emails were sent using
cron and they were not sent using the HP
may mailer they were sent connecting to
an external API so once the site wasn't
so locally 10,000 emails were sent to
the clients clients telling them that a
new account was created for them on the
local web site this is the everyone
click click on the blank blank page and
they received hundreds of emails of oh
your email them didn't worry were
excessive so even if you use something
like like now log that I'm gonna talk
about a little bit later maybe the first
time you run PHP on website this
electron the network just to see what's
going on are there some errors that show
up etc
so can you make the website work locally
and can you make it work without being
connected to your network so that would
be great news that would mean that there
is no kind of script blocking
integration with with external
integrations can you reproduce
integrally your production environment
locally that would be great and I can
catch any potentially dangerous external
integration before the trigger locally
or on your test servers things you want
to worry about if your integration so
then again back to my example if the web
service is called on me at a custom API
built by your client maybe the name of
that API will not be very eloquent and
you won't see that this particular API
will send 10,000 emails and you can
catch everything that people send on the
local insolation using mail hub if we're
out every outgoing emails to kind of a
web application where you can see where
it's from where it's going cetera
there's a docker container for me know
know if it's the that's why you want
potential dangerous information so we a
sin T P module sanguine module and rupa
all of those external external net mail
integration using country modules in
drupal it's a good thing to when you're
going through the the country modules
come country module if there's one
module that you don't know what it's
doing just google it
go see Anubhava org what's that model
what's it doing that's a good point so
would it be like a settings so we
settings of variety basics in a normal
people always use the basic that's a
great tips all right now you want to
look at non-functional requirements so
you've got it installed
yeah it works but what what are other
thing you want to look for so as a put
in a position of a functional
requirements which would be when you
click here this happens and
non-functional requirements is
everything else
sighs so first security is everything up
to date recoverability so this is a big
one because you're in everything in a
project from a client and you don't know
if the client as backups you don't know
if they if the clients has kind of a
strategy to recover his or her websites
when when something happens maybe they
could be hacked maybe they did do
something wrong themselves using the
onion town so we want to make sure that
the client has a strategy to recover the
website if they don't have one
maybe it's your job to tell them to put
something in place interoperability to
also this one is is looks and you kind
of stuff to do last-minute to take to
fix it
so let's take the to go website needs to
talk to an internal IP we can evaluation
and that internal you're easy on the
firewall and that firewall what is idea
to it so maybe you don't have this
information
and you learn about that like five
minutes before the going be the one was
hoping for so you want to want to go
through this and even if you've got the
opportunity to work with that client
from the listing marketing division let
make sure that you have the process so
you do they already had one do you make
the same or do you want to build it from
scratch or two such as M one all right -
L four modules that can I help you kind
of audit the security of Drupal security
reviews to see is there any unsecured
configuration on your installation and
module hacked that will give you a div
of every country module to see if a
password was applied without you knowing
it I think security review there's no
Drupal 8 release for now but if you
enter the website it's probably gonna be
a Drupal seven unless something went
really bad with the last provider all
right can you go further than that sure
you can build a do not list so that
could be really helpful for anyone who
starts working with the project maybe
you haven't secured the whole project
yet and you want to make sure someone
doesn't send those ten thousand emails
so it's always useful to know what you
should know do it could be stuff as
simple as do not use the do pole what's
a Drupal backup and migrate to export
the database because XYZ do not
step module it could be a simple Tomatis
for the time you secure the application
you could build a test plan so what are
the steps you want to take to make sure
once you deploy that snippet of CSS you
are not breaking the whole system
MyMusic CSS and as an example understand
that it's not really functional but it
would be crazy if you just deploy one
line of CSS and all the website breaks
so you wanna you wanna have test them
and you want to make the application
here your own you want to really go into
the application and remove every my test
module dot BC cade 2015 dot module file
you know all those artifacts dead
that you don't know how or why they
exist on the website and you don't want
to touch them because it's not yours
that's this is the time to make it yours
and you to to delete that file I promise
you this is a great feeling to get rid
of those artifacts and maybe you want to
go over the risk mitigation strategy
that you have in place with the client
you want you want to you want your plan
to understand that the work you're doing
that the steps you take to make yourself
safe and to make your plans safe our
work worth the buck they're investing in
your work and this is crucial and often
as developers we don't want them we're
kind of a shame that the to put on work
that's not immediately observable by the
client and you we won we want that every
hour that we stand is added value to the
client and yes they will get their new
counsel yes they will get in
which mitigation is value you are
bringing this value to your client and
then remember that compassion and
transparency wins over fear you want to
be compassionate and transparent with
the client you want you want to be there
for their fears you want to be able to
listen to them your honor you want to be
able to tell them to wait for that
deployment because they are taking a big
risk to deploy this Friday 5:00 p.m. on
the website that you've never touched
before
immediately on production so you become
compassionate with them and to
understand why where their fear come
from comes from you want to be
compassionate with the prettiest
prettiest thing the one that built the
monster the one that built the beast you
don't know you don't know what were the
condition in which this beast was was
put into life you don't know you don't
know the friction they had you know if
it was given to someone who never worked
with Drupal before you don't know if the
client maybe was cheap at first and they
didn't understand the the work and the
hours that we need to put in a website
to make it stable and secure so you
don't want to start like using those
guys are your scapegoat you want to be
compassionate with them because you've
been in that situation before
and and you want to be compassionate
with yourself you don't want to put
yourself in a position where you're
gonna fail you don't want to set
yourself for failure and that's a big
thing because we always want to please a
plant we want quick wins we want we want
the claim to be happy with the service
we provide but if you put yourself in a
position where if you put your
developers in a position where they get
they're going to fail you're doing
you're cutting on and suffering to your
developers to your clients and maybe to
the end user of the client so if you're
interested about this idea of compassion
in tech there's a great talk by up in
April winter about reducing suffering in
tech and how compassion can can be used
to reduce suffering I encourage you to
to hit listen
all right so how do you manage here the
first question of this top so you
estimate what it takes to be comfortable
working on the system so all of these
activities that you can do to make sure
that when you're going to deploy that
line of CSS that will take you 15
minutes to to write and ten seconds to
the boy you want to share that this 15
minutes you've put in all the hours you
needed to make sure you're comfortable
to deploy it without any fear and then
you want to mitigate risks using all the
these strategies explained before and
last you wanna stay compassionate and
transparent with your clients with
yourself and with the previous team
and now you're a happy little dog all
right any question comments insults yeah
so to document everything you discover
so one of the main point is to be able
to install it locally a lot of people
will be very happy to have all this in a
great we meet Andy at the at the root of
your repository because it's one file
that most of developer are comfortable
opening and going through the points for
everything technical that's a good place
you could so if you have a project
management tool often there's a good key
that comes with it so either you use a
zero confluence etc or in-house we use
redline in the wiki part we have kind of
a structure to document those in from
those information and that's the first
thing that we show to every employee
that comes as a mattress is what's that
structure what pages you've got to read
it before entering in a project etc so
that's a little bit different than let's
say the appointment process where you
can give permission to only one person
to deploy the application in production
so there your said you're safe because
it's gonna be your I don't know your
your your main developer on the project
that's different because you want you
want to make sure that even the people
will solid hopefully understands the
risk they're exposed to especially if
you
don't sit here yet the application so
down the line you're gonna let say a
separate configuration you're gonna make
sure that when it's unsolvable E is not
connecting to any dangerous API etc but
for the time that you're not safe you
want to make sure that everyone goes
through those static documentation pages
and we resent
all right what one of the things that I
haven't they are going to is you've got
to solve each of these problems
individually so let's say you found a
list of problems with that side when you
install locally it does this and that
etc so at each step of the way you want
to solve those problem before starting
the points up to two to the production
environment in real life the thing is
the clients will always try to nudge you
one way so oh yeah but can we get this
done by so it's always that's a good
moment to implicate the clan and to the
client and to make sure the client
understands the rest and maybe is he
won't be as comfortable with taking this
risk but that's make it their decision
and not yours and if you kind of if you
succeed convince them behind that the
risk they are taking is theirs at one
point you're all good because if the
client isn't above and any categories is
all right I hope you enjoyed the top