Building open source tools for Adobe Creative Cloud updates

Many IT shops focus on delivering prepackaged, vendor-based software to employees. As companies begin to offer services to millions or even billions of people, their internal systems, technical environments, and licensing strategies must evolve to give teams the flexibility and speed to keep up with the growing business. For Facebook, and perhaps for any company that operates at our scale, delivering enterprise tools across an organization is becoming an engineering challenge.

One area that can occupy countless IT hours is the delivery, renewal, and management of software licenses for essential business tools. Our Enterprise Engineering team recently developed a software management script that could save teams hundreds of hours in building application packages. The new system makes it easier for people to access Adobe apps with centrally-managed Creative Cloud licensing, while saving time and improving reporting and accounting accuracy. These tools can apply to any operating system that supports Python. We've made these tools accessible and available for download on GitHub.

Improving efficiency with Adobe User Management API

Until recently, whenever employees wanted to install Adobe Creative Cloud applications, they had to go through a fairly lengthy process. Using Adobe's Creative Cloud Packager, our enterprise engineers would spend dozens of hours, not including testing time, to build each application package. We had to repeat the process for every new update, which was at least once a month. We wanted to find a more efficient way for people to get the updated Creative Cloud apps they needed.

Instead of building packages using our serialized license, we decided to migrate to Adobe's new named licensing system, where each employee would have an individual account with the specific software products — called entitlements — they'd need, and could access software directly from Adobe rather than relying on us to package it. We were also able to assign software entitlements to people without creating new packages by using the User Management API. Using sample code from the Adobe User Management API documentation, we created a more flexible module for communicating with the API, structuring the code in a way that made it trivial for external services to interact with.

We spent the majority of the development time migrating Facebook’s Creative Cloud licenses from serialized to named licensing, which involved setting up single sign-on. This way, we could use federated IDs with accounts linked to our Active Directory infrastructure. With our custom module, our employees create their federated IDs on demand and add the software entitlements they want by clicking on the icons available in our self-service software platform, Managed Software Center, without requiring a password or additional authentication. Instead of being prompted to download a package, the script will add the selected app to their list of entitled software. If an employee doesn’t already have an ID, it will create one first, and then add the product entitlement to their account.

With the new method, employees are automatically authenticated and able to download the software through Adobe Creative Cloud Desktop App, directly from Adobe. Subsequent updates will automatically be available through the Creative Cloud Desktop App, without requiring people to go back to the Managed Software Center or wait for our team to prepare or build the package first.

The new streamlined process will save everyone — enterprise engineers, as well as people who work with Adobe software — a lot of time in the future. Software and updates now come directly from the vendor and are authenticated through Facebook infrastructure. Our role becomes one of support rather than providing access to the tools. Through the User Management API, our team can also better track usage of Creative Cloud apps among Facebook employees. Previously, we had to scan every machine on the whole network to determine who had what software installed. Now, accessing entitlement information is as easy as downloading a report from the Enterprise Dashboard. We're now using this new model for Adobe Creative Cloud updates across Facebook.

We know that Facebook isn't the only company that can benefit from this new process, so we open-sourced the module and script we created. Anyone who is interested can download them from GitHub. We look forward to sharing even more technical tools to simplifying software administration for employees and IT teams with the open source community.