Success Path
Everything you need to know to upgrade your ThingWorx Platform

Validate Upgrade

Test and validate your ThingWorx upgrade according to your test plan. Determine if the upgrade is ready for production.

Execute Test Plan

First, determine the order of site/instance. Your test plan needs to be executed as per the plan. Test your application thoroughly by deploying code from your Dev environment to your Test or QA environments. Developers should follow their processes for source control. This upgrade should not require any code changes. Be sure to complete the upgrade before making any changes to your code. Check that each environment shows the appropriate data for the tests you'll conduct. You may need to strip some production data from some environments for integration and system testing. For user acceptance testing (UAT), you should have production or production-like data available. Do count evaluations on server performances since we might have less data on test/QA servers.

Once your code is in a test or QA environment, developers can execute the testing plan. Stick to the strategy created in the planning phase. Test plan must run through several test scenarios, like adding a new user or interacting with a Mashup with the right frequency of requests. Test every component according to the plan you made, then compare the results between servers. Always keep security in top of mind.

The migration of historical data may take several weeks to migrate fully. The recommendation is to import on a rolling basis. Prioritize the data you need to understand trends or make sense of the data you're collecting going forward. If you're retiring any existing systems, migrate that data sooner. Keep in mind, the more data you migrate and store, the more it affects system performance.

Few reminders for testing:

  • Verify user permissions, logins & data
    • Developers should create test user accounts and assign them to each of the user groups. Use a QA environment that closely resembles production. Then log in as each of the test users.
    • Verify that the test user accounts can:
      • Log in as expected
      • Access the right apps
      • Access the right data
      • Take actions in the app as expected
    • Make sure users have the same ThingWorx feature access they originally had before upgrading. Monitor and change user permissions, if needed. Verify each environment shows the appropriate data for each user group. There should not be any data leakage while the app is up and running.
  • Verify licenses
  • Complete unit and functional testing
    • Unit-level testing verifies each piece of functionality works correctly
    • Functional testing ensures the application performs the way that a user expects
    • If you find any issues, consider rolling the application back to the dev environment
  • Confirm system performance
    • Once assets are connected and data is flowing, perform various load tests to check whether system load, performance, and availability are acceptable. It's important to stress test the system. Test the user load and device input load. Simulate things to ensure the system doesn't crash under extreme conditions. Monitor and observe the system for a couple of days.
  • Monitor the data flows, integrations, and connectivity
    • Implies on remote connectivity and integration
    • Data flow is continuous and integral
  • Verify logs, entities count, and system stats
    • Regular monitoring of logs for any errors/issues
    • Count entities to ensure nothing is overlooked
    • Overall system stats, health, and configurations
  • Verify all customizations & extensions
    • Ensure all customizations and extensions are appropriately moved to test/QA servers and are in place

Remember that testing is an iterative process. Follow your test plan thoroughly. If you have questions, contact PTC Technical Support. Remember to document changes as you write and record test results. Share test results with the project team, including the Project manager, Project sponsor, System admin, ThingWorx admins, and IT team. Test results help you determine the next steps.

Recommended Resources

Re-Enable Non-ThingWorx Software

Determine which site/instance first to re-enable. Transition your integrations to start feeding data into ThingWorx as planned. After you turn on the integrations, verify the data is flowing from the asset/tool/system as expected. Make sure you're not receiving extraneous data. Compare the data from old systems. Data should be identical. Monitor the data for several hours before you continue through deployments. Consider security measures, network & proxies around each component layer.

Double-check dependencies and integrations for data leakage. These shouldn't be blocking any connectivity and functionality. If an outage occurs, it should be well documented and shared widely.

Verify changes to the visibility and permissions of user groups as needed and update your documentation. You may need to make changes to user groups in ThingWorx Navigate and your source system, like Windchill. If you're working on a custom app, you'll do user acceptance testing to verify user permissions in the next step.

Once the complete system is up and running, monitor logs regularly for any errors. Understand and document the effects of enabling non-ThingWorx software like restart times, downtimes, and workarounds.

Should any issues arise, alert the project team or reach out to PTC Technical Support.

Non-ThingWorx software could include:

  • Windchill, ThingWorx Navigate, and Creo
  • Network layers
  • Firewalls & proxies
  • External database
  • ThingWorx connected to external Apps via connectors
  • External frameworks (Java-based or testing)
  • Load balancers
  • Source control systems like SVN or Git
  • Any third-party applications

Recommended Resources

Gain Acceptance from Stakeholders

Have the application in a test/QA environment tested through a selected group of potential users (site managers, frontline workers, or other available participants) to ensure that the upgrade meets their needs and has not negatively impacted their experience. Share test results for all sites with your key stakeholders. Allow them to conduct a UAT of the upgrade. Ensure your app is ready for user acceptance testing (UAT) to pass your integrations and system tests.

Have key stakeholders review:

  • Can the user navigate and use the application as they expected?
  • Did the app function correctly during the test?
  • Did users see the correct data?
  • Is the new functionality confusing?
  • Is there any data or functionality missing?
  • Were there any unexpected changes to the application?

To get the most accurate test results, complete UAT in a QA environment that matches your production environment as much as possible.

Recommended Resources

Finalize Go-Live Schedule

Before going live with the upgrade, determine which instances or site receives the upgrade first based on testing results. Your previously determined schedule may have changed based on the needs.

Send a reminder once again to ensure availability of resources as planned. Re-confirm that resources have the right permissions for assigned tasks.

After you have performed all the necessary testing in the test/QA environment with satisfactory results, backups ready, and gained acceptance from key stakeholders, finalize the Go-Live schedule and share the plan widely.

You may get insights during testing and choose to act on them later. If the application does not meet all user needs, decide whether to pause production or launch it.

Did you find this helpful?



Find step-by-step instructions and information about using the ThingWorx Platform and ThingWorx applications in the Help Centers.

PTC Community

Visit the PTC IoT Community to get product assistance, share ideas, and browse information about using ThingWorx.

Technical Support

Log a case with eSupport using your Service Contract Number. Don't have it? Ask the Community.

Contact Us

Have a question? Submit your contact information and we’ll reach out within 1 business day. You’re never obligated to purchase or commit.