Creating and organizing workspaces. How to use Workbench.
Recently active
Hi, I am getting this error:An error occurred while attempting to insert a row into the table ‘ABC’ using a cursor. The error number from ArcObjects is: '-2147217323'. The error message from ArcObjects is: {The cursor has been invalidated by an edit operation.} I am experiencing an issue when trying to insert features into a feature class stored in an enterprise geodatabase. Specifically, I am both reading from and writing to the same dataset. I haven't encountered this problem before, but it began after I set the Feature Operations to "Upsert" while updating existing records and inserting new records that are not yet present in the database. I suspect that performing inserts and updates simultaneously may be causing a disruption with the cursor. I also attempted to use the Feature holder, but I received the same error. This disruption is affecting the automated process. Does anyone know what might be causing this error or how to fix it? I would greatly appreciate any assistance!Thank
Hi, I am looking into renewing my FME certification in the coming months. It is the first time I will do it proctored. Does anyone have negative experiences with Talview where you couldn’t use FME Form, FME Flow as described here: https://www.reddit.com/r/fme/comments/1dl0647/has_anyone_completed_fme_certified_professional/I understand you are supposed to be able to use the applications and help documentation during the exam. Thanks,Annette
Hello! I’m working on building a scalable FME workspace that can update multiple databases using a configuration CSV file. The CSV includes: Database connections, Table names, Field names (used to map different attribute names across databases)Since each database may use different field names for the same data, I added a “Field Name” column to the CSV to facilitate attribute mapping.What I am trying to do is loop through each row in the CSV, and for each row: Read the database connection and table name, Use the field names from the CSV to map attributes dynamically, Join the data with another source using a Feature Merger. Perform updates based on the joined data.To do this, I’ve:Read the CSV into a list. Set up a counter and a list element extractor to go through one row at a time. Used a Tester to check each row and feed the correct connection and table name into a FeatureReader. After the FeatureReader, I merge it with another dataset and apply logic to update the database.The Roadb
The Documentation for the @DateTimeFormat Function clearly states that parsing ISO 8601 format is supported:“Formats FME or ISO date, time, and datetime strings into a custom format [...] Arguments: <datetime> [...] Date, time, or datetime string in Standard FME Date/Time Format or ISO 8601 date and time format.”, so using PT1H as datetime Argument should be valid.But the Parsing of ISO 8601 date and time format fails:AttributeManager: Failed to parse 'PT1H' as a datetime value. For FME datetime syntax, please see http://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Workbench/!Transformer_Parameters/standard_fme_date_time_format.htm . For ISO datetime syntax, please see http://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Workbench/!Transformer_Parameters/standard_fme_date_time_format.htm#ISO-8601-Duration-FormatFailed to evaluate expression '@DateTimeFormat(PT1H,%H)'. Result is set to null FME Form 2025.1.2.0 (20250829 - Build 25630)
I’m trying to use conditionnal parameters in one of my FME workbenches, and I’m running into a problem where I can’t seem to be able to handle the the <Unused> value that results in trying to read a disabled parameter.Here I have a workbench with 2 parameters, one checkbox that determines whether to verify that values have been reported for the date where the flow is running, and a conditionnal field where one timestamp can be entered (as I normally use FME Flow’s “Event Timestamp” as input for this field).Within FME Form, if FME_LAUNCH_TIME is disabled, it will have the value “<Unused>” (it’s a text string, reported as such by PythonCaller and ParameterFetcher). This is… inconveinient because “<Unused>” (I can’t even type it in the community forums, the system thinks it’s an HTML tag) is not considered null/missing/empty/not-a-value by conditional operators, but it is also a reserved value, meaning you’re often forbidden from even writing it.I am literally unable to write that f
Hi everyone,on my local machine, I have installed multiple FME versions (2023.2.6, 2024.2.4 & 2025.0). In our company we work extensively with git and i use the Workbench Git integration from the command line. However, if I want to diff Workspaces that were modified with the newer versions (only tested for 2025.0) the command “git diff” launches FME 2023.2.6. This is not useful, because if there are e.g. Transformers that have a newer version, i guess one that is not supported in the older versions, the “Compare Workspace” Tool (2023.2.6 version) cannot display them.Is there a way to specify which version of FME should be used when executing the git diff command? Thanks for your helpCheers!
I have been trying to set up a Package dev environment on a Mac (Sonoma 14.7.7) and it crashes every time I get to the ‘import fmeobjects’ test in the venv. Just getting that far was a huge hassle. It appears that the SDK instructions and fme-packager library are geared for Windows. I had to modify the fme_env.pth file to only show the FME Home path and get rid of the rest, for instance. The issue seems to be that the native FME python 3.13.5 library does not like the Python.org 3.13.5 library, but can’t say for sure. Are Macs even supported for this? I currently don’t have access to v2025 on Windows.If anyone has had success making packages using MacOS, any insight is appreciated. Bonus points if you have a good ICP reference! Thanks,-Loren
Hi.I’ve been tasked with projecting data from a local coordinate system to an official one.The local coordinate system transformation can be handled with PROJ, but is not necessarily part of the standard PROJ deployment.Q1: If I add these files to the Reproject/ProjData folder, will FME/PROJReprojector then automatically use them for the transformation ?Q2: Will FME automatically download any necessary (standard) files from PROJ if they’re not found locally ?Q3: And am I correct in understanding that FME 2025.1 and 2025.2 (beta) embeds PROJ 9.5.0 ?Cheers.
Hello everyoneHow can I restart a row counter in FME at the beginning of each year?I have a dataset with a year attribute (e.g., 2025, 2026). I want to generate a rowid that starts at 1 for each new year and increments sequentially.Example: For 2025 → rowid should be 1, 2, 3 … For 2026 → rowid should reset back to 1, 2, 3 … I then want to concatenate the last two digits of the year with the padded rowid to create a WorkOrderID like: 250001, 250002 … 260001, 260002 … Which FME transformers or workflow should I use to reset the counter per year?
Hello everyone,I need to transform a 2D road graph into 3D. Each vertex of the lines should receive the correct Z value from a DTM.I found this solution, which works very well: The problem with this workflow is that it is very slow. My region is very large: the graph has about 150,000 elements, and the vertex extractor generates more than 2,000,000 vertices, which slows down the script. Any suggestions?
We would like to migrate IOT sensors event data, which is exist in MySQL to Hono-Ditto system.Can you please help us with the process? Thank you.
Hello all! I am using a CSV file as a configuration source, which contains a list of database connections and corresponding table names. This CSV connects to a Feature Reader, where:The database connection is set using a parameter (dbConnection) read from the CSV. The feature types are dynamically set using the table names from the CSV.The Feature Reader successfully reads data from all specified tables and outputs them through a generic port. I’ve exposed both the feature attributes and the fme_feature_type.Now, I need to join the database data with client data, but since all table outputs are merged through a single port, it's difficult to manage and distinguish between them.What I’m looking for is a way to automatically separate the data by fme_feature_type (i.e., table name) and route each to a different port or stream without manually updating filters or Testers every time a new table is added to the CSV. This is essential because users will be updating the configuration file with
Hello Forum, I have read in 45 tif files into a single FeatureReader via Select Multiple Folders/Files> Add Files. But when I click three dots next to Feature Types to Read, in order to ensure that all 45 files are listed separately, I can only see one listed. And that doesn't appear to be a input file, but instead it just states ‘TIFF’... What I am doing wrong here? I use this function quite often and it usually lists all selected input files, but on this occasion it is not. How do I get Select Feature Types To Read to list all the selected input files? Thanks,
Hi.Is it possible to execute dynamic SQL in the InlineQuerier ?I tried something like: SELECT * FROM Merged WHERE @Value(“sql_where”)but it doesn’t seem to work.Are there not substitution done in the “SQL Query” window in InlineQuerier ?Yes, I know it has to be SQLite syntax, and it is.Cheers.
Hi all.Is it possible to expose all attributes with a specific prefix with a transformer ?E.g. x_kjhkjhgk, x_iuyiuytiuyt and x_nmbvmnbvmnbvcAll attributes are read by FeatureReaders and renamed with a BulkAttributeRenamer.Or most I delve into doing some Python magic using the schema features and fmeobjects ??Cheers.
Hi.After installing the latest beta, all my 2024 and 2025 workbenches have lost all access to our shared server and database connections.How can I restore the access without compromising everything. Will a regenerate work ?The access still works in versions 2020 and 2022.Cheers.
In addition to the defaults “name” and “type”, I would like to add a third, custom member named “data_owner” at the start of a GeoJSON file I am creating using the GeoJSON Writer (see example below). Is there an easy way to do this - I can’t find anything in the writer parameters - or do I need to use the JSONTemplater or another transformer? (FME 2023.2.0.0){ "name": "gis_assets", "type": "FeatureCollection", "data_owner": "CompanyName", "features": [ { "type": "Feature", "geometry": { "type": "Point", etc.
I am attempting to find the file sizes for each Feature Class within a FGDB, both within a Feature Dataset and at the root of the FGDB. All research yields that the file size is not available via the PythonCaller and we are trying to isolate the FC filesize output via:PythonCaller > getFeatureClassSizeimport os def getFeatureClassSize(feature): fc_path = feature.getAttribute("FC_path") total_size = 0 # Common file extensions in a File Geodatabase valid_extensions = {'.gdbtable', '.gdbtablx', '.atx', '.spx', '.freelist', '.gbx', '.cat', '.gdbindexes'} if os.path.exists(fc_path): if os.path.isfile(fc_path): ext = os.path.splitext(fc_path)[1].lower() if ext in valid_extensions: total_size = os.path.getsize(fc_path) else: for dirpath, dirnames, filenames in os.walk(fc_path): for f in filenames: ext = os.path.splitext(f)[1].lower() if ext in valid_extension
Hi,Getting an error while publishing the workbench.Publish failed - FME Server encountered an error and reported the following message. The resource name must not contain any of the following characters: \ / : * ? " < > | & = ' + % #Regards, Dheeraj
So I’m configuring a service (an automation) which is triggered by an webhook. The automation will process data and then send the requester an email when the job is done.I want to add a little more feedback to the process for the end user. This is in part to reduce the amount or possible duplicate submissions - As I see it I have a couple of options:Send an email when the request comes in confirming that the request is being processed. Most likely this will be enough. (The user will already get a confirmation form the webapp where they submitted the request)Send an email after a certain amount of time (e.g., 15 mins) in case their job is taking a while or they are stuck in a queue. Try to detect duplicate submissions and send an email to the user that their duplicate request was cancelled.As I see it option 1 is the only one which doesn’t require an extra free engine to run another job. Am I missing something?Are there clever way to do either 2 or 3 without an additional engine?
Hi,I’m having a issue making a TIN properly in FME. Basically FME is interpolating points/vertexes that don’t actually exist in the original data. What I want to do is make a TIN that considers only the vertexes of the features I give to it (point/lines and breaklines). I do not want FME to make up data that does not exist.Does anyone know a way that I can do this?For example in this example this is one break line. It should only have two TIN vertices (the ends). No triangles should be created from any interpolated points However, when I look at the TIN for the same spot it has created 6 vertices I am using FME workbench/form 2023. I’ve been trying different settings for the SurfaceModeller and the TIN generator
NullAttributeMapper, AttributeCreator or otherWhat do people use to set default values for attributes?In the case that I have is a json document - in the case values are missing I need to set a default value. Ideally I’d use an NullAttributeMapper, however, there are upwards of 10 values I need to set and I don’t want to use 10 of these. The other option I see is an AttributeCreator/Manager with conditional values which is what I would normally do.
New to FME, have a client using FME and want to read and traverse through a MicroStation DGN file on a number of client machines. What’s the best way to achieve this?Does a license allow me to distribute a DLL for use on their clients?Is there a batch interface I can use?Steve @ Hexagon
Hello,FME workbench has a strong tendency to take longer and longer to perform editing tasks (NOT translation) the bigger the workspace gets.Disclaimer: My workspace contains over 2100 transformers and I am aware that editing transformer links upstream will cause FME to recalculate downstream. However, my frustration is due to the fact that even minor modifications to very small independent workflows in the workspace seem to trigger the same recalculation as the workbench becomes unresponsive for 5-15 seconds every time I do something. This even happens when i move a transformer without altering any workspace logic. It even happens when I move an unconnected transformer! Extremely debilitating to productivity.Is this a known issue / any optimization planned?Using FME Workbench on Windows x64 2016.1. Confirmed on multiple PCs.
Referring to this (closed) post: https://community.safe.com/ideas/httpcaller-to-specify-client-certificates-31782@LizAtSafe mentioned that the feature is released. I can find it nowhere in the documentation. Could someone point me to the right direction on how to authenticate at an API,using a certificate?