Overview
The American Bankruptcy Institute is one of the largest multi-disciplinary organizations dedicated to research and education on issues related to insolvency. Their website, abi.org, is not a simple brochure site. It is a large, feature-rich platform that serves members, legal professionals, students, journal subscribers, and event participants across the country. We migrated the site from Drupal 7 to Drupal 10, rebuilding and modernizing a complex ecosystem of custom functionality while keeping everything that the organization and its members depended on working correctly throughout the transition.
About the Client
ABI is a Washington, D.C.-based nonprofit serving bankruptcy professionals through education, research, and community. Their digital platform handles a broad range of functions including member authentication, journal article publishing and access, continuing legal education content, event registrations, committee communications, a national moot court student competition, a mobile app API layer, and deep integrations with Salesforce and iMIS, their membership management system. The site serves a diverse audience of attorneys, judges, academics, and law students who rely on it for professional development and access to critical legal resources.
Goals
Drupal 7 reached end of life, making the migration both a technical necessity and an opportunity to modernize the platform’s architecture. The primary goal was to carry forward all existing functionality without disruption to the membership experience. Beyond that, the client wanted to take advantage of Drupal 10’s improvements in content management, performance, and API capabilities, and to bring the codebase to a state that could be maintained and extended more easily going forward.
Challenges
The scope of the migration was significant. ABI’s Drupal 7 site had accumulated years of custom development across dozens of modules, each solving a specific business problem. Simply upgrading was not an option since Drupal 7 and Drupal 10 are architecturally very different, meaning most custom code had to be rebuilt from scratch while preserving the same behavior.
The data migration was particularly complex. ABI had numerous custom entity types built with the ECK module covering everything from event registrations and ad click tracking to student competition scores, summit data, upsell records, and membership waiver tracking. Each of these required custom source plugins, field mapping definitions, and data transformation logic to migrate correctly into the new entity structures.
The site’s integrations added another layer of complexity. Authentication flows through Salesforce OpenID Connect rather than standard Drupal login. Member data is synchronized bidirectionally with both Salesforce CRM and iMIS, ABI’s legacy membership SOAP API. Payment processing runs through Stripe. The mobile app depends on a full REST API layer with JWT authentication, OTP login, push notification token management, and Solr-backed journal search. All of these integrations had to be re-implemented cleanly in Drupal 10.
Content architecture in Drupal 7 had also grown organically in ways that needed to be rationalized. A large volume of content lived under a single abi_articles content type and was differentiated only by taxonomy terms. Migrating this required building a tool that could generate content types from taxonomy terms and safely move nodes between bundles without data loss.
Solutions
We rebuilt the entire platform in Drupal 10, developing a suite of custom modules that replicated and in many cases improved upon the original functionality.
Authentication was rebuilt as a dedicated login module that handles three distinct flows: Salesforce OpenID Connect for members logging in through ABI’s identity provider, standard Drupal credential login for administrative users, and an email parameter auto-login mechanism that allows frictionless access from external email links for approved member roles. Access denied responses are handled gracefully with role-aware redirects rather than generic error pages.
The Salesforce and iMIS integrations were rebuilt as proper Drupal 10 services, with clean dependency injection and separation of concerns. Member data, subscription status, date of birth capture, and activity logging flow reliably between the three systems. A forced date of birth collection workflow was implemented for members whose profiles were incomplete, using an undismissable modal that prevents access until the required information is submitted.
The journal article module was rebuilt to support the full complexity of ABI’s publishing workflow. Journal articles are access-tiered, with different content available depending on membership status. Related articles are assembled from multiple sources including editorial relationships, taxonomy-driven internal content, and external feeds from ABI’s law, opinions, and Volo platforms. Watermarked PDF delivery is handled through a secure file controller that generates user-specific watermarks at request time and streams the file directly without storing the watermarked copy.
The mobile API layer was rebuilt as a comprehensive REST resource module supporting JWT-based authentication, OTP login with rate limiting and attempt tracking, Salesforce token exchange for SSO, push notification token management, journal article search via Solr, cart operations, product listings, sponsored content, and user profile retrieval. A standardized response formatter ensures consistent JSON structure across all endpoints.
The student competition module was built to manage the complete lifecycle of ABI’s annual moot court competitions across five named events: Duberstein, Shapero, Chicago, ACB, and Rocky Mountain. This includes team registration with Stripe payment processing and IMIS activity recording, real-time slot availability checking via a JSON API, session-gated judge scoring forms with per-competition weighted scoring formulas, written brief score tracking, six live leaderboard blocks, and CSV export capabilities for competition administrators.
The data migration was handled through a purpose-built migration module with over twenty custom source plugins and migration definitions covering ad clicks, upsell records, event registrations, membership data, privacy consent records, summit data, student competition scores, and more. A separate taxonomy-to-content-type conversion tool was built to generate Drupal 10 content types from ABI’s taxonomy structure and safely migrate nodes between bundles in batched operations.
The webhook system was rebuilt to support outbound notifications to downstream systems when content is published, with per-content-type condition rules covering CLE content, committee announcements, committee newsletters, committee posts, committee recordings, the Daily Wire feed, feed items, journal articles, and upcoming events. A batch resave tool allows administrators to replay webhook dispatch for any content type without manual intervention.
Results
ABI now runs on a modern, supported Drupal 10 platform with a codebase that is structured, maintainable, and built to last. All member-facing functionality carried over from Drupal 7 without disruption, including the journal, events, CLE content, student competitions, and the mobile app API. The integrations with Salesforce, iMIS, and Stripe operate reliably through properly structured Drupal 10 services. The content team has a significantly improved editorial experience, and the development team has a clean foundation for building new features without working around the constraints that had built up in the Drupal 7 codebase over the years.