Based on: Services Customization Guidelines, 3DEXPERIENCE R2022x (Dassault Systèmes) Target roles: Services Software Consultant / Services Software Architect
1. Platform Introduction
Core services/apps: 3DPassport (identity/auth), 3DSpace (data storage & sharing), 3DDashboard (dashboards/widgets), 3DSearch, 3DComment, 3DNotification, 3DSWYM (social collaboration), Enterprise & Control Centers (admin), DSLS (licensing).
Deployment architecture:
- On-Premises: Presentation (web server/load balancer) → Logic & Access (app servers, e.g. 3DSpace, 3DPassport) → Data (database, index servers, NAS/SAN). Concepts: modularity, fail-over, load balancing.
- On-Cloud: DS Control Center manages SaaS / PaaS / IaaS layers hosted on a DS Cloud Provider's data center.
Baseline vs. Customer-Specific Environment (CSE) — a favorite interview contrast:
| Baseline | CSE | |
|---|---|---|
| Scope | On-Prem + Cloud | On-Prem only |
| Collaborative Spaces | Flat (Public/Protected/Private) | Hierarchical |
| Roles | Horizontal (predefined) | Vertical (tied to Host Company) |
| Upgrade support | Supported by DS R&D | MQL/Spinner customizations NOT guaranteed by DS |
Key rule: once you pick Baseline or CSE, don't switch — objects are incompatible between the two. Default recommendation is to stay Baseline unless CSE is absolutely necessary.
MVC Architecture:
- Model = Java Beans / schema (Attributes, Types, Relationships) in the database
- View = JSP pages (HTML/JS + server code)
- Controller = Servlets (handle HTTP requests, call business logic, dispatch to View)
- Client → Request (HTTP) → Servlet → Java objects (Model) → JSP (View) → Response
Customization tools overview (be ready to name which is "recommended" vs "legacy" vs "not recommended"):
- Recommended by DS: Data Model Customization app, Widgets, Collaborative Spaces Control Center, Business Rule Editor
- Legacy (discouraged): 3DSpace UI Components, custom JSP pages/Legacy customization
- Spinner: automation tool for admin/business objects (Triggers, Auto Number Generators) — not part of OOTB, requires separate license, not recommended by DS for CSE customization due to upgrade risk
Software Development & Customization Lifecycle (5 stages) — know this cold, it's the backbone of the whole course:
- Defining and Designing a Solution
- Building a Development Environment
- Developing a Solution
- Testing and Debugging
- Build and Release
2. Defining and Designing a Solution
Customization must be documented across: Data Model, UI Changes, Business Logic, Interfaces, P&O.
UML diagram types and when to use them:
| Diagram | Purpose |
|---|---|
| Deployment | Runtime components & dependencies |
| Class | Data model / mapping |
| Object | Instanced view of a structure (e.g. BOM) |
| Sequence | Complex data flows (e.g. web service interactions) |
| State | Lifecycles (e.g. Policy lifecycle) |
| Use Case | Requirements (out of scope of this course) |
Best practice: avoid "wallpaper diagrams" — organize into packages (Data Model / Business Logic / Deployment) with sub-packages per App.
Four levels of customization (OOTB Quotation) — classic interview question:
- OOTB — works as-is or via simple config
- Parameterization — config change only, no code (e.g., new field/column)
- Adaptation — some code needed on top of existing functionality
- Development — functionality doesn't exist, built from scratch
Philosophy: always prefer OOTB/Baseline first; customize only as last resort.
Three customization approaches:
- Top-Down (UI-driven): start from UI/forms → interactions → business logic → data model
- Bottom-Up (Data-Model-driven): start from data model → object behavior → UI
- Hybrid: both simultaneously — most thorough but slowest/least agile
3. Building a Development Environment
-
Eclipse IDE: standard for 3DSpace customization (Java EE Developers package). Alternatives: NetBeans, IntelliJ, VS Code.
- Memory config in
eclipse.ini:-vmargs -Xms512m -Xmx2048m - One Eclipse workspace per customer project
- Memory config in
-
Code quality tools: SonarLint (current standard, replaced SonarQube's Eclipse plugin) vs. PMD (legacy, no longer used — SonarLint preferred).
-
Key 3DEXPERIENCE-specific Java code rules (good to recall a few by name):
- Avoid wildcard (
*) in relationship/vault queries — performance hit - Avoid DB calls inside loops
- Use
DomainObjectoverBusinessObjectwhere possible - Avoid hardcoded Person context (privilege escalation risk)
- Avoid
JPO.invoke()inside another JPO (extra RMI calls) - Always wrap JPO code in try-catch; print stack trace, then rethrow
- Use symbolic names, not hardcoded schema element names
- Turn triggers back ON after turning OFF; Push/Pop context used together only
- Avoid wildcard (
-
Project types in Eclipse: Simple Java Project (PoC/testing), Dynamic Web Project (JSPs/web apps), Build-tool projects (Maven/Gradle — dependency management, sharing), Multi-Project Environment (complex, independent sub-projects).
-
Misc dev tools: Mylyn (task/ALM integration with JIRA/Redmine/Mantis), Firefox Web Developer + DevTools, Postman (REST client), CSVed (editing Spinner files), Visual Studio Code.
4. Developing a Solution (largest lesson — expect the most questions here)
Data Model
- Data Model = object types + relationships + attributes.
- IRPC (Instance Reference Port Connection): core model for Native Apps (CATIA etc.). 6 core types:
PLMCoreReference,PLMCoreInstance,PLMCoreRepReference,PLMCoreRepInstance,PLMPort,PLMConnection. 3 relations: Aggregation, Is Instance Of, Points To. (Derived types you'll see in practice: VPMReference, VPMInstance, 3DShape, VPMRepInstance.) - ER (Entity Relationship) Model: core model for Web Apps (3DSpace). Three main objects: Types (entities + attributes), Relationships, Interfaces/Extensions (add attributes under conditions). Policy is mandatory and defines: revision sequence, lifecycle, access control, signatures.
- Tools: Data Model Customization app (Baseline + CSE), Collaborative Spaces Control Center, Spinner.
- Governance: "Set Deprecated" to retire objects without deleting; can't extend an object with an Extension sharing an attribute name with another Extension already applied.
P&O (People & Organization) — now called "Organization Modeling & Secure Data Accesses"
- 5 core concepts: Person, Collaborative Space, Organization, Roles, Security Context.
- Security Context = Organization + Role + Collaborative Space combination; drives initial data ownership on object creation.
- Setup tools: Web Console (Members Control Center — recommended for user creation/role/credential assignment) or Batch Tools (
VPLMPosImport/VPLMPosExport,PassportUserImport). MQL is discouraged for Role/Company/Security Context/User creation. - Gotchas: must restart app server after batch user import (Pub/Sub); must register new users in 3DPassport via
PassportUserImportor they can't log in; runOnPremisesSynchroUser.batafter P&O changes; CSE PnO customizations must be revalidated after every upgrade (not DS-guaranteed).
User Interface Customization
- Widgets = lightweight HTML/JS apps, the modern (Dashboard-paradigm) replacement for legacy Classic Webtop pages. Multiple widgets combine into Dashboard "tabs."
- Compass = entry point exposing 3 kinds of apps; Additional Apps can be added via REST web service automation (Postman workflow: CAS login ticket → CAS auth → CSRF token → create/edit additional app).
- Legacy vs. Widget: prefer Widgets/Native App UI over legacy 3DSpace UI Components/custom JSP.
Business Logic Customization
- JPO (Java Program Object) — main vehicle for custom server-side business logic; triggered via Triggers (ModifyDescription, ModifyAttribute, Promote, Connect, etc.).
- Web Services: REST is the modern standard (stateless, JAX-RS annotations) vs. legacy SOAP/Doc-based (being phased out).
- Security checklist for any Web API: Authentication (CAS/SSO), Access Control (role/right checks), Licensing checks, IP Protection, Encryption, CSRF token protection, Service Key for partner apps.
- WAFData module: direct call (server serves data itself, cross-domain via shared servers) vs. proxified call (through a proxy — used for external/non-DS servers).
- Login Tickets: for batch/unattended authentication scenarios only — not a general security mechanism.
Performance Practices (common interview scenario questions)
- Rule 1: minimize DB calls — use
getInfo()to batch-retrieve attributes instead of per-object calls. - Rule 2: never call DB inside a loop — X loop iterations × Y attributes = X×Y calls if done wrong; batch OIDs first, then one
getInfo()call. - Use
HashSetinstead ofStringList.contains()for membership checks (index vs. linear scan). - Be careful with
whereclauses ingetRelatedObjects()— sometimes filtering the returned MapList in code is faster than the where-clause itself; also mind relationship direction and expand level. - UI tables: gather all OIDs first, then one batched
getInfo()call for columns — not one query per row.
Logging Practices
- Platform's native logging can't be finely configured (mixes trace types into one file).
- SLF4J (Simple Logging Facade for Java) is the flexible alternative — an abstraction layer over Log4j/Logback/JUL. 3DEXPERIENCE's logging infrastructure uses SLF4J + Logback as the default.
- Standard levels include ERROR (something wrong, must investigate) down through less severe levels — use parameterized logs, proper logger declarations, and log exceptions properly (not just swallow them).
5. Testing and Debugging
- Testing types: Black-Box (no internal knowledge), White-Box (internal logic/code), Grey-Box (hybrid).
- Test categories: Functional, Integration (~UI testing), Monkey (random edge cases), Performance/Capacity, Smoke (basic sanity), Unit.
- TDD / Red-Green-Refactor cycle: write failing test → make it pass → refactor.
- JUnit: annotations (
@Test,@Before,@After,@BeforeClass,@AfterClass,@Ignore), assertions (assertEquals,assertTrue,assertNull,assertSame, etc.). Bad practices: tests that don't actually test the feature, multiple assertions per test, machine-dependent tests, tests that swallow exceptions. - CAA testing:
mkodtis DS R&D's official Native App unit-test tool; Catch-2 also usable. - Widget debugging: browser dev tools / JS console,
console.log(). - UI Testing: Manual (Steps Recorder) vs. Automated (Selenium WebDriver). Best practice: layered architecture — Test Cases → Page Class → Abstraction Layer → Selenium; identify elements by ID, not text or fragile XPath.
6. Build and Release
- Software factory components: Version Control, Build & Release Management, Software Configuration Management (SCM), Continuous Integration.
- VCS: Git (distributed, preferred, strong branching) vs. SVN (centralized, legacy alternative).
- Build tools: Maven (+ Nexus as artifact repository) is the recommended combo; alternatives are Ant+Ivy or Gradle.
- SCM: tracks/controls source changes, ensures history, backups, single source of truth.
- 3DSEI (3DS Environment Integration): DS's own tool (via WW E&C team) for schema/code merge across environments, using Spinner as a prerequisite; not part of OOTB, separately licensed, no DS support obligation.
- CI: Jenkins is the de-facto standard (plugins, clean builds from source control, secure with LDAP, regular backups). GitLab CI/CD is the main alternative (built-in CI/CD, no third-party tools needed).
7. Documentation Practices
- User's Guide (functional) vs Developer's Guide (CAA Encyclopedia, covers V5/V6 toolkits) — both at the platform's documentation portal.
- Knowledge Base (support.3ds.com/knowledge-base) — searchable Q&A technical articles.
- Customization docs live under help.3ds.com → Installation and Setup → 3DEXPERIENCE Platform → Configuration and Customization, organized by: P&O/Content, Platform Customization, 3DSpace Data Model, Security Management, Behavior, Store/Vaults, Deploying a Customization, Legacy Tools.
Quick Glossary (rapid recall)
- 3DSpace: logical storage/secured sharing of content
- 3DPassport: SSO identity/auth
- 3DDashboard: unified widget-based view; Widget = smallest app unit; Tab = customizable page of widgets
- 6WTags: user-defined tags attached to content
- BPS: Business Process Services
- P&O: People & Organization (access/security model)
- CSE: Customer-Specific Environment
- JPO: Java Program Object (custom server logic)
- IRPC: Instance Reference Port Connection (Native App data model)
- ER Model: Entity-Relationship (Web App data model)
Likely Interview Angles
- "Walk me through the customization lifecycle." → 5 stages, be ready to give a 1-liner per stage.
- "When would you customize vs. configure vs. build from scratch?" → the 4-level OOTB Quotation framework.
- "Baseline or CSE — how do you decide, and what are the risks?" → roles/hierarchy tradeoff + upgrade risk on CSE.
- "How do you approach performance issues in a JPO/query?" → batch DB calls, avoid loops, HashSet vs StringList, where-clause/expand caution.
- Scenario debugging questions on widgets (console/devtools) or JUnit test design (Red-Green-Refactor, layered architecture).
- Tooling stack fluency: Eclipse, SonarLint, Git/SVN, Maven/Nexus, Jenkins/GitLab CI, Postman for REST testing, SLF4J for logging.
Good luck — if you want, I can turn any of these sections into flashcards or run a mock Q&A round.