I spent years administering TIBCO EMS at one of Europe’s largest drugstore chains. I know the software well: its strengths, its sharp edges, and the operational weight it accumulates over time. I also led the migration away from TIBCO to Solace. This playbook is what I wish I had known before I started.It is written for architects, DevOps engineers, and developers who are not just evaluating a broker swap but rethinking how events flow through their organization.
Why Migrating from TIBCO to Solace Is More Than a Broker Swap
TIBCO EMS is a solid, battle-tested JMS broker, but it was designed for a different era. A time of static topologies, manual configuration, and tightly coupled point-to-point integrations. Every new connection adds weight. Every route is a line in a config file someone has to own. Every external partner that needs access comes with a licensing conversation.
The migration to Solace is not just a technology change. It is a shift from a manually operated messaging infrastructure to a dynamic, policy-driven event mesh. That framing matters, because it changes the questions you ask and the decisions you make throughout the process.
The Core Architectural Shifts
Before diving into concept mappings, it is worth internalizing the three architectural shifts that will change how you think about everything else:
- From managed objects to metadata. In TIBCO EMS, a Topic is an object you create, manage, and delete. In Solace, a topic is not an object, but a piece of metadata attached to the message. This means no lifecycle management, no provisioning bottleneck, and infinite flexibility in your topic hierarchy.
- From static routing to subscription propagation. With TIBCO EMS, you define routes explicitly. Data flows whether or not anyone is listening. In Solace, data flows only where there is active interest. This is not just an efficiency gain, it fundamentally changes how you think about system coupling.
- From a JMS silo to a multi-protocol mediator. TIBCO EMS is a JMS-first world. Solace natively speaks SMF, JMS, MQTT, AMQP, REST, and WebSockets on the same broker. Your Go microservice and your legacy Java JMS client can exchange messages without any translation layer.
Architectural Mapping
With those shifts in mind, here is how the core concepts translate:
| Concept | TIBCO EMS | Solace | What Actually Changes |
|---|---|---|---|
| Authentication | Internal, LDAP, OAuth | Internal, LDAP, OAuth, mTLS, Kerberos | All modern AuthN methods are natively supported. |
| Authorization | ACLs are assigned directly to each user or group individually | ACL Profiles bundle all permissions into a single, reusable policy object that is assigned to one or many Client Usernames | To audit what a user can do in TIBCO, you piece together multiple individual ACL entries. In Solace, one profile tells the full story. Change the profile once, and all assigned clients are updated instantly. |
| Capacity Limits | No formally defined limits for connections, sessions, or queues. Actual capacity must be determined through load testing and re-validated after every software or hardware upgrade | Clearly documented limits per service tier (connections, queues, storage, throughput) | You know what you are buying. Capacity planning becomes a lookup, not a load test. Docs: Service Class Options. |
| Communication Patterns | Primarily direct queue publishing (P2P), Topic-to-Queue bridges available | Topic-based routing with Queue subscriptions | The shift is not from Queues to Pub/Sub, since Solace has both. The shift is away from publishing directly to a queue, which creates rigid producer-consumer coupling. Embrace Topics as the routing layer. |
| Connectivity | Static Routes | Dynamic Message Routing (DMR) | Data flows only where there is active interest. No more pre-defined routes for every potential consumer. |
| Client Licensing | Proprietary client libraries with licensing costs | Free | Every new partner or integration used to be a licensing negotiation. Strategic tip: Work with external partners early so they do not renew their TIBCO client licenses unnecessarily. |
| Filtering | JMS Selectors (header-based, broker-parsed) | Topic hierarchy dispatch | JMS Selectors require the broker to open and parse every message - a significant CPU bottleneck at scale. Solace filters at the network layer based on the topic string. Encode meaningful metadata into your hierarchy (e.g., order/created/v1/eu/de) and filtering happens before a message ever reaches a consumer. Think of it as the difference between opening every letter to find the recipient versus reading the address on the envelope. |
| High Availability | Active/Passive with shared disk (NFS) | Quorum-based HA (native) | Eliminates split-brain risk and removes the operational complexity of managing external shared storage. |
| Message Storage | One copy per bridged queue | One message stored per broker; queues hold references | Fewer IOPS, less disk. Particularly significant under high fan-out scenarios. |
| Multi-Tenancy | Multiple EMS instances | Message VPNs or multiple services | Message VPNs provide logical isolation for different tenants or environments on the same physical broker. Note: in Solace Cloud, separate services per tenant achieve the same isolation. |
| Protocols | Proprietary + JMS | SMF, JMS, MQTT, AMQP 1.0, REST/HTTP, WebSockets | Move from a single-protocol silo to a multi-protocol mediator. One broker, many client ecosystems. |
| Resource Governance | Global connection and resource limits only | Client Profiles with per-group quotas | In TIBCO, a noisy neighbour can exhaust shared connection pools. Solace enforces granular quotas per client group, like max connections, feature restrictions (e.g., XA transactions, dynamic endpoints), and IP ranges. True multi-tenant isolation. |
| Topics | Managed objects (create, configure, delete) | Metadata attached to a message | No topic provisioning required. A producer can publish to any topic string at any time. |
| Queue Ownership | No ownership model; permissions granted per user or group | Every queue has exactly one owner (client username) | A queue in Solace represents a single application's mailbox. Beyond owner permissions, you can set non-owner permissions. For most cases, setting these to no-access is the right default. Keep this in mind when planning queue browsing access. |
A New Vocabulary
Moving to Solace is a bit like relocating to a new country– the underlying concepts are often familiar, but the terminology is different. Here is your translation guide:
Bridge
Client ID
Durable Subscription
Pending Message
Persistent / Non-Persistent
Route
Routed Topic / Routed Queue
User
Wildcards
* (single level) and > (multi-level), but the scope semantics differ. See below.Topic Architecture: Your Most Important Decision
In TIBCO EMS, you may be used to flat or shallow topic structures because topics are managed objects and proliferation creates administrative overhead. In Solace, topic strings are free. There is no object to manage.
This is an opportunity you should take seriously from day one.
A well-designed topic taxonomy is the foundation of your routing efficiency, your security model, and your observability. A poorly designed one will haunt you for years.
A practical template for enterprise use:
{domain}/{noun}/{verb}/{version}/{properties}
Examples:
acme/order/created/v1/eu/deacme/inventory/updated/v2/us/eastacme/payment/failed/v1/apac/sg
With this structure, a consumer in Germany can subscribe to acme/order/created/v1/eu/de for precision, or acme/order/created/v1/eu/> to receive all European orders. Filtering happens at the network layer, before the message reaches any application.
This is not a nice-to-have. A clean topic taxonomy is what makes every other capability (DMR, ACL Profiles, Event Portal governance) work at scale. The Topic Architecture Best Practices Guide is a good starting point.
Wildcard Syntax
Validate your wildcard subscriptions explicitly. Both platforms use * for single-level matching and > for multi-level matching, but the topic level separator is different. TIBCO EMS uses a dot (.), whereas Solace uses a forward slash (/). Every wildcard subscription in your current TIBCO configuration needs to be reviewed and updated:
TIBCO: order.*.created → Solace: order/*/created
TIBCO: order.> → Solace: order/>
This is the change that catches teams off guard. Not the wildcard semantics, but the separator. If your existing TIBCO topic names use slashes within a dot-separated hierarchy, the mapping requires extra care.
Migration Strategy: No Big Bang Required
Enterprise messaging migrations fail when they are treated as cutovers. They also fail when the bridging phase is not approached with discipline.
The cardinal rule of bridging: pick one direction. The TIBCO EMS Micro-Integration connector lets you bridge messages between environments, but running a bidirectional bridge without careful scoping is a fast path to duplicate message processing. Before configuring a single bridge, establish your migration direction for every flow, e.g.:
“Subscribers migrate first. Producers follow. We only bridge data from TIBCO EMS to Solace, not the other way.”
Move consuming applications to Solace first and bridge messages from TIBCO into Solace to feed them. Producers remain on TIBCO until all consumers are migrated and validated. Once all consumers have moved, the producer migrates and the bridge is removed. A message should never travel in both directions for the same flow.
The phases in brief:
- Inventory and design. Document every flow and lock your Solace topic hierarchy before touching any infrastructure.
- Bridge and observe (TIBCO → Solace). Mirror selected flows into Solace and validate delivery, ordering, and throughput with shadow consumers.
- Cut consumers over, one flow at a time. Validate each flow independently before moving to the next.
- Migrate producers, remove bridges. Decommission each bridge immediately after the corresponding producer moves. Unused bridges left active are how duplicate processing problems appear months later.
- Decommission TIBCO. Only once all flows have migrated and all bridges are removed.
If you would like support navigating this process, Solace offers a dedicated migration service to help teams move from legacy messaging systems to Solace (including TIBCO EMS). See the Migrating from Legacy Messaging to Solace offering in our service catalog.
Infrastructure as Code and Event Governance
TIBCO environments are often hand-crafted over years, leading to configuration drift that nobody fully understands. This migration is your opportunity to reset.
Declarative configuration with Terraform. Rather than clicking through an admin UI, define your broker configuration as code using our Terraform providers. You get version history, peer review, and repeatable deployments across environments. This should be a non-negotiable requirement for your Solace setup from day one.
Event Portal as your source of truth. Without a governance layer, a growing event mesh becomes an event jungle within months. Solace Event Portal allows you to model, version, and audit your event flows. Who publishes what, who consumes what, and what schema version is in production. Do not wait until you have 500 topics to introduce governance. Start on day one.
Day-2 Operations: From Black Box to Glass Box
The migration is only the beginning. The operational goal is full observability.
One of the most common pain points in TIBCO operations is answering the question: “Where is my message?” This often requires correlating logs across multiple systems, with no unified trace.
Solace natively supports Distributed Tracing based on OpenTelemetry in the event broker You can see exactly when a message was published, which brokers it traversed, and when it was consumed. End to end, across the entire mesh. This is not a third-party integration; it is built into the broker so there are zero blind spots when optimizing data flows, debugging issues, and ensuring data governance.
Combined with Solace Platform’s integrated observality capabilities (built on Datadog) or with with native 3rd-party export and community projects like the Prometheus exporter and a Grafana dashboard, you have a complete observability stack that gives you the same transparency on your messaging layer that you expect from your application infrastructure.
The Multi-Protocol Reality
One of the most operationally significant changes for an architecture team is moving away from a single-protocol world. Here is how to think about protocol selection in practice:
- SMF (Solace Message Format): The native, high-performance protocol for core backend services. If you are writing new services in Java, .NET, Go, or C, use the native Solace API over SMF for maximum throughput.
- JMS: Your migration bridge. Existing TIBCO JMS applications can connect to Solace over JMS with minimal code changes. This is what makes the phased migration possible.
- MQTT: The standard for IoT and edge devices. If your architecture has any device connectivity requirements, Solace acts as a native MQTT broker. Your edge devices and your enterprise backend share the same mesh.
- AMQP 1.0: For open-source ecosystem integration (Apache Camel, Azure Service Bus interop, and similar).
- REST (via Rest Delivery Points): Allows web services to participate in the event mesh without a messaging library. An RDP can deliver events to any HTTP endpoint, and REST producers can publish events into the mesh.
Administration and Tooling
If you are coming from GEMS (a graphical monitor for TIBCO EMS), there is no single Solace equivalent, but the combined toolset covers more ground.
- Broker Manager is the built-in web UI on every Solace broker. It handles queue and client management, ACL configuration, and operational monitoring. One functional difference from GEMS: you cannot browse queue messages through Broker Manager, because message browsing requires a client user credential, not a management credential.
- Queue Browsers. For browsing messages, you need a dedicated tool that authenticates as a client user. Most browsers also need a management user to enumerate available queues. My preferred option for simplicity is solace-msg-utility. It‘s a lightweight web application you run locally that only requires client user credentials.
- JMS Toolbox is the most vendor-agnostic option, supporting TIBCO EMS, IBM MQ, Solace, and others from a single UI. Useful during the migration period when you need to inspect both environments simultaneously. It requires both management and client user credentials for Solace.
- The Sunburst Topic Explorer offers a visual representation of your topic structure directly from the broker. It lets you explore topic trees and identify patterns by message count, payload size, or hierarchy depth — useful for validating your topic design and spotting anomalies in production.
The Architect’s Checklist
Before you write a line of migration code, work through these in order:
- Design your topic taxonomy. This is the highest-leverage decision in the migration. Get architects, developers, and domain experts in the same room. A good taxonomy takes days to design and saves years of pain.
- Build foundational knowledge early. Use Solace Academy for self-paced learning on EDA concepts and Solace-specific training. For teams that benefit from guided onboarding, the TED (Think Event-Driven) Workshops (https://events.solace.com/) offer structured sessions to align architects and developers on the core concepts before the migration begins.
- Set up Infrastructure as Code from day one. Configure SEMP v2 with Terraform before you provision your first production queue. There is no good time to retrofit IaC onto a running environment.
- Onboard Event Portal before topics proliferate. Model your first event flows in the portal before going to production. Governance is exponentially harder to add retroactively.
- Test all error flows before cutover. Ensure you configured Dead Message Queue behaviour, message TTL and expiry, and max redelivery semantics as you expect them to behave. These are exactly the paths that are hardest to test in production and most damaging when they fail.
- Validate wildcard subscription behaviour. Run side-by-side subscription tests for any wildcard pattern in your current TIBCO configuration before migrating consumers.
- Coordinate external partner license timelines. Make sure partners are not renewing TIBCO client licenses for longer than your migration timeline requires.
Closing Thoughts
Moving from TIBCO to Solace is not simply a broker swap. It is an upgrade in architectural posture: from a statically configured, hand-crafted messaging layer to a dynamic, observable, policy-driven Event Mesh.
The concepts carry over. The vocabulary shifts. The operational model improves significantly once you invest in the right foundations: topic design, IaC, governance, and observability.
Stop managing routes. Start orchestrating events.

At Solace, I empower global partners and enterprise clients to master the event mesh. I don't just teach technology; I build the tools and frameworks that make it accessible.
With over 9 years of experience in the DevOps and SRE ecosystem, I specialize in transforming complex system requirements into scalable, resilient technical solutions. My career has been defined by a passion for observability, distributed systems, and the EDA ecosystem.
