F12.net narrows majority stake sale process down to three private equity buyers, CEO says

26 May 2020

F12.net, an Edmonton, Alberta-based managed IT services provider, is exploring a majority stake sale to fund geographic growth and acquisitions, said CEO Alex Webb.

 

The privately held company, which generated revenue of CAD 37m (USD 26.5m) in 2019, began speaking with US and Canadian investors in January. Given its desire for an IT-focused investor, F12.net quickly narrowed the field down to three private equity sponsors and is in early stage negotiations with those firms, Webb said.

 

Though investment interest waned somewhat in March and April due to the COVID-19 pandemic, the business continued to attract buyers given its continued growth throughout the pandemic, the CEO noted.

 

The company is not working with a sell-side investment bank but maintains a relationship with buy-side advisor FirePower Capital.

 

To date, F12.net has completed nine Canadian acquisitions, with eight of those deals occurring between 2015 and 2019. Targets have ranged in size from CAD 1m to CAD 10m in revenue, Webb noted, and all acquired accompanies are integrated under one system.

 

Sale proceeds will help fund near-term acquisitions in Ontario and international buys within 12 to 18 months in the US, the UK and/or Australia.

 

F12.net’s core offerings include hardware-as-a-service, and private and public cloud services. The company operates throughout Alberta, British Columbia and Ontario, where it has eight offices and 200 employees.

 

Right now, F12.net is seeking to acquire Ontario managed services providers (MSP) with between CAD 3 and CAD 20m in revenue, and ideally those with CAD 5m to CAD 10m in revenue. For future international buys, it is keen on MSPs with revenue between CAD 20m and CAD 40m.

 

Webb, 48, founded F12.net in 1996 and is the company’s largest shareholder. The remainder is held by five partners (via acquisitions); institutional investor Roynat, a subsidiary of the Bank of Nova Scotia [NYSE:BNS] that invested in 2016; and an employee stock ownership plan (ESOP) that currently comprises eight employees. No one person or entity holds more than a 50% share.

 

The business caters to highly regulated industries including professional services, healthcare and financial services. Customers typically have between 20 and 350 employees, with approximately 100 employees being F12.net’s sweet spot. In 2019, F12.net served 850 companies.

 

Roughly 70% of F12.net’s overall revenue is contractual, reoccurring managed-services revenue. The company’s EBITDA margins ranges between 15% and 21%, depending on reinvestment that year. The business has grown at a compound annual growth rate (CAGR) of 30% for the last seven years.

 

Webb said F12.net is still expecting growth this year, though it remains to be seen exactly how much given the current COVID-19 pandemic. Right now, the company is tracking 8% ahead of last year and existing and new business is starting to pick up as companies bring back furloughed employees and start to hire again.

 

MSP consolidation in Canada has been slower than the US, Webb mentioned. Most notably, Ottawa-based CareWorx and Vancouver-based Fully Managed Technology merged in December 2018. In February, CareWorx Fully Managed acquired Calgary-based MSP TWT Group, which had 30 employees.

 

Valuation multiples for MSPs of F12.net’s size can reach upwards of 10x EBITDA, Webb said. Those on the smaller side usually sell for between 6x and 8x EBITDA, he added.

 

F12.net competes primarily with in-house IT, and local and regional players that are similar in size or larger. The largest players in the space, such as Montreal-based CGI [NYSE:GIBB] and Calgary-based Long View Systems, focus primarily on large enterprises with more than 500 employees, Webb noted.

 

F12.net uses law firm Dentons and accounting firm BDO.

 

