Active Workspace Customization & Extensions

Practical guide to extend Teamcenter Active Workspace (AWC) using widgets, React components, and embedded third-party tools.

AWC Architecture Recap

Active Workspace is a web client built on a modular JavaScript stack. Customization options include AWC client extensions, server-side services, and embedding third-party components via iFrames or widgets.

When to Customize AWC

AWC Extension Types

1. Client-side (JavaScript/React) Extensions

Create React components that plug into AWC extension points. Keep them stateless where possible and use Teamcenter REST APIs to fetch data.

2. Server-side Extensions

Develop services (SOA/REST) that the AWC client can call for heavy-lift operations or data transformation.

3. Embedded Widgets / iFrames

Use iFrames for third-party dashboards (Power BI) or add lightweight widgets that load from a trusted origin.

Sample: Simple AWC Client Extension (Pseudo-code)

// register a custom panel
awp.registerPanel('my.custom.panel', {
  render: (container, context) => {
    // fetch data from Teamcenter REST
    fetch('/tc/odata/Service/PartService(123)')
      .then(res => res.json())
      .then(data => container.innerHTML = `

${data.name}

`); } });

Best Practices

Testing & Deployment

Bundle client extensions as part of your awc.war or deploy them through the AWC extension mechanism if your Teamcenter version supports remote extension loading. Run cross-browser tests and verify performance under load.

Teamcenter Integration Framework Explained | CAD2PLM

Teamcenter Integration Framework Explained

An authoritative guide to Teamcenter SOA & REST services, middleware patterns, and recommended integration practices.

Integration Patterns

Teamcenter SOA vs REST

Teamcenter provides both SOA services and REST/ODATA endpoints. Use REST for web-native integrations and SOA for deeper platform interactions where available.

Sample REST call (login)

POST /tc/soa/service/com/teamcenter/services/core/SessionService/login
Content-Type: application/json
{
  "user":"myuser","password":"mypassword"
}

Middleware Example (Node.js / Express)

// minimal middleware proxy example
const express = require('express');
const fetch = require('node-fetch');
const app = express();
app.use(express.json());

app.post('/api/part-sync', async (req, res) => {
  // transform and call Teamcenter REST
  const tcResp = await fetch('https://plm.example.com/tc/odata/PartService', { method:'GET' });
  const body = await tcResp.json();
  res.json({ success:true, data: body });
});

Security & Governance

Testing Strategies