Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper...

30
Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 1 Create a Swift App with IBM Cloud Hyper Protect Services Chris Poole, IBM Cloud Hyper Protect Containers, [email protected] Matthew Perrins, IBM Cloud Developer Services, [email protected] Elton De Souza, IBM Systems z Innovation Lab, [email protected]

Transcript of Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper...

Page 1: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 1

Create a Swift App with IBM Cloud Hyper Protect Services Chris Poole, IBM Cloud Hyper Protect Containers, [email protected] Matthew Perrins, IBM Cloud Developer Services, [email protected] Elton De Souza, IBM Systems z Innovation Lab, [email protected]

Page 2: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 2

Creating a Swift app with IBM Cloud Hyper Protect Services in minutes CREATING A SWIFT APP WITH IBM CLOUD HYPER PROTECT SERVICES IN MINUTES 2

1. INTRODUCTION 3

2. SETUP 4

3. CREATE AN IOS SWIFT APP WITH IBM CLOUD HYPER PROTECT SERVICES 9

4. MODIFY THE WATSON CONVERSATION SERVICE DIALOG ERROR! BOOKMARK NOT DEFINED.

5. CONCLUSION 29Contacts 29

ACKNOWLEDGEMENTS AND DISCLAIMERS 30

Page 3: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 3

1. Introduction This lab walks you through the steps required to create, build, and run a Swift app using the IBM Cloud Hyper Protect Services in minutes. You will build and run the Hyper Protect Developer Starter Kits locally with Xcode and interact with IBM Cloud Hyper Protect services within the web browser. This process enables developers to become productive with IBM Cloud and the Hyper Protect Services rapidly, regardless prior skills and expertise. The lab is divided into the following main parts:

1. Setup an account with IBM Cloud. 2. Leverage IBM Cloud Hyper Protect Developer Starter Kits to create projects and

provision instances of IBM Cloud Hyper Protect Services. 3. Generate app source code, configure your project, and run it locally. 4. Deploy to IBM Cloud and leverage Toolchain to develop and deploy iteratively.

Page 4: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 4

2. Setup You must setup the prerequisite tools for Swift app development on your Mac.

