Normally, I'd say that it's because you have ".xhtml" in your navigation string. But I think you previously said you are set up to accept ".xhtml" as a JSF URL extension. I still have misgivings about that, however.
Most likely your problem is because you are attempting to parameterise the navigation URL. You cannot do that. Action methods can only return simple navigation IDs or URLs without parameters.
A better approach would be to inject the backing bean for topicPage into the action method's backing bean as a managed property and use its "setTopicId" method to inject the topic directly into the target backing bean.
Customer surveys are for companies who didn't pay proper attention to begin with.