[formidable id=1]
<div class="frm_forms with_frm_style frm_style_formidable-style" id="frm_form_1_container" > <form enctype="multipart/form-data" method="post" class="frm-show-form frm_pro_form frm_ajax_submit " id="form_popup-form" > <div class="frm_form_fields "> <fieldset> <legend class="frm_screen_reader">MergerMarket Subscribe Popup Form</legend> <div class="frm_fields_container"> <input type="hidden" name="frm_action" value="create" /> <input type="hidden" name="form_id" value="1" /> <input type="hidden" name="frm_hide_fields_1" id="frm_hide_fields_1" value="" /> <input type="hidden" name="form_key" value="popup-form" /> <input type="hidden" name="item_meta[0]" value="" /> <input type="hidden" id="frm_submit_entry_1" name="frm_submit_entry_1" value="f2209207f5" /><input type="hidden" name="_wp_http_referer" value="/f12net-narrows-majority-stake-sale-process-down-three-private-equity-buyers-ceo-says/" /><div id="frm_field_1_container" class="frm_form_field form-field frm_required_field frm_none_container frm_first frm_half"> <label for="field_qh4icy" id="field_qh4icy_label" class="frm_primary_label">First Name <span class="frm_required" aria-hidden="true">*</span> </label> <input type="text" id="field_qh4icy" name="item_meta[1]" value="" placeholder="Enter your first name" data-reqmsg="This field cannot be blank." aria-required="true" data-invmsg="Name is invalid" aria-invalid="false" /> </div> <div id="frm_field_2_container" class="frm_form_field form-field frm_required_field frm_none_container frm_half"> <label for="field_ocfup1" id="field_ocfup1_label" class="frm_primary_label">Last Name <span class="frm_required" aria-hidden="true">*</span> </label> <input type="text" id="field_ocfup1" name="item_meta[2]" value="" placeholder="Enter your last name" data-reqmsg="This field cannot be blank." aria-required="true" data-invmsg="Last is invalid" aria-invalid="false" /> </div> <div id="frm_field_3_container" class="frm_form_field form-field frm_required_field frm_none_container ion_email accepts_business_email"> <label for="field_29yf4d" id="field_29yf4d_label" class="frm_primary_label">Email <span class="frm_required" aria-hidden="true">*</span> </label> <input type="email" id="field_29yf4d" name="item_meta[3]" value="" placeholder="Enter your business email address" data-reqmsg="This field cannot be blank." aria-required="true" data-invmsg="Please enter a valid email address" aria-invalid="false" /> </div> <div id="frm_field_4_container" class="frm_form_field form-field frm_top_container ion_company frm_hidden"> <label for="field_e6lis6" id="field_e6lis6_label" class="frm_primary_label">Company <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_e6lis6" name="item_meta[4]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_6_container" class="frm_form_field form-field frm_top_container ion_country frm_hidden frm12 frm_first"> <label for="field_otmou" id="field_otmou_label" class="frm_primary_label">Country <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_otmou" name="item_meta[6]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_7_container" class="frm_form_field form-field frm_top_container ion_utm_source frm_hidden"> <label for="field_eljps" id="field_eljps_label" class="frm_primary_label">utm_source <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_eljps" name="item_meta[7]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_8_container" class="frm_form_field form-field frm_top_container ion_utm_medium frm_hidden"> <label for="field_a8lma" id="field_a8lma_label" class="frm_primary_label">utm_medium <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_a8lma" name="item_meta[8]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_9_container" class="frm_form_field form-field frm_top_container ion_utm_campaign frm_hidden"> <label for="field_ommom" id="field_ommom_label" class="frm_primary_label">utm_campaign <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_ommom" name="item_meta[9]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_10_container" class="frm_form_field form-field frm_top_container ion_utm_content frm_hidden"> <label for="field_6kbqu" id="field_6kbqu_label" class="frm_primary_label">utm_content <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_6kbqu" name="item_meta[10]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_11_container" class="frm_form_field form-field frm_top_container ion_page_title frm_hidden"> <label for="field_fpzuk" id="field_fpzuk_label" class="frm_primary_label">Page Title <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_fpzuk" name="item_meta[11]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_12_container" class="frm_form_field form-field frm_top_container ion_page_url frm_hidden"> <label for="field_aj7hq" id="field_aj7hq_label" class="frm_primary_label">Page URL <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_aj7hq" name="item_meta[12]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_13_container" class="frm_form_field form-field frm_top_container ion_zerobouncestatus frm_hidden"> <label for="field_mrpjd" id="field_mrpjd_label" class="frm_primary_label">ZeroBounceStatus <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_mrpjd" name="item_meta[13]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_14_container" class="frm_form_field form-field frm_top_container frm_hidden ion_gftracklabel"> <label for="field_dqw7i" id="field_dqw7i_label" class="frm_primary_label">GFTrackEvent <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_dqw7i" name="item_meta[14]" value="" data-invmsg="Subject is invalid" aria-invalid="false" /> </div> <div id="frm_field_15_container" class="frm_form_field form-field frm_top_container ion_ip_address frm_hidden"> <label for="field_nzvgf" id="field_nzvgf_label" class="frm_primary_label">IP Address <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_nzvgf" name="item_meta[15]" value="100.24.118.144" data-frmval="100.24.118.144" data-invmsg="Text is invalid" aria-invalid="false" /> </div> <div id="frm_field_16_container" class="frm_form_field form-field frm_top_container frm_hidden ion_landing_page"> <label for="field_182c0" id="field_182c0_label" class="frm_primary_label">Landing Page <span class="frm_required" aria-hidden="true"></span> </label> <input type="text" id="field_182c0" name="item_meta[16]" value="" data-invmsg="Text is invalid" aria-invalid="false" /> </div> <input type="hidden" name="item_key" value="" /> <div class="frm_verify" aria-hidden="true"> <label for="frm_email_1"> If you are human, leave this field blank. </label> <input type="text" class="frm_verify" id="frm_email_1" name="frm_verify" value="" /> </div> <input name="frm_state" type="hidden" value="s8xfwaaizpBMz99drxmiKuSCMAW8OnK3kRg5FhimaDA=" /><div class="frm_submit"> <button class="frm_button_submit frm_final_submit" type="submit" formnovalidate="formnovalidate">Submit</button> </div></div> </fieldset> </div> </form> </div>