FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
This article lists off application models of Process & Utility Examples: Visualization, Utility and Specialized Tools, Process Flow Logic.
View full article
Demonstrating Map Array Initialization and Population
View full article
FlexSim 2025 LTS is now available for download.   You can view the Release Notes in the online user manual.   FlexSim 25.0.12 Release Notes   If you have bug reports or other feedback on the software, please create a new post in FlexSim Forums.
View full article
This article lists off application models of Statistic Examples: Custom Statistic Collectors, Custom Performance Measures, Visualization of Metric in Model view, Other
View full article
Gather the statistics of total travel distance of a task executer that is created via process flow
View full article
Preparation   You may want to brush up on how a license version is related to a product version.   When you understand what version of FlexSim will work with your license, download and install an appropriate software version for your license.   Find your licenses   From your FlexSim Account, click the Licenses link in the top menu. In the submenu, choose List. Expand the various product and version folders to find the Activation ID you wish to activate. An Activation ID looks similar to this example: yourcompany.com01-ABCDE-FGHIJ-KLMNO-FSENT21.2 Highlight and copy the Activation ID you will activate.   License your software   Open FlexSim Software. Click Help in the main menu. Choose License Activation. Paste your Activation ID into the field. Click the Activate button. Wait for an indication of success. Repeat for any other Activation ID you wish to activate to this computer.   Your license activates via the Internet, so make sure your computer is connected!   If your computer is offline or has trouble connecting to FlexSim's license server, try the Standalone - Activation - XML / Offline instructions.
View full article
When working with complex hierarchical models in FlexSim, referencing objects deep inside a structure can quickly become difficult to manage. When not using multiple centre port connections (which gets messy)  users often rely on manually created labels and pointers, but that in turn can  introduce extra work and inconsistency—especially when deciding whether a label should reference a single object or an array. This post describes a small set of user commands, packaged as an auto-installing user library, that automatically builds and maintains hierarchical object references based on each object’s role. The goal is simple: allow users to reference objects using intuitive chains like: current.printerCell.rewinder.turret without manually creating or maintaining those labels. What this does This system automatically: creates label pointers based on object roles (functionname) builds those references up the hierarchy optionally propagates system-level references downward handles single vs multiple objects automatically rebuilds everything on reset so it stays consistent How it is set up The functionality is delivered as: an auto-installing user library containing the commands a template container that includes: a reset trigger that calls: containerReset(current) predefined labels: functionname systemContainer Users can drop this container into their model and begin assigning functionname labels to objects. The rest is handled automatically at reset. Core concept Each object declares its role using a label such as: functionname = "rewinder" From this, the system builds references dynamically using only the tree hierarchy. A key point is that this is not limited to containers. Any object, including standard FlexSim fixed resources such as processors, sources, queues, and sinks, can and should also be given a functionname when you want it to participate in the reference structure. That means this system maps not just structure, but function. How it works 1. Reset seeds the reference map On reset, each relevant container calls: containerReset(current) This starts the process of rebuilding all references from the current tree structure. 2. Objects register themselves upward If an object has a non-empty functionname, it adds a reference to itself on the next relevant level above it. So if a rewinder contains a turret, the rewinder can gain: rewinder.turret 3. Non-functional levels are skipped If an intermediate object has no functionname, the logic recurses through it rather than making it part of the reference chain. That means purely structural levels can exist in the tree without cluttering the reference path. So a structure like: printerCell   └─ layoutContainer        └─ rewinder             └─ turret can still produce: printerCell.rewinder.turret even though layoutContainer exists physically in the tree. 4. System containers propagate references downward If an object has: systemContainer = true then its own functionname is pushed down to all contained objects. So if printerCell is marked as a system container, nested objects can directly reference: current.printerCell This makes it easy for deeply nested components to find the root system they belong to. 5. Repeated roles become arrays automatically If a label already points to one object and a second different object needs to be stored under the same role name, the value is automatically converted into an array. So if one rewinder contains multiple turrets, then: rewinder.turret becomes an array of turret pointers instead of a single pointer. Users do not need to decide this in advance. Works for both machines and factories A useful feature of this approach is that a “system” does not have to mean a single tightly integrated machine. A system can be: one complex interconnected machine acting as a whole one cell within a larger process a factory made up of linked but physically distinct cells As long as those objects live under a meaningful tree structure, the same logic works. A printer cell can be used as a standalone system, then placed inside a larger factory container and reset again to gain one more level of functional context. That makes the approach scalable from machine-level modeling to line-level or factory-level organization. Example model I’m also including an example printer cell model where the labels are not pre-populated. You can: open the model press Reset inspect the created labels on the objects Then you can place that same printer cell inside a factory container, reset again, and inspect the results after the hierarchy changes. That gives a simple way to see the library working in both a standalone and larger-system context. Implementation details Below are the three user commands that make this work. 1. containerReset(<container>) Purpose This is the reset entry point. It does three things: registers the current object upward on its parent if it has a functionname if the current object is a systemContainer, propagates a reference to itself downward through everything beneath it calls the recursive function that builds the rest of the pointer map below it So this command seeds both the upward and downward context, then delegates the deeper hierarchy building. 2. assertReference(<objectToAddReference>, <referenceName>, <referenceObject>) Purpose This utility adds a reference safely and automatically handles whether the label should be: a single pointer or an array of pointers If the label is empty, it stores a single object pointer. If it already points to a different object, it converts the value into an array. If it is already an array, it adds the new object only if it is not already present. This is what removes the need for users to decide ahead of time whether a role is unique or repeated. 3. assertallobjectpointers(<involved>, <container>) Purpose This is the recursive traversal function. It walks downward through the tree under container and looks for objects with a non-empty functionname. When it finds one, it adds a reference on current using that object’s function name. When it encounters an object with no functionname, it does not stop. Instead, it recurses further downward through that object’s children. This is the key to skipping non-functional levels in the tree. In effect, this command says: Starting from the current functional object, keep searching downward until you find the next lower functional objects, then create references to them. That is what allows the reference chain to reflect logical structure rather than every structural level. Why this is useful This approach gives you: cleaner, more readable code no manual label maintenance automatic support for one-or-many references a functional map of the model rather than just a physical tree better reuse of machines, cells, and factory-level groupings Instead of writing search logic, you can work with meaningful chains such as: current.printerCell.rewinder.turret Best practices Use role-based names Set functionname based on what the object does, not its instance name. Good examples: printerCell rewinder turret infeedQueue Less useful examples: object1 machineA testNode Be consistent across models If you reuse systems or templates, keep the same functionname values so code remains portable. Add functionname only where it adds value Not every object needs one. Use it on objects you want to reference directly in logic. Include fixed resources too Do not treat this as a container-only feature. Fixed resources such as processors, sources, queues, and sinks can also participate and often should as these will be the objects your want to setup, load or listen to. Use systemContainer deliberately Mark the objects that represent meaningful system roots. That may be a machine, a cell, a line, or a factory-level grouping. Expect arrays when a role repeats If multiple objects with the same function appear under the same functional parent, that reference will become an array. Keep the hierarchy meaningful Since this works purely from tree structure, the physical organization of the tree should support the logical organization of the model. Use it to remove search logic If you find yourself repeatedly searching for the same kind of object, that is often a sign that it should have a functionname. Summary This approach turns the model hierarchy into a self-maintaining functional reference map. By assigning functionname labels to meaningful objects and rebuilding relationships during reset with containerReset(current), the model can automatically expose useful object references without manual wiring. That works whether the model represents a single complex machine or a larger factory made up of linked but physically distinct cells. The result is cleaner code, easier maintenance, and a more consistent way to navigate hierarchical models.
View full article
Open FlexSim Software. Click Help in the main menu. Choose License Activation. Click the Return tab. Each of your activated licenses will be listed in the dropdown selector. Select a license you want to return. Click the Return button. Please wait while your FlexSim Software communicates with the license server. The status text will update, and should end with an indication of success. Repeat to return any other Activation IDs that need to be returned.
View full article
The FlexSim Application Models is a collection of example models, techniques, and reusable solutions from the FlexSim Knowledge Base. 
View full article
This article lists off application models of conveyor systems: Conveyor System Types and Applications, Routing and Sorting Systems, and Packaging and Item Handling
View full article
This article lists off application models of Healthcare: Patient Flow Behavior, Facility and Resource Constraints, and Reference and Learning Models
View full article
This article lists off application models of AGV / AMR & Navigation Logic: AGV Systems, Visualizations and Analysis, Advanced AGV Behavior, GIS.
View full article
This article lists off application models of Games and VR: Games, VR and Visualizations
View full article
This article lists off application models of Material Handling: Material Handling Systems, Logistics & Supply Chain
View full article
This article lists off application models of Warehouse examples: Warehouse Systems, Order Fulfillment and Logistics, Logistics and Supply Chain.
View full article
This article lists off application models of Optimization, AI, ML & Python Integration: Machine Learning, Optimization Models, Experimentation and Distribution Computing, Data Integration and Messaging, Python.
View full article
This article lists off application models for Module, Integration, & Library Examples: Modules, Integration and Development
View full article
Missed the FlexSim Summit or want to revisit your favorite sessions? The recordings are now available to watch on demand.   The summit featured presentations from FlexSim users, partners, and Autodesk experts covering a wide range of topics—from manufacturing and healthcare simulation to AMR fleets, system design, and the latest FlexSim product updates.   You can explore all the sessions here: https://www.autodesk.com/campaigns/flexsim-summit/overview   Highlights include: FlexSim product roadmap and developer Q&A Real-world customer case studies Advanced simulation applications and workflows What’s new in FlexSim Take a look and continue the conversation with the FlexSim community!
View full article
First things first   Sometimes the easiest method for fixing a standalone license is to simply activate the same license again. No need to return first. Just get the full activation ID for any broken licenses and activate them again.   Look for the broken licenses within FlexSim by going to Help > License Activation > View Licenses tab and pressing the View Licenses button. Scan the license information for licenses that indicate they are **BROKEN**. For licenses that are broken, look up the full activation IDs in your online FlexSim Account. Using the full activation IDs for each broken license, activate the licenses normally within FlexSim by going to the Activate tab and pasting and activating each activation ID in turn. No need to return the licenses first. In case you need more detailed activation instructions, see: Standalone - Activation - Online Standalone - Activation - XML / Offline   If you completed the 3 steps above but encountered error messages, it is time to manually repair your licenses.   Okay, time to repair   Standalone licensing does not have a method for repairing online. Here are the steps to manually repair your license. These instructions apply to FlexSim 2016 and later. If you are using an older version of FlexSim, please download FlexSim's latest version and follow these instructions. You can manage your older FlexSim licenses from the latest software - the License Activation window will still show your older licenses and you'll be able to complete all these steps for your broken pre-version-16.0 licenses.   Open FlexSim as an administrator by right clicking the program icon and selecting Run as Administrator. From the main menu, go to Help > License Activation. Go to the Advanced tab, then the Repair tab. For each broken license listed in the License selector box, click the Generate XML Request button. Save each XML file to a convenient location on your computer. Log in to your FlexSim Account. From the top navigation header click the Licenses link, then choose Manual XML in the Licenses submenu. Upload your XML files by dragging them onto the drop zone. Your uploaded XML requests will be processed. Upon completion, you will be prompted to download each XML response. In FlexSim (your instance opened above in step 1 using Run as administrator), you should still be on the same License Activation > Advanced > Repair tab. Process each response by pressing the Process Response button and browsing to an XML response. FlexSim should successfully repair the license. After repairing it should be usable and returnable.
View full article
Trusted Storage   FlexSim is licensed using FlexNet's Trusted Storage. Trusted Storage is a secure storage area FlexNet creates on your license server where it keeps encrypted and hashed license information for licensing FlexSim. Before you can activate a FlexSim license to your license server, its Trusted Storage must be configured. This is done by your license server authenticating with FlexSim's main license server.   Below we'll cover configuring Trusted Storage on your license server. If you're here looking for instructions for standalone licensing, check out the article Standalone - Configure Trusted Storage.   I haven't configured Trusted Storage before - why now?   When your license server communicates over the Internet with FlexSim, this initial Trusted Storage configuration happens automatically and invisibly during the course of the license server's first license activation. The first time you activate a FlexSim license to your license server, your license server and FlexSim's main license server authenticate with each other, configuring your local Trusted Storage, and then immediately activating the requested license.   In other words:   Internet-connected activation = automatic and transparent Trusted Storage configuration.   But you're here because your license server can't communicate over the Internet with FlexSim's main license server. Consequently, your Trusted Storage configuration must be completed manually before activating any license.   Create a Trusted Storage config request   On your license server, in your extracted download folder of FlexSim license server materials, navigate into the folder flexsimserveractutil. Right-click flexsimserveractutil.exe and select Run as administrator. In the FlexSim ServerActUtil program, go to Tools > Manual Activation > Generate Request. Enter a valid Activation ID. You can use our special activation ID configure-ts, but any valid activation ID can work. Enter 1 for the Count (seat quantity). Click Browse to select an Output File. Choose a filename for the saved request. We used configure-ts.xml. Press Save. Press Generate. You've just saved a new XML activation request in the location you selected. You can confirm this is a Trusted Storage config request by viewing the saved XML file in a text editor like Notepad. A configuration request will lack the TrustedHostInformation tag. If your configure.xml file contains that tag, that means your Trusted Storage is already configured. In that case, you can move on to the offline license activation steps for your license server. Otherwise, continue configuring your Trusted Storage below.   Submit your Trusted Storage configuration request   Transfer your Trusted Storage config request XML file from your chosen save location to a computer with Internet access. From your Internet-connected computer, open a web browser and login to any FlexSim Account - even a new guest account will work. Click the Licenses link in the header, then choose Manual XML in the Licenses submenu. Upload your XML request file by dragging it onto the drop zone. Your uploaded XML request will be processed. Upon completion, you will be prompted to download the XML response.   Did you get a red error message instead of a green success indicator?     A message "Fulfill count exceeded the available seat count" means that Trusted Storage is already configured on your license server. In that case, move on to the offline license activation steps for your license server. Otherwise, continue below to finish configuring your Trusted Storage.   Process your manual activation responses   Transfer your downloaded XML activation response to your offline license server. In the FlexSim ServerActUtil program, go to Tools > Manual Activation > Process Response. Browse to an XML activation response file. Press Process. FlexSim should give you an indication of successful processing of your config request.   At this point your Trusted Storage should be fully configured. You are ready to activate your licenses.
View full article
Top Contributors