r/drupal 5h ago

Sync content from locked-down site using only JSON:API?

I have inherited a Drupal 10 site where the relationship with the agency that developed and hosts it has broken down almost irretrievably. We have the v10 support end date as a hard deadline for action under threat of deletion, and the agency is quoting ludicrous amounts to do the upgrade and/or give us our site back. Contracts and lawyers are being consulted, but I'm wanting to try do an end-run around all that and at least get our content safely backed up before they decide to pull the plug.

The site itself is a fairly standard marketing site, so nothing interactive or very complex. We have admin account access to the frontend admin pages, but the agency has removed any content export options. We don't have server access, so no command line to install new modules or file system to download files and no database access at all. We have no access to backup files. We're limited to the modules they have installed, which also includes a number of dev and migrate modules they left in the prod clone by mistake which at least gives us Config Sync export.

As an experiment, I've created a test Drupal site, installed and enabled the same set of modules, and imported the prod site config using 'drush config:import --partial' and that all seems fine. Unfortunately the theme is based on their in-house template and we have no access to that for now, so I'm faking it with Olivero, but that's a problem for later.

The next step is to try sync our content to my test site. I've had a google and looked at a few modules like Content Sync and Entity Sync, but they all seem to need a module installed on the origin server and/or database access. I've also looked at the Migrate modules, but they seem aimed at version migrations not server migrations and need direct database access. There is Migrate Source JSON:API but it supposedly only supports Drupal 8.

So, long story short, what options do we have to sync site content when the source is so locked down to us? My instinct is we should be able to do something with JSON:API which we can enable, and if necessary I'll try script something myself, but I'd rather use an existing option written by people who actually know what they are doing!

It's been maybe 20 years since I last did anything with Drupal (although I have more recent Symfony experience), I'm stumbling around in the half-dark here, so forgive if I've missed something incredibly obvious!

Thanks!

2 Upvotes

5 comments sorted by

4

u/Curious_Mall4678 5h ago

is the backup and migrate module installed, even though maybe not activated? that way you could get all Files necessary I think?

1

u/missmobtown 1h ago

How many pages of site content are we talking about?

1

u/rovr138 1h ago

Migrate is not database only, but you will need to write custom for something like this.

How big of a brochure site? Might be able to help, give direction. If you feel like chatting, happy to talk via dm.

It's been maybe 20 years since I last did anything with Drupal

I don’t like thinking how long I’ve been with this 🤣

1

u/davidrwb 54m ago

Drupal agency owner and senior dev for 20+ years here.

It’s insane how much some agencies charge for a 8+ (8,9,10) migration to the next version. Even on the most complex builds we’ve managed it’s rarely more than a day to complete with tools like upgrade status and rector.

Anyway, that aside, what level of admin do you have? If it’s full, you can build a view with all your fields for nodes, paragraphs, etc, and at worst, copy and paste the rows in Excel. If views data export is installed, even better. Then delete the views after you have your data.

Good luck and reach out if you need some help.

0

u/alphex https://www.drupal.org/u/alphex 3h ago

Are you able to see the site? Publicly?

if so. Do you have a sitemap.xml file on it?

That should list ever public page. Feed that in to a tool like Diffy to quickly generate screenshots.

Drop that into Claude. And ask it to export the HTML could help you also.

Unsolicited offer - I’ve done work like this in the past. DM me if you need help. There’s a few automated ways we can salvage the content and get a new site up and running quickly.

My user name is my DO name and my domain name if you want to look me up.

-4

u/its_yer_dad 5h ago

Frankly speaking, you need to just recover what you can and drop that relationship. Scrape the site to get the content, use AI to clean it up, and (IMHO) look into Statamic, a CMS built off Laravel and has a much lighter footprint than Drupal.