Services
Custom software developmentUmbraco developmentWeb developmentCRM developmentERP developmentAI & LLM integration.NET development & modernizationE-commerce developmentIntegrations & automationCloud & DevOpsMaintenance, support & project rescueDedicated teams & white-label
Our Work
Case studiesProducts
About Blog Contact
Integrations · Real estate

Reusable GraphQL-to-Umbraco importer that keeps property listings in sync

A service and DLL pair that pulls property data from a GraphQL API into any Umbraco site, maps it by configuration and imports it in parallel.

ClientReal estate websites
IndustryReal estate
Year2024
CategoryIntegrations
Grid of imported holiday homes for sale with size, price, type and year built
2parts: import service and mapping library
Multi-sitereused by adding one DLL reference
The client

About the client

A group of real estate websites on Umbraco that publish property listings supplied by an external data provider.

Several real estate websites built on Umbraco get their listings from the same provider through a GraphQL API. Each site needs a different set of fields, and listings change often.

OSKI built an import tool that any of these sites can plug in, which also sends visitor actions back to the provider.

The challenge

What had to be solved

The import had to be flexible per site, fast on large volumes and easy to audit.

  • Map GraphQL fields to Umbraco properties, including values inside lists and media.
  • Handle different data sets for different websites.
  • Import large volumes quickly.
  • Decide when an import is actually needed, and keep history, logs and reports.
The approach

How the team built it

Two parts with clear jobs

A Service fetches data, keeps import history, decides whether to run and passes mapping data on. A Library DLL maps GraphQL models to Umbraco documents and fields, creates or updates content and refreshes the cache.

Mapping by configuration

Each mapping pairs a GraphQL field path with an Umbraco property. JSONPath extends this to pull values out of lists, and media is formatted and imported along the way.

Parallel work, targeted cache refresh

Mapping, media import and child page creation run in parallel queues and tasks. Only the affected items get a cache refresh, which cut import time dramatically.

History, logs and reports

Imports are triggered by changes in the API, and each run stores its details and status. Both parts log their work, and admins receive a completion report or an error email with the logs.

Data flowing back

Form integration sends information to the provider, such as viewing appointment requests and tracked events.

The outcome

What changed

Listing sites stay current without manual content entry, and the same tool serves each new site.

  • Imports run much faster thanks to parallel processing and selective cache refresh.
  • Every run is recorded, and admins hear about both successes and errors.
  • A new Umbraco site adopts the tool by referencing the DLL and registering its services.
Screens

Inside the product

Start a project

Have a similar project? Tell us about it.

A spec, a Figma file or three paragraphs is enough to start.

  1. First reply · from an engineer, not a sales rep
  2. 30-min call · with Roman, our CTO, to clarify scope
  3. After the call · a written proposal with plan, team and price
Roman Oleksuk
Roman Oleksuk, CTOPrefer to talk? Pick a slot in Roman's calendar
We reply from a human mailbox. No newsletters. Your brief stays under NDA on request. We use your details only to reply; see our privacy policy.