Skip to main content

Introducing FME Data Virtualization!

Introducing FME Data Virtualization!
SagitAtSafe
Safer
Forum|alt.badge.img+2

We are excited to announce a powerful new capability in FME: Data Virtualization – designed to bring the full power of FME directly into your applications, without having to build additional infrastructure or writing custom code.

With FME Data Virtualization, you can now build secure, AI-ready, OpenAPI-compliant REST APIs directly on top of any system or data source FME supports. Complete CRUD (Create, Read, Update, Delete) functionality with built-in caching, security, all through our no-code interface.

Why it matters

  • Real-time access to any source: Expose APIs using FME workflows to engage systems without moving or duplicating data.
  • AI-ready OpenAPI endpoints: Enable LLMs, agents, and AI platforms to interact with enterprise data securely.
  • Built-in governance: Apply filters, authentication, and permissions to control exactly what gets shared.
  • Streamlined innovation: Empower developers and data teams to create APIs without custom code or additional infrastructure.

Capabilities at a Glance

Filter to create custom views of data, eliminating sensitive or irrelevant information. Gain control and increase security by allowing only authenticated users and applications to access APIs.

Data can be filtered out in FME workspaces to remove sensitive information and simplify the output response.

Caching for high speed endpoint requests - deliver faster response time, for common or static requests. Better performance and reduced system load.

Caching can be configured for the entire API or set individually per endpoint.
 

AI-Ready OpenAPI Endpoints – AI tools can readily ingest Data Virtualization endpoints so you can use natural language to interact with data.

Data Virtualization APIs are built using the OpenAPI standard allowing you to easily integrate with AI tools.

Synchronous & Asynchronous endpoints - gives the application developer maximum flexibility to decide how they want to engage the application layer.

Asynchronous processing allows the application to receive an immediate response from the Data Virtualization API.
 
The results from the FME workflow are temporarily available for client or end user applications to retrieve.

Download 2025.1 Data Virtualization beta here

Check out "Getting Started with Data Virtualization" knowledge based article here

Join our upcoming webinar “Data Virtualization: Bringing the Power of FME to Any Application” on June 4, 2025.

 

13 replies

hkingsbury
Celebrity
Forum|alt.badge.img+55
  • Celebrity
  • May 6, 2025

Exciting!! This is going to allows us to build some really cool solutions for customers! Can’t wait for it to be out of beta

 

Great work ​@rylanatsafe and team


martinkoch
Supporter
Forum|alt.badge.img+18
  • Supporter
  • May 7, 2025

I predict this is going to do to the ‘webhook/streaming service’ what Automations did to the classic notification framework.

Thanks ​@rylanatsafe! I professionally love you. 


evoteck
Enthusiast
Forum|alt.badge.img+14
  • Enthusiast
  • May 7, 2025

The ability for a user to create APIs without custom code is top Notch.


rylanatsafe
Safer
Forum|alt.badge.img+13

Thank you, ​@martinkoch and ​@hkingsbury ! A huge shout-out to our developers and design team for their hands-on involvement and genuine excitement from the beginning.

I am looking forward to seeing how you (and everyone else!) uses Data Virtualization to create new solutions.


arenscott
Contributor
Forum|alt.badge.img+8
  • Contributor
  • May 7, 2025

Extremely keen to give this a whirl and explore it’s capabilities, nice job Safe!


alexbiz
Enthusiast
Forum|alt.badge.img+12
  • Enthusiast
  • May 8, 2025

For those eager to explore this new feature, I've developed a Custom Transformer to assist with HTTP response generation:
👉 DataVirtualizationResponseSetter on FME Hub


martinkoch
Supporter
Forum|alt.badge.img+18
  • Supporter
  • May 8, 2025

Thanks ​@abizien I woke up this morning with the idea: ‘Think what we can do, if we could stream back HTML’. Build kind of a web-catalog of our data (with download-buttons of the same data in different formats??)


alexbiz
Enthusiast
Forum|alt.badge.img+12
  • Enthusiast
  • May 8, 2025
martinkoch wrote:

Thanks ​@abizien I woke up this morning with the idea: ‘Think what we can do, if we could stream back HTML’. Build kind of a web-catalog of our data (with download-buttons of the same data in different formats??)

That's a great idea — and funny you mention it! I'm currently working on a BetterReportGenerator group of Custom Transformers.It takes a different approach to generating web pages with FME than the native HTMLReportGenerator.

While it's not specifically aimed at building web catalogs, it could definitely be combined with the new data virtualization feature to achieve something similar — like dynamic pages with format-specific download links.

