Acquisitions - Additional Information (Details) $ in Thousands |
|
|
|
12 Months Ended |
|
Dec. 31, 2020
USD ($)
|
Jul. 08, 2019
USD ($)
intangible_asset
|
Jan. 23, 2018
USD ($)
intangible_asset
|
Dec. 31, 2020
USD ($)
|
Dec. 31, 2019
USD ($)
|
Dec. 31, 2018
USD ($)
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Purchase price, net of cash acquired |
|
|
|
$ 133,609
|
$ 45,074
|
$ 36,855
|
| Weighted average remaining useful life |
|
|
|
|
7 years
|
|
| Goodwill |
$ 339,702
|
|
|
339,702
|
$ 261,983
|
233,619
|
| Amortization of intangible assets |
|
|
|
4,029
|
3,111
|
1,999
|
| Zenetex |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Consideration transferred |
118,100
|
|
|
|
|
|
| Purchase price, net of cash acquired |
121,200
|
|
|
|
|
|
| Working capital shortfall |
$ 3,000
|
|
|
|
|
|
| Weighted average remaining useful life |
8 years
|
|
|
|
|
|
| Goodwill |
$ 66,925
|
|
|
66,925
|
|
|
| Pro forma revenue |
|
|
|
238,000
|
208,800
|
|
| Acquisition-related costs |
4,200
|
|
|
|
$ 1,000
|
$ 800
|
| HHB |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Consideration transferred |
15,500
|
|
|
|
|
|
| Goodwill |
10,600
|
|
|
$ 10,600
|
|
|
| Advantor |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Consideration transferred |
|
$ 45,100
|
|
|
|
|
| Purchase price, net of cash acquired |
|
44,000
|
|
|
|
|
| Weighted average remaining useful life |
|
|
|
3 years 6 months
|
|
|
| Goodwill |
|
28,511
|
|
|
|
|
| Working capital adjustment |
|
$ 1,100
|
|
|
|
|
| Number of intangible assets acquired | intangible_asset |
|
2
|
|
|
|
|
| Amortization of intangible assets |
|
|
|
$ 1,700
|
|
|
| SENTEL |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Consideration transferred |
|
|
$ 36,900
|
|
|
|
| Purchase price, net of cash acquired |
|
|
36,000
|
|
|
|
| Goodwill |
|
|
16,689
|
|
|
|
| Working capital adjustment |
|
|
$ 900
|
|
|
|
| Number of intangible assets acquired | intangible_asset |
|
|
2
|
|
|
|
| Percentage of outstanding common stock acquired |
|
|
100.00%
|
|
|
|
| Trade names and other | Advantor |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Intangible assets |
|
$ 1,100
|
|
|
|
|
| Useful life |
|
4 years 6 months
|
|
|
|
|
| Customer contracts | Zenetex |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Intangible assets |
$ 33,200
|
|
|
33,200
|
|
|
| Useful life |
8 years
|
|
|
|
|
|
| Customer contracts | HHB |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Intangible assets |
$ 4,000
|
|
|
$ 4,000
|
|
|
| Useful life |
|
|
|
8 years
|
|
|
| Weighted average remaining useful life |
|
|
|
8 years
|
|
|
| Customer contracts | Advantor |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Intangible assets |
|
$ 7,200
|
|
|
|
|
| Useful life |
|
5 years
|
|
|
|
|
| Order or Production Backlog | SENTEL |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Intangible assets |
|
|
$ 6,500
|
|
|
|
| Useful life |
|
|
4 years
|
|
|
|
| Contract Re-competes | SENTEL |
|
|
|
|
|
|
| Acquired Finite-Lived Intangible Assets [Line Items] |
|
|
|
|
|
|
| Intangible assets |
|
|
$ 4,000
|
|
|
|
| Useful life |
|
|
8 years
|
|
|
|