Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

external_entities

1,052 sites Security covered
View on drupal.org

This module enables you to connect your Drupal 8, 9, or 10+ website to external data sources and integrate external datasets as if they were native Drupal content. Although the content remains hosted externally, Drupal treats these remote entities as internal, allowing you to modify field displays, add references, comments, path aliases, share buttons, webshop products, and more.

External data

You can incorporate external data into your site, such as museum collections, Wikipedia content, specialized wildlife thesauri, street names, member directories, or other organizational systems. If the external storage client supports updates, you can also create, edit, and delete remote entities, turning Drupal into a central hub for content management within an organization.

Plugins

External entities can be enhanced with plugins that extend both storage sources (data aggregators, storage clients) and field mappings (field mappers, property mappers, data processors). The module comes with native storage plugins (like REST) and mappers (such as Simple and JSONPath), and there are many additional plugins available (e.g. database storage, string function mappers). You can find a comprehensive list on this page.

Background

Drupal 8+ is database-agnostic, meaning it no longer matters whether the data for an entity comes from Drupal's internal SQL database, an external JSON file, or any other source.

Technique

The module lets you define an external entity type that retrieves data from a storage client and maps those external fields to Drupal fields, creating a "virtual" entity in Drupal.

Known limitations

  • Views support: Version 3 offers native Views support through the xnttviews companion module, while version 2 does not, except with the xnttviews extension. Depending on the speed of querying external entities, using a local index system like Search API may be more efficient than relying on External Entities Views support.
  • File and Image field support: Version 3 natively supports File and Image field types, but version 2 does not. These fields require a Drupal file entity ID rather than a file path. Workarounds include using the ImageCache External extension for image URLs and the External Entities files storage client module for file paths or image URLs.
  • Comments: For comments, use comment fields attached as annotations (#2496699: Allow comments to be attached to entities using a string primary key).

By default, External Entities assumes that all fields of an entity come from the same dataset, but it allows for mixing data sources. Version 3 uses data aggregator plugins to combine data from multiple sources either "vertically," "horizontally," or both. For version 2, you can use the xnttmulti extension. However, external entity fields are only populated if they are mapped to source fields or constants. When editing an external entity, field values are only saved to remote sources, not to Drupal’s database. If you need to store extra data not mapped to a remote source, you can use annotations, which are linked to a local Drupal content entity where you can define custom fields.

To automatically generate annotation entities, manage field mappings, and synchronize local Drupal content types with external entity types, consider using the External Entity Manager extension.

External Entities is available in two versions:

  • v2: A stable version with a couple of plugins.
  • v3: The latest version with many improvements, fixes, and new features. v3 introduces breaking changes in the API (from v2), but v2 can be upgraded to v3. v3 is quite stable now and will have a full release in 2025.

Slack channel #external-entities

Activity

Total releases
6
First release
Feb 2025
Latest release
3 days ago
Release cadence
83 days
Stability
0% stable

Release Timeline

Releases

Version Type Release date
3.0.0-rc2 Pre-release Apr 15, 2026
3.0.0-rc1 Pre-release Jan 31, 2026
3.0.0-beta7 Pre-release Dec 18, 2025
3.0.0-beta6 Pre-release Sep 30, 2025
3.0.0-beta5 Pre-release Apr 16, 2025
3.0.0-beta4 Pre-release Feb 25, 2025