Creating and organizing workspaces. How to use Workbench.
Recently active
I believe there is the possibility to configure user parameters in a way that they take a local path for in/output and when they are going to be published the provided alternative for the FME Flow resources path is used.I cannot find my bookmark on how to do this and did not come to anything useful when searching the net.Does somebody have a tutorial on how to configure the user parameter that it uses the local resources when run in FME Form and the FME Flow resources when run in Flow?
Hi all.I’ve encountered a strange issue, when I made a small workspace to help me encode and decode strings on the fly.Apparently you can’t a TextEncoder and a TextDecoder in the same workspace at the same time !??What kind of dark magic is yielding this error ?I even made each of the two transformer into separate custom transformers, but the error was the same.In 2025.2 beta
Hi there,We have a plethora of web connections in FME Flow from various people publishing workspaces. now that we can use FME Flow as the web connection repo, I would like to tidy these up and ensure a better naming convention/structure.What would be the best way to do this?I think we have to:download every workspace, open them and audit the connections, build a table to show where all the connections are used, create new ones that adhere to our standards, update all workspaces and republish to Flow, ensure any workspace apps have permissions on the new connections delete old connectionsDoes this sound right? Thanks,marc
Hello. Fairly new to FME, so might be a bit over my head.I’m trying to create a validation workflow that compares 50+ files against 3 main ones. They all have the same structure, except the geography field name that is to be used for the comparison.The 50+ files are all named with a similar structure > final_DOMAIN_GEOG_Distance or final_DOMAIN_GEOG_Driving. Pretty much the files are divided by domain and 3 geographies.The 3 main files are a compilation of all domains and GEOG. My thought process was to have 2 csv readers (1 for distance and 1 for driving) and a few parameters that would read the user choice for domain and geography and read the csv accordingly. I have two issues:the parameters for file path seem to work but the csv schema remains the same (eg, it’s reading the original reader before adding the parameters), so it doesn’t update the field name with the geography, when it’s different form the original one is it possible to create parameters that can be used in the tra
Hello Forum, I am reading in two .csv files into FME Form... csv 1Candidate_UPRNs.csvThis has just one column: candidate_UPRN. It contains 100 records. Each record contains a UPRN value in the candidate_UPRN attribute.Note for those outside UK: the UPRN is the unique property reference number (UPRN) from the Local Land and Property Gazetteer (LLPG). As the name suggests, the UPRN is unique and can not be repeated. UPRNs are managed in the LLPG. csv 2LLPG_PAs.csvThis is an extract our entire LLPG with around 169,000 records. It contains multiple columns including UPRN. I want to filter LLPG_PAs.csv down so that I am only using the records that match (using the UPRN value) with the records in candidate_UPRN.csv (i.e.: the 100 records). Before I take the workspace on further from that point I need to establish the filter first. I’ve looked at SpatialFilter, but not sure that’s ideal. Any advice would be welcome. Thanks,
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?