System.perspective.navigate doesn't work on session custom property tag change script

I am attempting to use the session prperty lastActivity to drive a session custom property that acts as an inactivity timer. That expression binding is working well and when displayed on a page the number is accurate. The expression fails to evaluate in designer but does evaluate correctly on any other session.

I then wanted to add a change script to this new custom property to navigate to the home page but that does not work. The script works when used on a button.

Since the error mentioned no perspective page attached to the thread, I attempted to also use pageId='/' as an optional parameter to system.perspective.navigate, but although that resolved the error on clicking save/apply it did not actually navigate to the page '/' as I was hoping. This syntax does not work on a button either. The manual page doesn't have an example of the optional parameter pageId, I'm looking to the community for help on formatting that correctly.

You're getting caught up in a common Designer vs. Session context issue.

In the Designer, there are no pages; the concept doesn't exist. But some pieces are dependent on a reference to pageId not being null, so we provide the View name as a placeholder within the Designer. IN a running Session, that pageId value is actually a unique value generated as each tab is opened.

Now, the Session has no idea which page of the potentially multiple you could have open that you want to navigate, so you'll have to manage that yourself.

  • Loop over every page of the session by making use of system.perspective.getSessionInfo() and filter the results based on the sessionId of this Session.
if currentValue.value > 2:
    all_sessions = system.perspective.getSessionInfo()
    for session in all_sessions:
        if ==
            page_ids = session.pageIds
            for page_id in page_ids:
                system.perspective.navigate(page="/",,  pageId=page_id)

You might also be able to do something like this:

if currentValue.value > 2:
    for page in self.pages:

Thanks! The first solution you proposed worked well for my application.