You Can’t Change the Public URI. Really. You Can’t.

There is now an official version of this article here on

So here’s the first thing you need to know when performing admistrative tasks on Jazz-based products:

You cannot change the public URI. You cannot change the root context. 

I’ve had discussions – long discussions – with lots of customers about this, so let me add this one thing:

Under no circumstances should you change the public URI. Under no circumstances should you change the root context.

This Jedi mind-trick is designed to convince you that you can’t change the public URI or root context after it has been set during setup. Really. You can’t. Just stop thinking about it.

You can get around this constraint by using reverse proxies or virtual hostnames. More on those in future posts. But this does not change the actual public URI or root context. Virtual hosts and reverse proxies just re-map the URLs.

I know what you’re thinking now: Why can’t I change the public URI?

Architecturally, Jazz-based products use OSLC and RESTful interfaces. This means that artifacts (data) is referenced with URLs. When a dashboard shows information from a work item, it’s getting that work item information by traversing a URL. When you get a list of dashboards to choose from, each dashboard is referenced internally by a URL. When an RTC work item links to an RQM test case, it does so through a URL.

All those URLs are written into the database. They’re not dynamically calculated. The actual URL is placed into the database.

Jazz-based products construct these URLs by using the public URI and the root context. So if your public URI is

and your root context is


then every URL that identifies information in the database starts with

If you change the public URI or root context, you break all those links. And your heart will break too.

I know what you’re thinking now: Why not just do a search/replace of the URLs in the database when we change the public URI or root context? Ah, young Jedi, life is not so simple.

The table structure in the database is optimized for reads. The result is that item content is often stored as blobs (binary large objects), not simple text. And some resource content is not directly interpretable by the Jazz framework because the data is component specific. The URL in these components may be stored as binary, rdf, xml, etc. So identifying and replacing the links is not trivial.

That said, there’s plenty of discussion going on amongst developers about making public URIs more flexible. Stay tuned.


Dan Toczala’s article on moving CLM applications to different machines (references with URLs that are different from the public URI).

A humorous explanation of REST.

This entry was posted in Uncategorized and tagged , , , , , , , . Bookmark the permalink.

3 Responses to You Can’t Change the Public URI. Really. You Can’t.

  1. Pingback: Are You Upgrading Jazz to CLM 2011? « Dan Toczala's Blog

  2. Pingback: How to Move and Change your CLM Installation | JazzPractices

  3. Pingback: Reverse Proxies Don’t Change the Public URI | JazzPractices

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s