• iOS 9.0 or later (https://support.apple.com/downloads/ios)

• XCode IDE (https://developer.apple.com/xcode/)

• Swift 4.0 or later (https://swift.org/download/#releases)

• Node.js (https://nodejs.org/en/download/)

• Docker engine (https://www.docker.com/docker-mac)

• CocoaPods for IBM Cloud SDKs (https://cocoapods.org/)

• IBM Cloud Developer Tools. Open a terminal and run the following command to install the IBM Cloud Developer Tools in a single invocation.

$ curl -sL https://ibm.biz/idt-installer | bash

Page 5: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 5

To run these lab instructions, you need to create a trial account on the IBM Cloud. You can do this free of charge and all the instructions contained in this lab do not incur any additional costs.

1. Create an IBM Cloud Trial Account by visiting https://ibm.com/cloud and click Sign up.

2. Complete the Registration Form with you details and email address.

3. Click Create Account.

4. Confirm your registration by accessing your email and clicking Confirm Account.

Page 6: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 6

5. You can now log into IBM Cloud.

6. Click Login and enter your email and password.

7. You will be asked to create an organization in the US South region.

Page 7: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 7

8. Enter a name or use HyperProtect, and click Create.

9. Create your space, which is a zone to develop within, with the name dev.

10. Click I’m Ready.

11. You will see the Dashboard View, and it will be empty because you have not created any services or apps at this point.

12. From a terminal window, update the IBM Cloud Developer Tools by entering the following command: curl -sL https://ibm.biz/idt-installer | bash

Page 8: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 8

13. Verify the installed plugins with the bx plugin list command.

14. Execute the following command to login via the Bluemix CLI:

bx login -u <Your Bluemix username> -a <API Endpoint>

Example: bx login -u <your email address> -a https://api.ng.bluemix.net

Page 9: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 9

3. Create an iOS Swift App with IBM Cloud Hyper Protect Services In this section, you will:

Familiarize yourself with the IBM Cloud Developer Console for Apple Create a Swift App using the IBM Cloud Hyper Protect Developer Starter Kits: § MBaaS with IBM Hyper Protect Services § Backend for IBM Hyper Protect Services

Download the code and set it up to run in Xcode Test the App in the Xcode’s iOS Simulator

1. Log into the IBM Cloud Developer Console for Apple

(https://console.bluemix.net/developer/appledevelopment) with your IBM Cloud account. If you already logged into IBM Cloud, you can navigate to the IBM Cloud Developer Console for Apple by clicking Menu->Apple Development.

Page 10: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 10

IBM Cloud Developer Console for Apple is an area for developers that compliments the IBM Cloud App Service. The IBM Cloud Developer Console for Apple is focused on helping Apple developers build apps that integrate with the services in IBM Cloud.

2. Click on Starter Kits in the left navigator.

You can find a collection of production-ready starter kits that enable you to get up and running very quickly. The key benefit is that you can choose and include services in IBM Cloud for your app and generate an iOS Swift App with just the code you need.

Page 11: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 11

IBM Cloud Hyper Protect Developer Starter Kits includes two starter kits to simplify and speed up your Swift App development in a Hyper Protect environment. The MBaaS with IBM Hyper Protect Services starter kit is labeled as Mobile App, which covers both client and the server programming models with iOS Swift. The Backend for IBM Hyper Protect Services starter kit is labeled as Backend for Front End and offers server-side options. Both starter kits leverages the Swift Kitura framework.

3. Search for the Starter Kit that offers MBaaS with IBM Hyper Protect Services.

a. Click MBaaS with IBM Hyper Protect Services in the catalog of Starter Kits. You can see an overview of this starter kit, as well as the services that the starter kit integrates, including Push Notification, Hyper Protect Crypto Services, and Mobile Analytics. When you’re ready, click the Create app button and the Create App view opens.

Page 12: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 12

b. On the right of the Create App view, you can see the IBM Cloud services that will be automatically created for you in your account. It is worth studying the Pricing details to understand the developer friendly Lite plans. For this lab, choose Lite plan for all the services. Verify the region, organization, and space where you want your project to deploy in. When you are ready, click Create.

Page 13: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 13

c. When the creation completes, the project view opens. You can add other services to your app by clicking on the Add Resource link. For this lab, no need to add other services for this project. Click Download Code on the top right to generate the archive of the initial project code. Save the ZIP file (for example, MBaaSwithIBMHyperProtectServicesDRJBC-Swift.zip) to your local machine.

d. Extract the ZIP file, for example, to the MBaaSwithIBMHyperProtectServices-

DRJBC-Swift folder.

e. Open a terminal window and navigate to the extracted folder above. Execute the pod

install command to install and configure IBM Cloud Mobile services Dependency Man-agement.

Page 14: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 14

f. In your Finder, open the extracted folder above and double-click the .xcworkspace file

(for example, MBaaSwithIBMHyperProtectServicesDRJBC.xcworkspace). An Xcode window opens.

g. In the Xcode window, click the Run button from the menu bar. Your project code is

loaded in Xcode and a simulator opens.

Page 15: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 15

h. In the Xcode window, open the project folder on the left panel, for example, MBaaSwithIBMHyperProtectServicesDRJBC. Click to open the ViewControl-ler.swift file in the Xcode window. In the ViewController.swift file, find the viewDid-Load() function.

That’s it! You now have a Swift iOS app, pre-configured with your credentials for backend ser-vices in IBM Cloud. The Starter Kit has done all the hard work for you. Now let’s integrate it with an instance of IBM Cloud Hyper Protect DBaaS.

Integrating with IBM Cloud Hyper Protect DBaaS Backend

4. Go back to the Starter Kits catalog of the IBM Cloud Developer Console for Apple

and search for the Starter Kit that offers Backend for IBM Hyper Protect Services.

a. Click Backend for IBM Hyper Protect Services in the catalog of Starter Kits. You can see an overview of this starter kit. This starter kit doesn’t include any IBM Cloud services currently. When you’re ready, click the Create app button and the Create App view opens.

Page 16: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 16

b. Verify the region, organization, and space where you want your project to deploy in (as before, ensure region is US South). When you are ready, click Create.

c. When the creation completes, the app details view opens.

Page 17: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 17

Click Add Resource to add the HyperSecure DBaaS to the project. i. Choose Data and click Next.

Page 18: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 18

ii. Choose Hyper Protect DBaaS and click Next.

iii. Specify the cluster name, admin name, and password for your database, select the term agreement checkbox, and click Create. Ensure that you have a strong

Page 19: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 19

password that includes numbers, mixed upper and lower case characters and symbols.

Wait for a while when the starter kit provisions a Hyper Protect DBaaS in-stance.

d. Click Download Code on the top right to generate the archive of the initial project code. Save the ZIP file (for example, BackendforIBMHyperProtectServicesPWORC.zip) to your local machine.

Page 20: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 20

e. Extract the ZIP file, for example, to the BackendforIBMHyperPro-

tectServicesPWORC folder.

f. Open a terminal window and navigate to the extracted folder above. Execute the swift

package generate-xcodeproj command to generate an XCode project for the Swift code.

g. Go back to the extracted folder in your Finder, for example, BackendforIBMHy-

perProtectServicesPWORC. Open the README.md file and find the two commands under the Run header.

Page 21: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 21

Execute the two commands in your terminal window.

i. Execute the swift build -Xlinker -lc++ command to build the application. En-ter n if you are reminded to correct build to .build.

ii. Execute the, for example, .build/debug/BackendforIBMHyperPro-tectServicesPWORC file.

Page 22: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 22

Click Allow if you are asked whether your application accepts incoming network connections.

After the execution completes, you can visit localhost:8080/explorer in your web browser to see the APIs.

POST /products to add a few products… perhaps with name “iPhone” and “iPad”. We’ve posted {"name": "iPad"}.A 201 response code will be returned to show it’s worked. This shows that a local Kitura application is running, which you can send data to. That data is then sent encrypted to a backend instance of IBM Cloud Hyper Protect DBaaS that’s been set up for you, where it’s stored encrypted at rest at all times.

Now let’s integrate this with the iOS app we’ve already created, so that the data in the IBM Cloud Hyper Protect DBaaS instance can be returned to the app.

5. Open your Xcode window, and ensure that you open the ViewController.swift file.

6. Open the, for example, BackendforIBMHyperProtectServicesPWORC folder in your Finder. Extract the SDK ZIP file, for example, BackendforIBMHyperPro-tectServicesPWORC_iOS_SDK.zip.

7. Select all the file and folders in the Source folder in the extracted SDK folder.

Page 23: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 23

8. Drag and drop the selected file and folders above to the, for example, MBaaSwith-

IBMHyperProtectServicesDRJBC folder in Xcode window.

Ensure that you select Create groups for added folders in the pop-up option window and click Finish.

In the Assets folder, copy the plist file to sit next to the existing Info.plist. Click the Backend plist file, and change the string value to use http here: for testing purposes and for simplicity in this lab, we’ll connect to the local Kitura server over HTTP.

Page 24: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 24

9. In Info.plist, add the following dictionary and Boolean (use the plus icons that appear):

10. Go back to the Finder, open the Docs folder in the extracted SDK folder (Backend-forIBMHyperProtectServicesPWORC_iOS_SDK) and double-click to open the RE-ADME.html file.

11. In the README.html page, search for the getAll API call. Copy the example in the get-

All API call.

Page 25: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 25

Paste the getAll() example in the viewDidLoad() function of the ViewControl-ler.swift file in the Xcode window. You can find the ViewController.swift in the, for ex-ample, MBaaSwithIBMHyperProtectServicesDRJBC folder in the Xcode window.

12. Click the Run button from the menu bar in the Xcode window.

Xcode’s console output will show

Page 26: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 26

ProductsAPI.getAll() finished with status code: 200

As an extension, let’s change that to output the data returned from the backend data-base in the iOS app itself.

Display Values from DBaaS in the iOS App

13. In ViewController.swift, find a blank line around line 17. We’re going to insert a field here, from the storyboard.

14. Double-click Main.storyboard to open the editor. You’ll see the iOS app that’s displayed in the simulator.

15. Click back to ViewController.swift to have both windows open together 16. Click the “You are ready to get started!” text box in the storyboard, then ctrl

drag this to the space around line 17 in ViewController.swift. A box will appear; give the field a name. This field points to the label in the storyboard being dis-played by the app:

17. Try writing some Swift code, replacing what you previously copy-pasted in, with

the following: ProductsAPI.getAll() { (returnedData, response, error) in guard error == nil else { print(error!) return } if let result = returnedData { var output = ""

Page 27: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 27

for (_, product) in result.enumerated() { output += product.name! + "\n" } DispatchQueue.main.async{ self.Label.text = output } } if let status = response?.statusCode { print("ProductsAPI.getAll() finished with status code: \(status)") } } Press the Run button. You’ll see that this code has simply found the product names from the data returned by the DBaaS call, and changed the display of the iOS app:

Page 28: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 28

Page 29: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 29

4. Conclusion Congratulations! You have completed the lab. You have successfully used the IBM Cloud to create a simple iOS app using the Swift language and the IBM Cloud Hyper Protect Services.

Contacts

Chris Poole ([email protected]) IBM Master Inventor, Hyper Protect Containers Emma Tucker ([email protected]) Offering Management, IBM Cloud Developer Services Matthew Perrins ([email protected]) STSM, Architect IBM Cloud Developer Services Elton De Souza ([email protected]) IBM Systems z Innovation Lab

Page 30: Create a Swift App with IBM Cloud Hyper Protect …...Create a Swift App with IBM Cloud Hyper Protect Services IBM Hyper Protect Developer Starter Kits for iOS 4 2. Setup You must

Create a Swift App with IBM Cloud Hyper Protect Services

IBM Hyper Protect Developer Starter Kits for iOS 30

Acknowledgements and Disclaimers Copyright © 2017 by International Business Machines Corporation (IBM). No part of this document may be repro-duced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights — use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. This document is distributed “as is” without any warranty, either express or implied. In no event shall IBM be liable for any damage arising from the use of this information, including but not limited to, loss of data, business interruption, loss of profit or loss of opportunity. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. IBM products are manufactured from new parts or new and used parts. In some cases, a product may not be new and may have been previously installed. Regardless, our warranty terms apply.” Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice. Performance data contained herein was generally obtained in a controlled, isolated environments. Customer exam-ples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of com-petent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law. Information concerning non-IBM products was obtained from the suppliers of those products, their published an-nouncements or other publicly available sources. IBM has not tested those products in connection with this publica-tion and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM prod-ucts. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to in-teroperate with IBM’s products. IBM expressly disclaims all warranties, expressed or implied, including but not limited to, the implied warranties of merchantability and fitness for a particular, purpose. The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right. IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enter-prise Document Management System™, FASP®, FileNet®, Global Business Services®, Global Technology Services®, IBM ExperienceOne™, IBM SmartCloud®, IBM Social Business®, Information on De-mand, ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplica-tion®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSys-tems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®, SoDA, SPSS, Sterling Commerce®, StoredIQ, Tealeaf®, Tivoli® Trusteer®, Unica®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trade-marks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.