Still a bit early, so some patience is needed — but I’m looking forward to sharing more soon!

 

 


hkingsbury
Celebrity
Forum|alt.badge.img+55
  • Celebrity
  • May 8, 2025
abizien wrote:

For those eager to explore this new feature, I've developed a Custom Transformer to assist with HTTP response generation:
👉 DataVirtualizationResponseSetter on FME Hub

​This is great!

FYI ​@mark2atsafe 


mark2atsafe
Safer
Forum|alt.badge.img+44
abizien wrote:

For those eager to explore this new feature, I've developed a Custom Transformer to assist with HTTP response generation:
👉 DataVirtualizationResponseSetter on FME Hub

 

Great idea. Does it set any headers as well? For example, it could set:

response.headers{0}.name = Date
response.headers{0}.value = @DateTimeNow()

I can’t remember what other headers exist, but Date is one that should always apply, I think.

Also, do you have a Sampler transformer? If not, it might be worth adding a Sampler to pass only 1 feature, in case someone accidentally sends 1,000 features through. I’m not sure what would happen, but it couldn’t be good!

 

I didn’t even think about returning HTML! Ooh. Now I have a number of areas opening up that I’d never considered!

 

I’m trying to think what other custom transformers might be of use.

I think DV workspaces need to always return something to the user, even if it’s an error, so trapping errors is going to be important. That includes parameter validation - make it case insensitive, check for valid data types and values, etc. 

In fact, some APIs return data in pages (e.g. fetch me page 6 of 100 records per page). A custom transformer could check if the page parameter values are valid, maybe generate a SQL statement like:

OFFSET @Value(ToSkip) ROWS FETCH NEXT @Value(query.pagesize) ROWS ONLY;

And maybe there could be a custom transformer that wraps up the JSONTemplater in a nicer way for beginners. For example, one of my templates starts out with:

{|
    if (fme:is-attribute-null("query.teamid"))
    then {"TeamID": fme:get-attribute("TeamID")}
    else (),
    {
    "PositionID": fme:get-attribute("PositionID"),
    "PositionLatitude": fme:get-attribute("PositionLatitude"),

Which is a lot of anyone to get their head around!

 

I’m not saying you - ​@abizien - should have to create these! I’m just throwing out some ideas.

 

As an extra bit of background, here’s a screenshot of one of my workspaces. You can see how I have a lot of validation going on, a number of response codes (that I can now replace with DataVirtualizationResponseSetters), a FeatureReader to get data from a database, and the JSONTemplater to create the response.

 


alexbiz
Enthusiast
Forum|alt.badge.img+12
  • Enthusiast
  • May 8, 2025

@mark2atsafe 
“Does it set any headers as well?”

At the moment, no — headers aren’t directly handled. I was hoping to allow users to define a list of custom headers through the CT parameters, but FME doesn’t currently support editable table-type parameters that would be ideal for this use case. Maybe that’s something worth suggesting as a Workbench enhancement!

That said, I could definitely add some basic headers automatically — like Date — and I’d be happy to take suggestions on other useful defaults.



“Also, do you have a Sampler transformer?”
I don’t know what happen when you try to send more than one feature to a DV writer, but wouldn’t I choose to let the user experiment with that 👀
I guess I will try testing a bit more with the new Data Visualization feature before adding any user-proofness.


Thank you for your feedback and ideas for the BetterReportGenerator !
That’s an excellent use-case for those custom transformers.

The system I'm building is fairly modular: each report component (titles, tables, charts, etc.) is handled by a dedicated transformer, making it easy to expand or plug in new functionality. Here's a screenshot of the workspace that generated the sample report I showed earlier, if that make sense :

Note that an HTML Writer was used here, but we could use a DVResponseSetter + DV Writer to return the HTML report through DV API.

Given the modular design, adding a new transformer to fetch data using DV (as you suggested) would be totally feasible !

That said, it might require a well-structured DV API with standardized endpoints and schemas to really shine — so we’re probably talking about a full-on FME Flow project at that point!


alexbiz
Enthusiast
Forum|alt.badge.img+12
  • Enthusiast
  • May 10, 2025

I’ve just published two new Custom Transformers to simplify JSON response generations for DV !

👉 DataVirtualizationJSONList
👉 DataVirtualizationGeoJSON

 


alexbiz
Enthusiast
Forum|alt.badge.img+12
  • Enthusiast
  • May 10, 2025

Just released another Custom Transformer that might be useful for paginated responses in DV:
👉 DataVirtualizationJSONPaginate

Could be handy for your use case, ​@mark2atsafe ! It helps structure paged JSON outputs cleanly based on query parameters.


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings