Service organizations typically receive recurring revenue, less fixed capital, and higher margins than strictly product-centric businesses. Aftermarket services now account for almost 24% of manufacturers’ total revenue and 40% to 80% of their total profits (Pollack, B., PTC Video: Transforming Your Service Organization with SLM (part 3 of 3)). When executed properly, after-sales service and support can provide increased revenue and invaluable customer satisfaction and loyalty.

Customer relationships are both a huge benefit and a huge risk.  Companies without a comprehensive plan to ensure high customer satisfaction often jeopardize customer relationships and risk affecting their company brand. Businesses often suffer when they overlook their role in service performance. Why focus solely on putting your product into the hands of customers? Why not also focus on service, and manage the performance of your products to ensure high customer satisfaction?

Customer Satisfaction Matters

Consumers who are willing to pay a premium for a product are looking for a company that provides the best value. If your company cannot deliver the value that your customer is willing to pay for, then you are going to disappoint that customer.

To build and maintain high customer satisfaction, companies need to look beyond traditional approaches.  It is no longer sufficient to provide good customer service by staffing a call center for customer support.  Customers need more than a call center or email.  They need their product to provide that expected value and perform well.  Businesses need to figure out how to deliver that value, maintain high product performance, and keep a happy customer.

Service as the Main Course

Viewing service as an extension of the product can help companies deliver added value and improve customer satisfaction. So what, then, is the hesitation that executives face when delivering service as a strategy in their organization?

Making strategic decisions can be challenging when confronted with numerous variables. Employing an effective service strategy can be especially challenging when organizations are divided into separate silos, with each department concerned only with its own objectives but missing the main objective: the customer.

To execute a service strategy well, companies must look to transform their current approach to service. They must optimize service performance and service functions across all departments and ensure everyone is working collaboratively to deliver a unified service experience that joins parts, product and service information, remote service, and predictive analytics that maximizes the product value to each customer.

Service Lifecycle Management (SLM) is the solution to a service transformation within an organization. SLM provides a platform to deliver on-demand parts, accurate and relevant product and service information, global remote service, and predictive analytics for maximum product performance.

The Right-Sized Service Lifecycle Management Solutions

Service excellence prepares your organization for years of satisfied customers and service related revenue streams. Don’t miss out on revenue opportunities and the chance to provide your company with a competitive advantage. Apply service as a strategy within your organization.

We have an entire team that is dedicated to helping you manage service life cycle.

A customer purchased your product. Is that the end of your relationship or the beginning?

To stay competitive and keep customers satisfied, companies are finding they need to provide more value. Instead of treating a product sale as end point with a customer, successful companies are thinking about how to provide value to customers as their product is used, for as long as it is used, to maximize the value and relationship with the customer.

Service Lifecycle Management (SLM) is a way of managing the lifecycle of a product, as it is used by the customer, to maximize the value of that product. SLM gives companies a competitive advantage by perpetuating the relationship with a customer and creating value over the lifetime of the customer’s products.

SLM gives companies new ways to add value for products, such as:

  • optimizing performance with smart connected products
  • minimizing downtime with predictive analytics
  • provide access to accurate and relevant documentation, illustrations, and part lists
  • improving service response time and first-time fix rates
  • optimizing service parts availability and pricing
  • paying for product performance with product-as-a-service (PaaS) models

What is a Service Life Cycle Management (SLM) solution?

An SLM solution helps organizations deliver new value to customers by leveraging embedded software and connected systems to manage the events and performance of product being used by a customer.

Typically SLM solutions add value by reusing existing engineering and CAD data, automating accurate service and parts documentation and illustration, connecting to smart products in the field, predicting product service events and failures, and optimizing service and parts operations.

With the additional opportunity created through an SLM solution, companies gain greater insight into how products perform with customers, when products need service, and how to best service products.

How to profit from Service Life Cycle Management software

Engaging with customers beyond the point of sale opens up new opportunities for companies to provide value, and this value can be monetized into new revenue streams. Moreover, existing parts and services operations can be shifted from a cost center to a profit center by leveraging SLM and maximizing efficiency.

Smart connected products give companies new ways to provide valuable features to customers, who may opt to pay more for these benefits over non-connected products. High brand affinity is often attributed to products with accurate and relevant product and service information, which can be created efficiently and automatically. Companies can reduce service and parts costs through service optimization, and capture new revenue opportunities created by product value though PaaS offerings.

Should service companies be using PLM and SLM together?

Product Lifecycle Management (PLM) is typically used to manage all stages of product development with a specific focus on engineering and product revision. PLM often helps manage a cycle of continuous improvement, whereby products are created and sold, then improved to be created and sold again. Service Lifecycle Management extends this cycle, by information about the product journey after its sale and during which a product is used by a customer.

Before SLM software existed, companies had to focus on operational efficiencies and service management as separate entities from the rest of their business. Companies can finally approach service operations as a means of collaboration between product development from PLM and product performance from SLM. Implementing PLM and SLM solutions together gives companies the power to have a complete process in how a product is made and how it is used by a customer.

Which SLM software solutions does EAC provide?

EAC Product Development Solutions has many Service Lifecycle Management solutions depending on your company’s needs. We would be happy to help you find the right-sized solution for your team. Reach out to our Director of Information Services, Mike Simon, or browse our website for more information.

Creo Illustrate

Creo Illustrate simplifies your 2D and 3D illustrations by creating them from CAD data, and it provides a wealth of features including: art styling, BOM management, illustrated parts lists, callouts, service procedures, and 3D animations.

Arbortext Editor / Styler

Arbortext Editor / Styler helps your authors create structured content and technical publications used for service procedures, illustrated parts lists, operator and service manuals, work instructions, help and training, and other technical publications based on XML standards such as DITA, S1000D, and DocBook.

Windchill Service Information Manager

Windchill Service Information Manager allows you to organize and manage service content, reuse common content, managing content translation to multiple languages, and create automated technical publications.

Windchill Service Parts

Windchill Service Parts allows you to build service bills of material and spare parts for every product configuration and enables the automated delivery of illustrated parts lists throughout the product lifecycle.

Arbortext Publishing Engine

Arbortext Publishing Engine powerfully and intelligently publishes accurate and relevant product and service information to a variety of formats including PDF, HTML, and EPUB, and can be scripted and extended to publish to other formats and systems.

Arbortext Content Delivery (formerly Windchill InService)

Arbortext Content Delivery (formerly Windchill InService) provides service teams, dealers, distributors, and customers a parts and service portal with accurate and timely product and service information in both online and offline formats. Users have access to product information and parts illustrations to help them with service procedures and order parts.

Vuforia Studio

Vuforia Studio allows you to easily create engaging AR experiences by leverage existing 3D content and connected product performance analytics, and deploy those experiences to those engaged with your connected product.

ThingWorx

ThingWorx is an industrial internet of things (IIoT) platform that allows you to build smart connected products and interact with those products with smart connected operations. Connected service with ThingWorx allows you to connect and observe product performance, enable predictive analytics, and assess service needs for optimizing product performance and first-time fix rates.

Augmented Reality (AR) uses devices such as smart glasses and phone applications to overlay digital information on the real world. The resulting experiences provide a convergence of digital and physical worlds. Isn’t this what we’ve all been waiting for? For technology to catch up with us? How did we end up here? Where did it all begin?

If you think back to your earliest introduction to Augmented Reality, what do you think of? I tend to think back to Star Trek’s holodecks – augmented facilities that characters used for recreation and for work. But the idea of bringing together virtual and physical worlds has been around for longer than you think.

The first traces of an Augmented Reality device originated in the late 1960’s by computer scientist, Ivan Sutherland, at Harvard University when he was working on what he called “the ultimate display.” The device, called the Sword of Damocles, displayed a geometric grid of graphics over the user’s view of the room. The component parts to the device were so large and heavy that it had to be mounted from the ceiling and suspended with a mechanical arm that supported the head mounted display (HMD). It wouldn’t be until many years later that AR would be introduced to mainstream media as a device that could be used in the manufacturing world.

Not unlike Steve Jobs’ idea that the individual consumer may want his or her own personal computer – working designers and engineers are implementing the individual use of AR to improve workforce efficiencies. Why might manufacturers want Augmented Reality in their hands and in the workplace? What are the benefits?

Augmented Reality helps you work a lot faster.

For Designers and Engineers, a lot of time spent on the manufacturing floor is working with the design in one work space and moving to another space to test the product. With the aid of hands-free AR devices, you’ll be spending a lot less time writing down changes. You’ll be able to make a virtual change to a design with the swipe of a finger or by the nod of your head. You will no longer have messy notepads filled with your ingenious ideas with room for error, missing notepads, or frustration with file-keeping. Your AR glasses will be able to keep up with your fast-paced mind and you’ll be redirecting your energy towards developing new products and improving existing ones.

You can use AR to provide hands-on learning for employees.

Have you ever sat in class writing or typing down all the notes you could possibly think of to ensure that you would apply those rules later while you’re in the field? I know I have. How many times have you actually looked back at those notes? Augmented Reality in the workplace gives employees an opportunity to thrive in their learning environments. Hands-on learning can result in up to a 75% retention rate. AR devices produce real-time images of physical objects with virtual work instructions that guide you while you’re on the manufacturing floor. So yes, traditional training will still be relevant – but you’ll be able to supplement your learning with hands-on experience too.

Vuforia Studio allows you to access data easily.

Vuforia Studio, a PTC Service Lifecycle Management (SLM) tool, is used to improve service, operation, engineering, and manufacturing with AR capabilities. This app is a powerful solution for creating, deploying, and consuming AR experiences within your enterprise. Vuforia Studio has an easy-to-use ‘drag and drop’ interface so that users can quickly create and share scalable AR experiences.

Augmented Reality helps to refine and optimize design in early stages of product development. Smartphones, tablets, and smart glasses can retrieve product data such as sensor readings, locations, temperatures, sales history, warranty history, and other service information. Concepts, modifications, and new ideas can be reviewed and changed quickly. 3D parts observed using a wearable augmented reality device will give designers and engineers a better visualization of a finished product. What’s the result? Rapid repetitious design cycles and the optimization of product design and development.

Solve business problems and provide competitive differentiation with Vuforia Studio – download the product brief.

If you’re interested in talking to us today about Vuforia Studio, then email us at communications@eacpds.com or call us at 1-888-225-7579.

Here’s why engineering processes affect services and why streamlining information could solve the whole problem. 

The Problem: Lack of Communication

Let’s be honest, engineering and manufacturing departments do not always communicate product changes to service. This is just the start of how your engineering processes affect services. 

The Result: High Costs

When technicians reference outdated product information and arrive with incorrect parts, this leads to longer service visits, extraneous costs, longer downtime, and lowered customer satisfaction.

The Solution: Streamlining Information

Streamline the way you service teams access and use product information. The best way to accomplish this involves accurately transforming eBOMs (engineering bill of materials) to sBOMs (service bill of materials) and maintaining the fidelity of that information after engineering changes.

It’s time to stop letting your engineering processes affect services.

Take full advantage of the product data your organization has already created.

Structure service manuals and part information based on how a specific product is configured and serviced. Reuse engineering and manufacturing data in the service environment. Provide configuration-specific information to service technicians. Create a single point of access for your service content. Avoid text – use and repurpose graphics, animations, and CAD information when possible. And link service information to engineering information so changes propagate.

Next: Identify Your Service Needs 

Identify what should go in your sBOM to ensure your sBOMs meet the needs of the service department. Examples might include what is serviceable versus what is replaceable, the status of a part, the components, models, grouped items, and more.

The Goal: Transforming Your Services

Remember: the ultimate goal is to make your customers happy. As a result of combining best practices with the right technology to support service and parts information management and publication you will see a higher customer satisfaction, improved technician effectiveness, improved brand reputation, higher profitability (due to lower revenue and service cost), time savings, and higher revenue (from repeat business and customer loyalty).

We have a team of technical communications specialists that would love to talk with you about your current state and current initiatives.

One of the great aspects of ThingWorx is the ability to connect disparate data silos to a central IoT hub. Many of these silos are made accessible through Web APIs. RESTful Web APIs enable developers to pull data from an inexhaustible number of sources around the web; often using nothing but a HTTP URI. Salesforce has an extensive REST API that can be accessed through ThingWorx. This blog will introduce you to creating a “Connected App” on Salesforce, authentication using username and password in ThingWorx, adding records to Salesforce, and finally modifying records. For a detailed description of Salesforce’s REST API, visit https://developer.salesforce.com/page/REST_API

Step 1 (Optional): Obtain a Developer Environment with Salesforce.com

If you do not already have a Salesforce account, navigate to https://developer.salesforce.com/platform/force.com and sign up for a free developer environment. It only takes a few minutes and you get a fully functioning Salesforce instance that you can freely develop in.

Step 2: Obtain a Security Token

You’ll need a security token to authenticate with a username and password. If you don’t already have one, or can’t dig it up from previous emails, you’ll need to reset the token.

Resetting the Token

1.    In the upper right-hand corner of your Salesforce page, click on your name and select “My Settings”

2.    On the left-hand menu, select “Personal”

3.    Under “Personal,” select “Reset My Security Token”

4.    Follow the directions on the page and you will receive a new security token via email

Step 3: Create a Connected App

To use the REST API, we’ll need to create a connected app that gives us a “Consumer Key” and a “Consumer Secret”.

Creating the Connected App

1.    Click on “Settings” in the upper right of your Salesforce screen

2.    On the left side, navigate to “Build” > “Create” > “Apps”

3.    Under the “Connected Apps” section, select “New”

4.    Fill out the fields as shown below. A callback URL is required but we won’t really be referencing it anywhere in ThingWorx. There is a great article on using Postman to test out REST calls with Salesforce at https://blog.mkorman.uk/using-postman-to-explore-salesforce-restful-web-services/ . The callback URL is used in the examples when authenticating in Postman.

5.    Click “Save.” You will get an alert that your connected app will take 2-10 minutes to take effect.

6.    After you click “Save,” you’ll see the “Consumer Key” and “Consumer Secret.” Copy those somewhere to use in ThingWorx.

Step 4: Authenticate Salesforce Session in ThingWorx

In this step, we’ll create a service in ThingWorx that returns a JSON for us to use in our other Salesforce requests.

1.    Create a service inside your Thing called AuthenticateSalesForce. I have a “TestThing” that I’ve created where I can try out new services without disrupting any of my live projects.

2.    Choose the “STRING” type for the result output, no inputs are needed unless you want to have the end user input their username and password. After we test functionality, we’ll change the output type to “JSON”

3.    Enter the following code, which is just the POST JSON function in the ContentLoaderFunction resource.

var params = {

                 proxyScheme: undefined /* STRING */,
                 headers: undefined /* JSON */,
                 ignoreSSLErrors: undefined /* BOOLEAN */,
                 useNTLM: undefined /* BOOLEAN *
                 workstation: undefined /* STRING */,
                 useProxy: undefined /* BOOLEAN */,
                 withCookies: undefined /* BOOLEAN */,
                 proxyHost: undefined /* STRING */,

url: "https://login.salesforce.com/services/oauth2/token?grant_type=password&client_id=&client_secret=&username= &password=" /* STRING */,

                 content: undefined /* JSON */,
                 timeout: undefined /* NUMBER */,
                 proxyPort: undefined /* INTEGER */,
                 password: undefined /* STRING */,
                 domain: undefined /* STRING */,
                 username: undefined /* STRING */

};

// result: JSON
var j = Resources["ContentLoaderFunctions"].PostJSON(params);

var result = j.access_token;

4.    Enter the consumer key, consumer secret, username (use %40 for the ‘@’ symbol), and password plus security token (enter your password and security token with no spaces between the two)

5.    Select “Done” on your service, save your Thing, and test the service. You should receive a session token like the one seen below:

6.    If nothing shows up, either the Salesforce server hasn’t activated the app, or there may be an issue with the URL. If you copy and paste the URL into PostMan, you should get an error message that clarifies the issue.

7.    When you’re getting an access token as the result, edit your service, change the result type to “JSON,” delete the last line (the “var result = j.access_token” line”), and modify the end of the service to now read:

// result: JSON

var result = Resources[“ContentLoaderFunctions”].PostJSON(params);

Step 5: Create a record in Salesforce

In this step, we’ll create a new account within salesforce using our new authentication service and a REST call utilizing the ContentLoaderFunctions.

1.    Create another new service in your Thing and call it AddSalesForceAccount. 2.    Create an input and call it AccountName. The type is “STRING” 3.    Type in the following code:

var authJSON = me.AuthenticateSalesForce();

var token = authJSON.access_token;
var instance_url = authJSON.instance_url;

var url = instance_url + "/services/data/v20.0/sobjects/Account/";

var authString = "Bearer " + token;
var headers = {
   "authorization" : authString,
   "content-type" : "application/json"
};

var content = {
 "Name" : AccountName
};

var params = {
                 proxyScheme: undefined /* STRING */,
                 headers: headers /* JSON */,
                 ignoreSSLErrors: undefined /* BOOLEAN */,
                 useNTLM: undefined /* BOOLEAN */,
                 workstation: undefined /* STRING */,
                 useProxy: undefined /* BOOLEAN */,
                 withCookies: undefined /* BOOLEAN */,
                 proxyHost: undefined /* STRING */,
   url: url /* STRING */,
                 content: content /* JSON */,
                 timeout: undefined /* NUMBER */,
                 proxyPort: undefined /* INTEGER */,
                 password: undefined /* STRING */,
                 domain: undefined /* STRING */,
                 username: undefined /* STRING */
};

// result: JSON
var result = Resources["ContentLoaderFunctions"].PostJSON(params);

4. Test the service. Enter a unique account name and verify that it shows up in Salesforce.

Step 6: Retrieve a Record ID

To modify a record, the record ID must be used to reference the object of interest. We can make a request to Salesforce to return relevant records using an SOQL query. This example will cover retrieving the record ID of the account we just created in the last step.

1.    Create a new service in your Thing

2.    Create an input and call it AccountName. The type is “STRING”

3.    Type in the following code:

var authJSON = me.AuthenticateSalesForce();


var token = authJSON.access_token;
var instance_url = authJSON.instance_url;

var url = instance_url + "/services/data/v20.0/query/?q=SELECT+name+FROM+Account+WHERE+name+=+'" + AccountName + "'";

var authString = "Bearer " + token;
var headers = {
   "authorization" : authString,
   "content-type" : "application/json"
};




var params = {
                  proxyScheme: undefined /* STRING */,
                  headers: headers /* JSON */,
                  ignoreSSLErrors: undefined /* BOOLEAN */,
                  useNTLM: undefined /* BOOLEAN */,
                  workstation: undefined /* STRING */,
                  useProxy: undefined /* BOOLEAN */,
                  withCookies: undefined /* BOOLEAN */,
                  proxyHost: undefined /* STRING */,
                  url: url /* STRING */,
                  timeout: undefined /* NUMBER */,
                  proxyPort: undefined /* INTEGER */,
                  password: undefined /* STRING */,
                  domain: undefined /* STRING */,
                  username: undefined /* STRING */

};




// result: JSON
var j = Resources["ContentLoaderFunctions"].GetJSON(params);

var result = j.records[0].attributes.url;

4. Give the service a name and test it. The output of this service is a url that can be appended to the instance_url that is returned in the response from the Authentication service.

Step 7: Modify a Record

Using the output from our last service, we can now easily modify the fields of the record ID that we just retrieved. Keep in mind, if you create a custom field and you want to modify its value, add a “__c” to the end of the field name (denotes custom field).

  1. Create a new service in your Thing
  2. Let’s give it a few “STRING” inputs: field, stringValue, and AccountName
  3. Input the following code:
var authJSON = me.AuthenticateSalesForce();

var token = authJSON.access_token;
var instance_url = authJSON.instance_url;

var stringJSON = '{"' + field + '":' + stringValue + "}";


var params = {
                  AccountName: AccountName /* STRING */
};

// result: STRING
var object_url = me.RetrieveSalesForceAccountRecordID(params);

var url = instance_url + object_url + "?_HttpMethod=PATCH";
var authString = "Bearer " + token;
var headers = {
   "authorization" : authString,
   "content-type" : "application/json"
};

var content = JSON.parse(stringJSON);

var params = {
                  proxyScheme: undefined /* STRING */,
                  headers: headers /* JSON */,
                  ignoreSSLErrors: undefined /* BOOLEAN */,
                  useNTLM: undefined /* BOOLEAN */,
                  workstation: undefined /* STRING */
                  useProxy: undefined /* BOOLEAN */,
                  withCookies: undefined /* BOOLEAN */,
                  proxyHost: undefined /* STRING */,
                  url: url /* STRING */,
                  content: content /* JSON */,
                  timeout: undefined /* NUMBER */,
                  proxyPort: undefined /* INTEGER */,
                  password: undefined /* STRING */,
                  domain: undefined /* STRING */,
                  username: undefined /* STRING */
};
// result: JSON
var result = Resources["ContentLoaderFunctions"].PostJSON(params);

 

A Note About Security

Salesforce has a few ways to authenticate your session.  The method described in this blog is the least secure way because ThingWorx has visibility to the username and password of the Salesforce account.  There are two other ways to authenticate and both use callback URLs.  Basically, a user sends a call to the login endpoint and enters user and password information directly into the Salesforce environment.  Salesforce then redirects to a callback URL that is appended with an authorization token.  If you’d like to implement one of the more secure methods, I would suggest using a REST endpoint to a ThingWorx service as your callback URL. More specifically, create a service that has a string input called “code.” Now, change your callback URL in your Salesforce connected app to something like https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id=&redirect_uri=>.  Now, when you navigate to the login link, it will send your authorization code to your ThingWorx service (this is because it appends “&code=” to the URL).  You’ll need to then send that code via the Content Loader Functions to receive your authorization token.  One thing to note is that the ThingWorx instance must be on HTTPS.  Salesforce does not allow HTTP callback URLs.  More information about Authentication can be found at https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_understanding_authentication.htm

If you have any questions about this blog or ThingWorx in general, don’t hesitate to leave a comment or contact EAC Product Development Solutions.

One challenge when working with technical information is that publications can be very large. Several hundred pages is not unusual and in some cases over a thousand pages are necessary to describe complex service procedures and part catalogs.
Authoring and assembling large books can be a painful process as the sheer size can be taxing to software. XML, DITA, and managing content objects do ease the pain, it is what industrial strength publishing software is designed to do. However, there is only so much information the average workstation can process.

Many creative solutions have been implemented to meet unique business requirements for book assembly. The business requirements and data sources vary from company to company, such as selecting lessons individually to create a complete custom course; or selecting individual part list and image pairs to create a complete part catalog. As an application expert, I have personally coded many custom solutions to support cobbling books together over the years and I know that many other equally creative solutions exist.

Word Cloud

PTC’s Service Information Manager adds three advanced capabilities to the XML authoring and content management system:

  1. Translation Management
  2. Part List Generation
  3. Publication Structures

Publication Structures are the least sexy of the three and the one that truly revolutionizes the book assembly process. Publication Structures are used to assemble information objects that are to be published. Essentially each Publication Structure represents a book. You can add a table of contents, a parts list, or any other XML content object or images to the book right in the Windchill SIM web browser user interface.

Without Publication Structures, books are typically assembled manually in Arbortext Editor. Someone would still have to assemble the book manually in a Publication Structure, but the user experience is very different. To get a sense of this, in Arbortext Editor, if a writer wants to move a chapter to a different location, they would edit the document, select content, cut it, move to the new location, and then paste. In a Publication Structure, the user can drag and drop chapter or section objects in the structure without ever opening the book to edit it.

Publication Structures provide an out-of-the-box method of assembling publications for the technical documentation community without customizing. As a result, organizations are able to greatly improve the process of information delivery and are able to leverage dynamic publishing capabilities to bring products to market faster, and keep customers better informed.

Learn More

EAC information solution experts have decades of reliable XML solution experience. Explore the EAC website to learn more about our products and services or review the Product Development Information Services Brochure.

Download our PDIS Brochure