In this Post

    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:

    1. 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.
    2. 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.
    3. 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:

    ConceptTIBCO EMSSolaceWhat Actually Changes
    AuthenticationInternal, LDAP, OAuthInternal, LDAP, OAuth, mTLS, KerberosAll modern AuthN methods are natively supported.
    AuthorizationACLs are assigned directly to each user or group individuallyACL Profiles bundle all permissions into a single, reusable policy object that is assigned to one or many Client UsernamesTo 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 LimitsNo formally defined limits for connections, sessions, or queues. Actual capacity must be determined through load testing and re-validated after every software or hardware upgradeClearly 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 PatternsPrimarily direct queue publishing (P2P), Topic-to-Queue bridges availableTopic-based routing with Queue subscriptionsThe 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.
    ConnectivityStatic RoutesDynamic Message Routing (DMR)Data flows only where there is active interest. No more pre-defined routes for every potential consumer.
    Client LicensingProprietary client libraries with licensing costsFreeEvery 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.
    FilteringJMS Selectors (header-based, broker-parsed)Topic hierarchy dispatchJMS 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 AvailabilityActive/Passive with shared disk (NFS)Quorum-based HA (native)Eliminates split-brain risk and removes the operational complexity of managing external shared storage.
    Message StorageOne copy per bridged queueOne message stored per broker; queues hold referencesFewer IOPS, less disk. Particularly significant under high fan-out scenarios.
    Multi-TenancyMultiple EMS instancesMessage VPNs or multiple servicesMessage 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.
    ProtocolsProprietary + JMSSMF, JMS, MQTT, AMQP 1.0, REST/HTTP, WebSocketsMove from a single-protocol silo to a multi-protocol mediator. One broker, many client ecosystems.
    Resource GovernanceGlobal connection and resource limits onlyClient Profiles with per-group quotasIn 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.
    TopicsManaged objects (create, configure, delete)Metadata attached to a messageNo topic provisioning required. A producer can publish to any topic string at any time.
    Queue OwnershipNo ownership model; permissions granted per user or groupEvery 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

    Queue Subscription
    A TIBCO Bridge is a static, administrator-created object connecting Topics and Queues.
    In Solace, the functional equivalent is a Queue Subscription. It can be created by an administrator or by the client at runtime.
    Note: Solace also has a concept called a Message VPN Bridge, but this is something entirely different. It connects two separate Message VPNs, not Topics to Queues. Do not confuse the two.

    Client ID

    Client Name
    The unique runtime identifier for a session. In TIBCO, used primarily to anchor durable subscriptions. In Solace, it identifies the specific connection.

    Durable Subscription

    Topic Endpoint
    The JMS Durable Subscription maps to a Solace Topic Endpoint. This is the correct JMS-spec implementation.
    Recommendation: In practice, consider using a Queue with a Topic Subscription instead. Queues offer better scalability and enable native load balancing across multiple consumers, which Topic Endpoints do not support.

    Pending Message

    Spooled Message
    If you are looking for “pending” messages in Broker Manager, look for the spool.

    Persistent / Non-Persistent

    Persistent / Direct
    Same concepts, different vocabulary.

    Route

    Cluster Link + DMR
    A TIBCO Route is a static, administrator-defined path.
    In Solace, the Cluster Link establishes broker connectivity, and DMR handles dynamic routing based on active subscriptions—no explicit route definitions required.

    Routed Topic / Routed Queue

    Dynamic Message Routing (DMR)
    In TIBCO, an administrator must explicitly define which topics are routed.
    In Solace, clients add subscriptions via the client API, and DMR propagates them automatically across the mesh.

    User

    Client Username
    The credential for authentication and the anchor point for both Client Profiles and ACL Profiles.

    Wildcards

    Wildcards
    Both platforms use * (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/de
    • acme/inventory/updated/v2/us/east
    • acme/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:

    1. Inventory and design. Document every flow and lock your Solace topic hierarchy before touching any infrastructure.
    2. Bridge and observe (TIBCO → Solace). Mirror selected flows into Solace and validate delivery, ordering, and throughput with shadow consumers.
    3. Cut consumers over, one flow at a time. Validate each flow independently before moving to the next.
    4. 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.
    5. 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:

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.
    6. Validate wildcard subscription behaviour. Run side-by-side subscription tests for any wildcard pattern in your current TIBCO configuration before migrating consumers.
    7. 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.

    Pascal Reitermann
    Technical Trainer

    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.