The 'pdlmconn' project aka. 'the converter'


Short: This project is downloading product and service objects from Aras Innovator (a PLM software) and Service Modeller (a SM software), compares them and uploads differences to the Innovator.

Longer: This is a Bachlor thesis (german link) project to integrate a Service Modelling software into a Product Lifecycle Management software to obtain a Product/Service Lifecycle Management software. It does so using 2 example systems, the free Aras Innovator as PLM and the free Service Modeller (german link) as SM. It downloads the objects from both systems into a temporary database, calculates a changeset and applies the changes to the PLM. It utilizeses the SOAP interfaces of both systems. Further details about the concept can be found in the thesis document (german).

It aims at beeing exmplary and reusable. Therefor it is tried to abstract away the actual systems from the operation. Also the Reader and Writer classes for both systems are interchangeable.



Install PHP

  • go to and download the ZIP package (32bit or 64bit doesn't matter), unpack it to C:php
  • add the directory "C:php" to you system PATH variable
  • go to php folder, rename the "php.ini-production" to "php.ini", open it
  • uncomment "extension=php_pdo_sqlite.dll" and make it "extension=ext/php_pdo_sqlite.dll"
  • uncomment "short_open_tag" and set it to "short_open_tag=On"

Install Mercurial and setup the project

  • download and install TortoiseHG from
  • log out, then log back in, to make Mercurial work
  • open cmd.exe and change directory to a folder where you want to install PDLMCONN, like C:\ oder C:\tools. Mind that it will automatically create a new directory within that folder.
  • execute "hg clone"... should take a few moments, up to 5 min
  • execute "cd pdlm-connector"
  • verify with "hg tip" that you got the last changeset - should display the tag "tip" and the last commit number and comment
  • open Windows Explorer (not Internet Explorer) and go to you installation directory, then into "configautoload"
  • rename the "local.php.sample" to "local.php", open it
  • in the folder "module/Pdlmconn/config" copy the file aras.login.ini.sample to aras.login.ini and fill in your credentials
  • change temporary folder from "/tmp/" to any directory that is writable by the current user, e.g. "C:\Users\[USERNAME]\AppData\Local\Temp\", keep the "pdlmconn1.sqlite" at the end
  • make sure, both directory lines "path" and "name" have the exact same path
  • check the installation with "php public/index.php pdlm -demo all" - it should work through demo data and not output any errors
  • if you run into trouble and get a config array returned and an exception thrown, then you php.ini is causing incorrect parsing. Try the php.ini from this repo as a sample instead: php.ini.sample


Basically execute the same steps (install php, mercurial, then setup the project), just with paths that are suitable for your system.

(Aras Innovator)

  • unzip the file "" from the root folder
  • download the Aras Innovator Import/Export Tool
  • open the import tool, login to a workspace and point it to the directory of the unzipped ""
  • import all the ItemTypes, Forms and RelationshipTypes


A full API doc can be accessed in doc/index.html


  • open a terminal and cd into the directory, where you installed it
  • execute "php public/index.php pdlm [-demo] (all|load|diff|apply)"
  • "-demo" loads demonstrational data and doesn't operate on the real systems. It can be used with all other options
  • "load" loads the data from both PLM and SM and writes it into the database
  • "diff" calculates the changeset between PLM and SM
  • "apply" applies this changeset to PLM
  • "all" does a full sync using the sequence load, diff, apply


  • Instead of "all" you can just manually do the steps, first call "... load", then "... diff", then "apply". In each step you will see the individual results.
  • Use "diff" before you apply to see the changes.
  • You just have to set up the path where you want the database to be, you don't have to create it. It's done automatically on the first start.
  • Use the "-demo" flag to see if everything is working fine.
  • When you get 0 results from any system, check the connection.


Copyright 2013 Florian Golemo <fgolemo at gmail dot com>

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.