02.05.2013 Views

MKS Integrity Server 2009 Administration Guide

MKS Integrity Server 2009 Administration Guide

MKS Integrity Server 2009 Administration Guide

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

®<br />

<strong>Integrity</strong><br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

<strong>2009</strong><br />

<strong>Administration</strong> <strong>Guide</strong>


<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

<strong>Administration</strong> <strong>Guide</strong><br />

Copyright © 2001–<strong>2009</strong> <strong>MKS</strong> Software Inc.; in Canada copyright owned by <strong>MKS</strong> Inc. All rights reserved.<br />

<strong>MKS</strong> makes no warranty of any kind with regard to this material, including, but not limited to the implied warranties of merchant ability,<br />

performance, or fitness for a particular purpose. <strong>MKS</strong> shall not be liable for errors contained herein, or for any direct, indirect, incidental,<br />

or consequential damages resulting from the use of this material.<br />

No part of this publication may be reproduced, transmitted, transcribed, stored in a retrieval system, or translated into any language in<br />

any form by any means, without written permission from <strong>MKS</strong>.<br />

<strong>MKS</strong>, Implementer, <strong>MKS</strong> Toolkit, Sandbox, NuTCRACKER, and <strong>MKS</strong> Federated <strong>Server</strong> are trademarks of <strong>MKS</strong> Inc. All other trademarks<br />

are the property of their respective holders.<br />

Corporate Headquarters Worldwide Offices:<br />

410 Albert Street<br />

Waterloo, ON N2L 3V3<br />

Canada<br />

tel: 519 884 2251<br />

fax: 519 884 8861<br />

sales (toll free): 800 265 2797<br />

www.mks.com<br />

This document is uncontrolled when printed or copied.<br />

1815 South Meyers Rd.<br />

Suite 220<br />

Oakbrook Terrace, IL USA<br />

60181<br />

tel: 630 827 4900<br />

fax: 630 629 9167<br />

sales (toll free): 800 633 1235<br />

12701 Fair Lakes Circle<br />

Suite 350<br />

Fairfax, VA USA<br />

22033<br />

tel: 1 703 803 3343<br />

fax: 1 703 803 3344<br />

sales (toll free): 1 800 637 8034<br />

Martinstraße 42-44<br />

73728 Esslingen<br />

Germany<br />

tel: +49 711 351775 0<br />

fax: +49 711 351775 7555<br />

Third Floor, Duke’s Court<br />

Duke Street, Woking<br />

Surrey<br />

GU21 5BH<br />

United Kingdom<br />

tel: +44 (0)1483 733900<br />

fax: +44 (0)1483 733901<br />

sales: +44 (0)1483 733919<br />

3 Killiney Road<br />

#07-05 Winsland House 1<br />

Singapore 239519<br />

tel: +65-6732-8768<br />

fax: +65-6732-0768<br />

5th Floor, Unosawa Tokyu Building<br />

1-19-15, Ebisu, Shibuya-ku,<br />

Tokyo 150-0013, Japan<br />

tel: +81-3-5422-9503<br />

fax: +81-3-5422-9509


Table of Contents<br />

Chapters 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

About This <strong>Guide</strong>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

Assumptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

Setting Up and Using <strong>MKS</strong> <strong>Integrity</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />

Workflows and Documents Setup. . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

Configuration Management Setup . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

Where to Go Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2 <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client . . . . . . . . . . . . . . . . . . 9<br />

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

Opening Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

Logging Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

Closing Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

Shutting Down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

Application Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

Quick Access Keys (GUI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

Common Dual List Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

Filtering Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

Working With Favorites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

Display Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

<strong>Server</strong> Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

Print Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Alert Messages. . . . . . . . . . . . . . . . . . . . . . 32<br />

Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

<strong>MKS</strong> <strong>Integrity</strong> Client Preferences . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

<strong>Server</strong> Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client Preferences . . . . . . . . . . . 38<br />

Setting <strong>MKS</strong> <strong>Integrity</strong> View Preferences . . . . . . . . . . . . . . . . . . . 41<br />

Authorization <strong>Administration</strong> Preferences . . . . . . . . . . . . . . . . . 41<br />

Deploy Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

<strong>Administration</strong> Command Line Interface . . . . . . . . . . . . . . . . . . . . . . 42<br />

Defining Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />

Rule Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />

Working With Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

Selecting Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

Viewing <strong>Administration</strong> History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

i


Table of Contents<br />

ii<br />

3 ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

Where to Go Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

Understanding ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

Viewing ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

Basic ViewSet Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

Creating ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

Editing ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

Copying ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

Deleting ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

Making ViewSets Available to Users . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

Process Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

Converting Personal ViewSet to Unpublished ViewSet . . . . . . 58<br />

Publishing ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

Testing ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

Mandatory ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

Administering Published ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />

Published ViewSet Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />

Fetching Published ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

Updating Published ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

ViewSet Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

Permission to Publish ViewSets. . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

Published ViewSet Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

ViewSets FAQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

4 Workflow Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

Where to Go Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

Assessing Your Current Product Development Process . . . . . . . . . . 70<br />

Assigning Administrators for <strong>MKS</strong> <strong>Integrity</strong> . . . . . . . . . . . . . . . . . . . 74<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Permissions. . . . . . . . . . . . . . . . . 76<br />

Assigning Administrators Using Command Line Interface . . . 77<br />

States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

Working in States View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

Creating States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

Editing States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

Viewing States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

Deleting States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

Moving States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

State Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />

Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />

Working in Types View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

Creating Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

Configuring Type Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />

Editing Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

Copying Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

Viewing Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93


Table of Contents<br />

Deleting Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

Moving Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

Assigning Type Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

Setting Up Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

Setting the Test Management Role for Types . . . . . . . . . . . . . . 112<br />

Setting Item Editability for Types . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

Setting Type Visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

Setting Type Overrides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Setting Field Visibility for Types . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

Working in Fields View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

Using Display Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126<br />

Creating Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Editing Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

Viewing Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />

Deactivating Picklist Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />

Deleting Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br />

Moving Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143<br />

Managing Field Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . 143<br />

Workflows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

Workflow View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153<br />

Creating Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155<br />

Configuring Self Transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

Viewing Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157<br />

Managing Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br />

Printing Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

Saving Workflow as Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

Testing Workflow With Admin Migration Wizard . . . . . . . . . 161<br />

Considerations When Modifying Visibility, Editability, and Types 178<br />

Deleting Admin Provided Objects and Items . . . . . . . . . . . . . . . . . . 179<br />

Deleting Admin Provided Objects . . . . . . . . . . . . . . . . . . . . . . . 179<br />

Deleting Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

Setting Up E-mail Notification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180<br />

Permissions for E-mail Notification . . . . . . . . . . . . . . . . . . . . . . 181<br />

Troubleshooting E-mail Notification . . . . . . . . . . . . . . . . . . . . . 185<br />

5 Customizing Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 187<br />

Where to Go Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188<br />

Customizing Item Presentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188<br />

Understanding Template Designer. . . . . . . . . . . . . . . . . . . . . . . 189<br />

Creating New Presentation Template. . . . . . . . . . . . . . . . . . . . . 198<br />

Editing Presentation Template . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

Copying Presentation Template . . . . . . . . . . . . . . . . . . . . . . . . . 214<br />

Viewing Presentation Templates. . . . . . . . . . . . . . . . . . . . . . . . . 214<br />

Deleting Presentation Template . . . . . . . . . . . . . . . . . . . . . . . . . 215<br />

iii


Table of Contents<br />

iv<br />

Customizing Rich Content Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216<br />

Customizing Report Presentation Templates . . . . . . . . . . . . . . . . . . 219<br />

Report Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221<br />

Report Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222<br />

Customizing Test Verdicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234<br />

Working in the Test Verdicts View . . . . . . . . . . . . . . . . . . . . . . . 234<br />

Creating a Test Verdict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235<br />

Editing a Test Verdict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

Deactivating Test Verdicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

Configuring Attachment Size Limits . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

Configuring Limits for Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238<br />

System Query Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238<br />

Query Timeouts for Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

Maximum Query Item Count . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

Configuring Context Based Text Searching . . . . . . . . . . . . . . . . . . . . 240<br />

Setting Up Electronic Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241<br />

Customizing Electronic Signature Trigger. . . . . . . . . . . . . . . . . . . . . 241<br />

Admin Provided Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242<br />

Using Type Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

6 Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247<br />

Where to Go Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />

Workflow and Document Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />

Projects View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249<br />

Managing Metadata for Workflow and Document Projects . . 257<br />

Deactivating Workflow and Document Projects. . . . . . . . . . . . 259<br />

Assigning <strong>MKS</strong> <strong>Integrity</strong> Project Administrator. . . . . . . . . . . . 260<br />

Configuration Management Projects . . . . . . . . . . . . . . . . . . . . . . . . . 262<br />

Configuration Management Interfaces. . . . . . . . . . . . . . . . . . . . 263<br />

Organizing Your Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263<br />

Working With Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

Using Configuration Management Project Metrics . . . . . . . . . 280<br />

Working With Subprojects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282<br />

Sharing Archives With Other Projects . . . . . . . . . . . . . . . . . . . . 287<br />

7 Computed Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 291<br />

Where to Go Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

Computed Expression Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

Computed Expression Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293<br />

General Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293<br />

Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293<br />

Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294<br />

Empty Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294<br />

Dates, Times, and Time Zones. . . . . . . . . . . . . . . . . . . . . . . . . . . 295<br />

Timestamp Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295


Table of Contents<br />

Date Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296<br />

User and Group Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296<br />

Data Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296<br />

Function Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296<br />

Creating Computed Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

Calculating Static Computed Fields . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

Using Computed Fields to Chart Historical Trends. . . . . . . . . . . . . 316<br />

Scheduling Computation Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318<br />

Using Computed Fields to Calculate State Metrics . . . . . . . . . . . . . 319<br />

Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321<br />

Performance and Scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321<br />

8 Change Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323<br />

Where to Go From Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324<br />

Viewing Change Package Types . . . . . . . . . . . . . . . . . . . . . . . . . 325<br />

Changing Change Package Type Order . . . . . . . . . . . . . . . . . . . 326<br />

Editing Change Package Types . . . . . . . . . . . . . . . . . . . . . . . . . . 327<br />

Viewing Change Package Types . . . . . . . . . . . . . . . . . . . . . . . . . 330<br />

Creating Change Package Types . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />

Deleting Change Package Types . . . . . . . . . . . . . . . . . . . . . . . . . 332<br />

Modifying Change Package Attributes . . . . . . . . . . . . . . . . . . . 333<br />

Modifying Change Package Entry Attributes . . . . . . . . . . . . . . 336<br />

User Operations for Created Change Package Types . . . . . . . 340<br />

Modifying CP Entries for Created CP Types. . . . . . . . . . . . . . . 342<br />

Configuration Management Change Packages . . . . . . . . . . . . . . . . . 343<br />

Using Change Package Reviews . . . . . . . . . . . . . . . . . . . . . . . . . 344<br />

How Change Package Review Works . . . . . . . . . . . . . . . . . . . . 345<br />

Review Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346<br />

Change Package Review E-mail Notification . . . . . . . . . . . . . . 346<br />

9 Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349<br />

Event Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350<br />

About Trigger Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350<br />

JavaScript Language Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . 351<br />

JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354<br />

Overview of Workflow and Document Triggers . . . . . . . . . . . . . . . 355<br />

Workflow and Document Event Categories . . . . . . . . . . . . . . . 356<br />

Transactionality of Workflow and Document Event Triggers 357<br />

Planning Workflow and Document Triggers . . . . . . . . . . . . . . 358<br />

Script Library for Workflow and Document Triggers . . . . . . . 358<br />

Coding Workflow and Document Triggers . . . . . . . . . . . . . . . . 359<br />

Using Workflow and Document Event Triggers . . . . . . . . . . . 361<br />

Overview of Configuration Management Triggers . . . . . . . . . . . . . 374<br />

v


Table of Contents<br />

vi<br />

Overview of Configuration Management <strong>Server</strong>-Side Triggers. . .<br />

374<br />

Overview of Configuration Management Client-Side Triggers 383<br />

Planning Configuration Management Triggers . . . . . . . . . . . . 389<br />

Script Library for Configuration Management Triggers . . . . . 390<br />

Referencing Configuration Management Beans in Trigger Scripts<br />

390<br />

Coding Configuration Management Triggers. . . . . . . . . . . . . . 391<br />

Debugging Configuration Management Client-Side Environment<br />

Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392<br />

Error Handling Beans and Methods . . . . . . . . . . . . . . . . . . . . . . 392<br />

abortScript() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393<br />

DEBUG Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393<br />

Logging Trigger Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394<br />

Logging Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395<br />

Using the <strong>MKS</strong> API in Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . 396<br />

API Beans and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396<br />

API Trigger Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396<br />

Running Custom Java Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397<br />

Using Java Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398<br />

Tips and Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399<br />

Appendixes A Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401<br />

Gathering Important Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402<br />

Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as Application . . . . . . . . . . . . . . . . . 405<br />

Differencing <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Properties Files . . . . . . . . . . . . . 406<br />

Error Codes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406<br />

<strong>MKS</strong> <strong>Integrity</strong> Client Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logging Levels. . . . . . . . . . . . . . . . . . . . . . . . . 407<br />

Miscellaneous Logging Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . 409<br />

FLEXnet Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413<br />

Dr. Watson Logs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413<br />

Creating Integrations Log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413<br />

Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Diagnostics. . . . . . . . . . . . . . . . . . . . 414<br />

Collecting Properties and Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . 421<br />

runstacktrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422<br />

mksis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423<br />

isutil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424<br />

Starting <strong>Server</strong> in Safe Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426<br />

Troubleshooting Database Repository . . . . . . . . . . . . . . . . . . . . . . . . 427<br />

Troubleshooting Kerberos and Kerberos Single Sign-On . . . . . . . . 428<br />

Troubleshooting Configuration Management Reporting . . . . . . . . 430


Table of Contents<br />

B Glossary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

C Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437<br />

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455<br />

vii


Table of Contents<br />

vii


C HAPTER ONE<br />

Introduction<br />

Understanding This <strong>Guide</strong><br />

1<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> <strong>Administration</strong> <strong>Guide</strong> gives you the information you need<br />

to build a basic understanding of <strong>MKS</strong> <strong>Integrity</strong>, and to configure it for your<br />

organization. It also provides information on post-installation configuration and setup<br />

for workflows and documents; software management; and the associated access control<br />

lists and event triggers.<br />

Information on <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> installation, configuration, and security is not<br />

covered in this guide. For information on those tasks, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

In this guide, the person responsible for setting up <strong>MKS</strong> <strong>Integrity</strong> is referred to as the<br />

administrator. The administrator installs the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> on a network, defines<br />

and customizes the software clients, and then creates the user accounts. Anyone who<br />

uses the <strong>MKS</strong> <strong>Integrity</strong> software to perform specific tasks is referred to as the user.<br />

For <strong>MKS</strong> <strong>Integrity</strong>, the person who sets up and configures <strong>MKS</strong> <strong>Integrity</strong> is referred to as<br />

the super administrator. The super administrator can also delegate certain tasks related to<br />

projects for workflows and documents, and types to a project administrator and type<br />

administrator.<br />

1


Chapter 1: Introduction<br />

About This <strong>Guide</strong><br />

2<br />

For content that is essential and applicable to all guides, <strong>MKS</strong> provides a single location for<br />

you to access the information. See the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Getting Started <strong>Guide</strong> for<br />

information on the following topics:<br />

a complete list of related documentation<br />

descriptions of the typographical conventions used in this guide<br />

getting help from <strong>MKS</strong> Customer Care<br />

consulting <strong>MKS</strong> Professional Services<br />

how to provide feedback on this documentation<br />

detailed descriptions for base concepts used in <strong>MKS</strong> <strong>Integrity</strong><br />

installing and configuring the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

an overview of the interfaces available for the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

Most procedures in this guide are documented using menu-based commands; however,<br />

toolbar buttons, shortcut menus, and shortcut keys exist for most procedures. For more<br />

information, refer to descriptive tooltips and menu items in the interface.<br />

For detailed information on wizards, views, and dialog box options, see the online help.<br />

This guide is designed to provide administrators with all the information needed to<br />

configure and maintain <strong>MKS</strong> <strong>Integrity</strong> at their site. The guide is divided into the following<br />

chapters and appendixes:<br />

Chapter 2: “<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client” on page 9<br />

Describes the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>Administration</strong> interface and provides a general<br />

orientation to using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client for setting up permissions;<br />

workflows and documents; and configuration management policies.<br />

Chapter 3: “ViewSets” on page 49<br />

Provides information on administering ViewSets for users to import from the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Chapter 4: “Workflow Management” on page 69<br />

Describes how to construct an item workflow and its components.<br />

Chapter 5: “Customizing Workflow” on page 187<br />

Advanced information on customizing workflows used in your organization.<br />

Chapter 6: “Projects” on page 247<br />

Describes the types of projects available and how to use them effectively.


Assumptions<br />

Chapter 7: “Computed Expressions” on page 291<br />

Provides information on performing calculations between fields and their uses.<br />

Chapter 8: “Change Packages” on page 323<br />

Assumptions<br />

Describes the types of change packages available, how to customize them, and how to<br />

use them effectively.<br />

Chapter 9: “Event Triggers” on page 349<br />

Describes how to use event triggers with workflows and documents, and configuration<br />

management.<br />

Appendix A: “Troubleshooting” on page 401<br />

Describes available monitoring and diagnostic tools that can be used with assistance<br />

from <strong>MKS</strong> Customer Care.<br />

Appendix B: “Glossary” on page 431<br />

Defines many of the common terms used when talking about workflows and<br />

documents; configuration management; and the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Before using <strong>MKS</strong> <strong>Integrity</strong>, understand that the content in this guide is based on the<br />

following assumptions of your knowledge and experience:<br />

Installing and Configuring the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

You fully understand the hardware platforms and operating systems you are installing<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> on, that is, Windows, Solaris, Linux, IBM AIX, or HP-UX.<br />

Depending on the database you are using, that you have already set up and tested:<br />

MS SQL <strong>Server</strong> database, and you are familiar with MS SQL <strong>Server</strong> <strong>Administration</strong><br />

and MS SQL Enterprise Manager<br />

Oracle database, and you are familiar with Oracle administration and configuration<br />

procedures<br />

DB2 database, and you are familiar with DB2 Universal Database client<br />

administration and configuration procedures<br />

DB2 database for System i, and you are familiar with DB2 Universal Database client<br />

administration and configuration procedures<br />

You understand the native security realm of your system. For a complete list of security<br />

realms and their configuration, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

3


Chapter 1: Introduction<br />

4<br />

If you want to use LDAP, at a minimum you are familiar with Distinguished Names<br />

(DN), LDAP search filters, and LDAP schemas.<br />

You understand the character set encoding requirements of your e-mail system.<br />

Managing Workflows and Documents<br />

You understand HTML and XML, if you are creating custom report presentation<br />

templates for workflows and documents or making changes to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

home page.<br />

TIP For useful information on HTML, browse to www.w3.org/MarkUp.<br />

If you are implementing event triggers, you have experience with JavaScript and<br />

understand logical rules.<br />

You understand Cascading Style Sheets (CSS), if you are creating and editing screen and<br />

print styles for rich content fields and reports.<br />

Setting Up and Using <strong>MKS</strong> <strong>Integrity</strong><br />

The administrator installs and/or configures, workflows and documents; configuration<br />

management; and the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. For <strong>MKS</strong> <strong>Integrity</strong>, the administrator also<br />

installs the database on a network, defines and customizes item types and workflow, and<br />

creates additional user accounts, allowing users to access the program.<br />

For <strong>MKS</strong> <strong>Integrity</strong>, the person who sets up and configures <strong>MKS</strong> <strong>Integrity</strong> is referred to as the<br />

super administrator. The super administrator can also delegate certain tasks related to projects<br />

for workflows and documents, and types to a project administrator and type administrator.<br />

A user is anyone who needs to work with one or both of <strong>MKS</strong> <strong>Integrity</strong> components. Users<br />

are assigned user permissions by the administrator. Users are also assigned to groups that<br />

have specific <strong>MKS</strong> <strong>Integrity</strong> group permissions assigned by the administrator.<br />

Other roles or responsibilities may also apply, depending on how you want to implement<br />

<strong>MKS</strong> <strong>Integrity</strong> and depending on your organization’s development process. The advantage<br />

of <strong>MKS</strong> <strong>Integrity</strong> is its flexibility to fit your organization.


Workflows and Documents Setup<br />

Setting Up and Using <strong>MKS</strong> <strong>Integrity</strong><br />

Additional tasks required of a super administrator for the workflows and documents<br />

component include:<br />

defining and creating item types<br />

customizing fields<br />

assigning users and user groups<br />

determining privileges<br />

defining workflow<br />

setting up any event triggers<br />

The super administrator can also restrict the visibility and editability of workflow and<br />

document objects. Before users start using the system, the administrator must inform them<br />

about the scope of their user privileges.<br />

<strong>MKS</strong> <strong>Integrity</strong> ships with some standard fields and values. Therefore, the super<br />

administrator needs to define other workflow and document objects (building blocks) before<br />

the rest of the application can be configured.<br />

<strong>MKS</strong> <strong>Integrity</strong> uses items to track changes. An unlimited number of items and relationships<br />

may be tracked. For example, <strong>MKS</strong> <strong>Integrity</strong> can be configured so that a problem item is<br />

associated with the item that resolves it for easy tracking and monitoring of both items.<br />

In workflow and document management, a project contains labels that help you sort and<br />

organize items in a hierarchical structure.<br />

Some items types may be configured to allow file attachments and a change package. File<br />

attachments may be sent by a customer to provide additional information. When attached to<br />

an item, file attachments and change packages allow tracking of items in a structured and<br />

organized manner.<br />

For each item type defined, a workflow must be established to effectively track and monitor<br />

the progress of work on an item. For example, if the process consists of design,<br />

implementation, and release stages, an enforced workflow allows you to know the number of<br />

items in each stage.<br />

Starting with an appropriate design for the workflow of items, the administrator configures<br />

<strong>MKS</strong> <strong>Integrity</strong> to reflect that workflow. For information on setting up workflow, “Workflow<br />

Management” on page 69.<br />

Workflow for an item must also take into account the resources responsible for that item at<br />

each stage of the development cycle. <strong>MKS</strong> <strong>Integrity</strong> allows users and user groups to assign<br />

responsibility for an item.<br />

<strong>MKS</strong> <strong>Integrity</strong> can also be configured to notify individuals by e-mail about a variety of<br />

conditions, including having items assigned to them or about an item state change.<br />

5


Chapter 1: Introduction<br />

6<br />

The super administrator can also set up schedule- and rule-based event triggers to automate<br />

certain tasks. For example, when an item is closed, a rule-based event trigger can close all of<br />

the underlying tasks. If an item was in a development state after the required completion<br />

date had passed, a schedule-based event trigger could send an e-mail to the project manager.<br />

For more information on event triggers for workflows and documents, see “Event Triggers”<br />

on page 349.<br />

<strong>MKS</strong> <strong>Integrity</strong> allows you to define projects that help users sort all items in the database.<br />

Projects are folders that help you organize items in a hierarchical structure. To see the items<br />

specific to a project, a user must have privileges to view this project. As an administrator, you<br />

must assign permissions to user groups before they can see the project.<br />

The super administrator adds users, creates user groups and sets their access permissions,<br />

depending on the responsibilities given to the user.<br />

After defining the users and user groups responsible for processing items during the<br />

development cycle, additional fields can be created to support the workflow and to<br />

complement the standard fields. Some standard fields include Summary, State, Assigned<br />

User, Assigned Group, and Project. The customizable fields may be based on data types,<br />

values, visibility, relevance, editability, and description. Both standard and customized fields<br />

can be used to determine the mandatory fields users must fill in before changing the state of<br />

an item.<br />

The super administrator customizes the additional fields and defines mandatory fields while<br />

designing a workflow for an item.<br />

Besides being able to work with items, users can also use query, report, and chart features.<br />

A query is a request to select and list the items that meet specific selection criteria.<br />

Reports are summaries of the data in your project, based on the standard and custom<br />

fields of item types.<br />

Charts present trends over time or distributions of the data. The are also based on the<br />

standard and custom fields of item types. These include line graphs, pie graphs, bar<br />

graphs, XY (scatter) graphs, bubble graphs, and tables.<br />

Table charts show a summary of data with aggregate values. Graphical charts show<br />

users a summary of the data.<br />

You can run queries, reports, and charts on item data to monitor progress and evaluate the<br />

effectiveness of the problem resolution process. You can also create a dashboard that<br />

provides a high-level overview of the progress of a project.<br />

A dashboard is a static, user-definable view comprised of any combination of charts, reports,<br />

images, labels, and links to reports, queries and Web sites.


Configuration Management Setup<br />

Setting Up and Using <strong>MKS</strong> <strong>Integrity</strong><br />

Before using <strong>MKS</strong> <strong>Integrity</strong> to manage the configuration management projects in a<br />

development environment, the administrator is responsible for taking a careful look at how<br />

projects and directories are currently organized on the file system. This allows the<br />

administrator to make decisions about how best to organize projects, use subprojects, or<br />

share members between projects.<br />

One of the most important aspects of administering an <strong>MKS</strong> <strong>Integrity</strong> site is ensuring that<br />

only appropriate users can access certain features. <strong>MKS</strong> <strong>Integrity</strong> provides a number of<br />

different security features to help you keep your system safe and secure, and to complement<br />

security within <strong>MKS</strong> <strong>Integrity</strong>, including:<br />

available security realms<br />

user authentication based on an integration with existing authentication mechanisms<br />

such as UNIX and NT<br />

disabled guest authentication<br />

secure sockets layer (SSL) protocol<br />

access control lists (ACLs)<br />

file level security<br />

For information on setting up a secure system for the preceding listed items, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

The overall security environment for configuration management is divided into three major<br />

components:<br />

a server-based authentication scheme for authenticating users and authorizing access<br />

based on permissions<br />

a data management subsystem realm for maintaining the underlying security database<br />

a distributed management application for providing a variety of administrative user<br />

interfaces to the security database<br />

If you are responsible for installing and setting up the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in your<br />

organization or if you are responsible for managing and maintaining the implementation of<br />

configuration management, you should set yourself up as an administrator. As<br />

administrator, you are responsible for assigning appropriate permissions to users and<br />

groups.<br />

Once the appropriate access permissions are assigned, the administrator organizes the<br />

configuration management environment by creating projects and subprojects. For more<br />

information on setting up projects, see “Configuration Management Projects” on page 262.<br />

<strong>MKS</strong> <strong>Integrity</strong> can also be configured to use server-side event triggers. Event triggers allow<br />

you to customize your configuration management environment further and to control the<br />

7


Chapter 1: Introduction<br />

8<br />

way users may operate in that environment. For more information on event triggers, see<br />

“Event Triggers” on page 349.<br />

Where to Go Next<br />

The following table summarizes the steps you should follow to administer <strong>MKS</strong> <strong>Integrity</strong>:<br />

To Do This … See …<br />

Learn how to use the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client.<br />

Create ViewSets for users to download into their<br />

<strong>MKS</strong> <strong>Integrity</strong> Clients.<br />

Create the building blocks of your workflow such<br />

as fields, states, and a type. Then construct the<br />

workflow with state transitions.<br />

Customize the workflow by creating item<br />

presentation templates, as well as perform<br />

customization on other system provided objects.<br />

Create projects to manage workflow and<br />

document tasks and configuration management<br />

members.<br />

Create change packages for workflows and<br />

documents, and configuration management to<br />

control, record, and apply member operations.<br />

“<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client” on page 9<br />

“ViewSets” on page 49<br />

“Workflow Management” on page 69<br />

“Customizing Workflow” on page 187<br />

“Projects” on page 247<br />

“Change Packages” on page 323


C HAPTER TWO<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>Administration</strong> Interface<br />

2<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client allows you to manage Access Control Lists<br />

(ACLs), manage and distribute ViewSets, set up workflows and documents, configure<br />

configuration management policies, set up Deploy, and send alert messages through a<br />

GUI. The client interface provides a single, centralized access point for the most common<br />

administration tasks.<br />

In this guide, all procedures are documented using menu-based commands; however,<br />

toolbar buttons, shortcut menus, and shortcut keys exist for most procedures. For more<br />

information, refer to descriptive tooltips and menu items in the interface.<br />

This chapter describes the functionality available through the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client and explains how to navigate the interface.<br />

This chapter contains the following topics:<br />

“Introduction” on page 10<br />

“Preferences” on page 34<br />

“<strong>Administration</strong> Command Line Interface” on page 42<br />

“Defining Rules” on page 43<br />

“Viewing <strong>Administration</strong> History” on page 47<br />

9


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

Introduction<br />

10<br />

A graphical user interface, or GUI, is a program interface that uses a number of visual<br />

components (such as icons, pointers, and pull-down menus) to execute commands. Working<br />

in a GUI allows the user to give instructions to the computer without having to learn a<br />

specific command language. The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client interface is a GUI<br />

designed for carrying out most administrative commands from a central location.<br />

In addition, you can connect to multiple <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>s in a single session and<br />

perform maintenance on each server.<br />

Opening Interface<br />

IMPORTANT If multiple administrators are working in the Permissions views,<br />

changes are updated dynamically as the server refreshes the changed view each<br />

time it is newly accessed by another user.<br />

If two administrators are concurrently editing the same entry, the view cannot be<br />

updated and the system processes the changes that are received first.<br />

After installation, the first step to using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client is to open<br />

the interface. You can open the client from the program menu, desktop icon, or from a<br />

command line prompt. Once the interface is open, you are prompted to log on.<br />

NOTE When opening the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you may be<br />

prompted to download a client service pack if one is required. For more information<br />

on client service pack distribution, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

To open the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

CLI EQUIVALENT integrity admingui<br />

1 From the Windows Program menu, select <strong>MKS</strong> <strong>Integrity</strong> > <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong>.<br />

From UNIX, open a shell and type integrity admingui.<br />

The <strong>MKS</strong> <strong>Integrity</strong> Client interface displays. You are prompted to log in.


Logging Out<br />

Closing Client<br />

Introduction<br />

2 Log in by entering your user ID and password. The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

displays the <strong>Administration</strong> window.<br />

NOTE You can open another instance of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client by<br />

selecting Tools > <strong>Administration</strong>.<br />

Upon restarting the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, view settings are<br />

automatically restored and you are prompted to connect to the server or servers<br />

used during the previous session.<br />

You can log out of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client and log in as another user, or<br />

allow another user to log in.<br />

To log out of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

CLI EQUIVALENT integrity disconnect<br />

1 Select File > <strong>Server</strong> Connection > Disconnect.<br />

Depending on your system preferences, a dialog box asks you to confirm that you want<br />

to close all current views and disconnect your server connection. To disable this dialog<br />

box, see “<strong>Server</strong> Connections” on page 29.<br />

2 To disconnect from the server, click Yes. The Confirm Disconnect dialog box displays.<br />

NOTE Disconnecting from the server closes all current views.<br />

3 To disconnect all clients that are connected to that server, click Yes.<br />

If multiple servers are available in your <strong>Server</strong> Connection list, all clients running<br />

automatically connect using the next available server for that product. For example,<br />

<strong>MKS</strong> <strong>Integrity</strong> connects to the next available <strong>MKS</strong> <strong>Integrity</strong> enabled server in the <strong>Server</strong><br />

Connection list.<br />

You can close the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client so it is no longer displayed on the<br />

desktop, but leave it running in the background, logged in, and with client windows intact.<br />

To quit an <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client session<br />

Do one of the following:<br />

Select File > Close Window.<br />

11


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

Shutting Down<br />

12<br />

Click the X at the top right-hand corner of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

window.<br />

NOTE By default, these commands close the <strong>MKS</strong> <strong>Integrity</strong> Client; however, you can<br />

also configure them to shut down the <strong>MKS</strong> <strong>Integrity</strong> Client. For more information,<br />

see “To set <strong>MKS</strong> <strong>Integrity</strong> Client preferences from the GUI” on page 35.<br />

Even though the client is not displayed on the desktop, it is still running in the background.<br />

On Windows, a running client is indicated by an <strong>MKS</strong> <strong>Integrity</strong> Client icon in the system tray.<br />

Display the client by doing one of the following:<br />

Clicking the application shortcut (see “Opening Interface” on page 10).<br />

On Windows, right clicking the <strong>MKS</strong> <strong>Integrity</strong> Client icon in the system tray and<br />

selecting Open.<br />

On Windows, double clicking the <strong>MKS</strong> <strong>Integrity</strong> Client icon in the system tray.<br />

When you are finished using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can shut down<br />

the client completely in one action.<br />

To shut down the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

CLI EQUIVALENT integrity exit<br />

1 Do one of the following:<br />

From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, select File > Exit.<br />

On Windows, right click the <strong>MKS</strong> <strong>Integrity</strong> Client icon in the system tray, and select<br />

Exit.<br />

The Confirm <strong>MKS</strong> <strong>Integrity</strong> Client Exit dialog box displays.<br />

IMPORTANT Clicking Yes shuts down all clients, such as the <strong>MKS</strong> <strong>Integrity</strong> Client, in<br />

addition to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

2 To shut down all clients, click Yes. All <strong>MKS</strong> <strong>Integrity</strong> Clients close, all server connections<br />

disconnect, and the client process shuts down.


Application Window<br />

Title Bar<br />

Menu Bar<br />

Toolbars<br />

Application<br />

Window<br />

Tree Pane<br />

Status Bar<br />

Introduction<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client interface contains a number of common features<br />

explained in this section.<br />

Title Bar<br />

TIP You can access program functions through the menu items listed on the menu<br />

bar, as well as through the shortcut menu when you right click the mouse.<br />

The title bar is the uppermost component of the application window. On the left side, the title<br />

bar displays the name of the <strong>MKS</strong> <strong>Integrity</strong> Client. On the right side, the title bar displays the<br />

standard Windows buttons for minimizing, resizing, and closing the application window.<br />

Menu Bar<br />

Workspace Display Pane Shortcut Menu<br />

The menu bar is located directly below the title bar. Each menu contains available<br />

commands. When you first open the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, there are four<br />

menus in the menu bar: File, Tools, Window, and Help. The list of available menus and<br />

13


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

14<br />

commands varies depending on the view or window that is active at any given time (for<br />

example, working with permissions or configuration management policies).<br />

Toolbars<br />

Immediately below the menu bar are the toolbars that provide easy access to the most<br />

commonly used administration commands. Toolbar functions are carried out by clicking the<br />

appropriate toolbar button with the left mouse button.<br />

Most toolbar buttons only become available when an item is selected in a certain window.<br />

For example, selecting Policies in the node tree displays the toolbar buttons for policy<br />

commands.<br />

Tooltips explain the function of each toolbar button and appear when you pause the mouse<br />

pointer over the button.<br />

Shortcut Menu<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client supports standard shortcut menus. To display the<br />

menu of actions you can perform on a selected item, select and right click the item. The menu<br />

that displays depends upon the item you have selected.<br />

Tree Pane<br />

The tree pane displays the configurable components in a node tree view. The visibility of<br />

nodes in the tree pane depends on the applications that are installed on the server. For<br />

example, if the workflows and documents component is not installed on the server, the<br />

Workflows and Documents node does not display in the tree pane.<br />

As administrator, your ability to work with subnodes in the tree pane depends on the<br />

permissions allowed to you. For example, if you are not allowed the EditPolicy and<br />

ViewPolicy permissions under mks:si, you cannot modify configuration management<br />

policies under the Configuration Management node. For more information, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

To work with the available sections in a node, you can double click the node name or click the<br />

expansion button (+) to expand the node.<br />

NOTE When working in the tree pane, you can also open a new window from any<br />

node by right clicking and selecting Open New Window from the shortcut menu.


The following table specifies where to find information on nodes in the tree pane.<br />

View Node Location<br />

<strong>MKS</strong> Domain See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

ViewSet Distribution See “ViewSets” on page 49.<br />

Configuration See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Permissions See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Workflows and<br />

Documents<br />

Users See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Groups See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Dynamic Groups See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Projects See “Projects View” on page 249.<br />

States See “Working in States View” on page 77.<br />

Types See “Working in Types View” on page 83.<br />

Fields See “Working in Fields View” on page 125.<br />

Document Model See “Setting Up Documents” on page 97.<br />

Triggers See “Managing Event Triggers” on page 362.<br />

Change Package Types See “Viewing Change Package Types” on page 325.<br />

Test Verdicts See “Setting the Test Management Role for Types” on<br />

page 112.<br />

Charts See “Using Type Properties” on page 245.<br />

Dashboards See “Admin Provided Objects” on page 242.<br />

Queries See “Admin Provided Objects” on page 242.<br />

Reports See “Admin Provided Objects” on page 242.<br />

Configuration See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Permissions See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

<strong>Server</strong> Diagnostics See “Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Diagnostics” on<br />

page 414.<br />

Introduction<br />

15


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

View Node Location<br />

Configuration<br />

Management<br />

16<br />

Display Pane<br />

The display pane presents the configurable information for a selected node tree view. For<br />

example, if you select Global in the Permissions view, the display pane presents information<br />

on the global permissions granted to principals (that is individual users or groups) on the<br />

system.<br />

For options with check boxes:<br />

Status Bar<br />

Policies See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Configuration See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Permissions See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

<strong>Server</strong> Diagnostics See “Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Diagnostics” on<br />

page 414.<br />

Deploy Staging Systems See the <strong>MKS</strong> Deploy <strong>2009</strong> <strong>Administration</strong> <strong>Guide</strong>.<br />

Configuration See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Permissions See the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

Alert See “<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Alert Messages” on page 32.<br />

Check Box Description<br />

Option is not enabled.<br />

Option is enabled.<br />

Prompted to confirm or specify the option.<br />

When you select a command, a brief explanation of its purpose and status displays in the<br />

status bar. In addition, when you point to a toolbar button, you can see an explanation of its<br />

function.<br />

The status bar also displays the progress and status for commands launched from the<br />

interface.


Workspace<br />

Introduction<br />

Everything between the toolbar and the status bar is considered the workspace. This is where<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client displays administration windows.<br />

ToolTips<br />

A tooltip displays as a popup and in the status bar to provide additional details when you<br />

pause the mouse pointer over an item. Tooltips are available by placing the pointer over a<br />

button or field. Point to a button to display a description of the task associated with that<br />

button. The information you enter in the Description field for various workflow and<br />

document objects is also displayed as a Tooltip to users.<br />

Quick Access Keys (GUI)<br />

By default, this guide describes how to perform steps using the mouse. For your convenience,<br />

there is an alternate way to perform many of those same steps using the keyboard.<br />

Access Keys (GUI)<br />

Keyboard access keys appear as underlined letters on a menu command, or as a dialog box<br />

option, allowing you to access most items on the interface. You use the access keys by<br />

pressing and holding the ALT key, then the key indicated by the underlined letter.<br />

Access keys can also be used in a sequence, for example, ALT, F, V, R. This sequence means<br />

press down and hold ALT, and then press F, V, and R.<br />

Shortcut Keys (GUI)<br />

For some commands, shortcut keys are provided, as well as access keys. Shortcuts appear on<br />

menus opposite their command names, for example:<br />

Pressing the INSERT key is the same as selecting the Create command.<br />

Pressing the F1 function key is the same as selecting the Help command.<br />

Common Dual List Actions<br />

The following actions are common to all dual lists in the GUI and Web interfaces:<br />

To move entries between lists, highlight the entry and click the add ()<br />

buttons.<br />

To move all entries between lists, click the add all () buttons.<br />

To reorder the entries in a list, select an entry and click the move up (^) or move down<br />

(v) buttons.<br />

17


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

Filtering Data<br />

18<br />

As the amount of data in <strong>MKS</strong> <strong>Integrity</strong> increases, such as users, queries, projects, and fields,<br />

it can be difficult and time consuming to find the data you want. To quickly find data<br />

whenever a selection is required, such as assigning a user to a user field or selecting a chart to<br />

view, <strong>MKS</strong> <strong>Integrity</strong> provides a data filter for fields, lists, and views in the GUI interface.<br />

<strong>MKS</strong> <strong>Integrity</strong> provides a data filter for fields in the Web interface.<br />

Results List<br />

Selection<br />

List<br />

A typical data filter<br />

Text Filter Attribute Filters<br />

All instances of the data filter include a text filter that allows you to type a text string,<br />

becoming more specific as you type, for example, Show users containing james.<br />

In some instances, the data filter includes attribute filters that allow you to narrow your<br />

search results by searching for specific attributes, for example, users that belong to a specific<br />

group.<br />

Using the data filter is analogous to constructing a sentence that tells <strong>MKS</strong> <strong>Integrity</strong> what you<br />

are looking for, for example, Show projects containing patch that are active.


Introduction<br />

Filters and corresponding results persist each time you open and close the GUI or Web<br />

interface. For fields and lists, previously selected data (active and inactive) is bolded in the<br />

results list and displays in the selection list. For views, selected data (active and inactive)<br />

displays in the results list.<br />

Filtering Data in Field<br />

When setting the default value for a field, the data filter displays as a pop-up panel when you<br />

click the field.<br />

Data filter when setting a default field value<br />

19


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

20<br />

Filtering Data in List<br />

For lists, such as the Default Selected Projects list in the Create Admin Dashboard dialog box,<br />

the data filter displays as a pop-up panel when you click the plus sign (+) to add data to the<br />

list.<br />

Data filter for the Default Selected Projects list<br />

Filtering Data in View<br />

For views or selection dialog boxes, such as the Fields view, the data filter is embedded in the<br />

view or dialog box.


Data filter for the Fields view<br />

Filtering Text<br />

Introduction<br />

Typically, results are sorted alphabetically regardless of case, for example, all results<br />

starting with e and E are grouped together. Exceptions to the rule include data that has a<br />

sort order specified by your administrator, for example, states or pick list items.<br />

When using the text filter in a view, such as the Manage Queries view, the text filter<br />

searches visible columns only. For example, if you search for queries created by jriley<br />

in the Manage Queries view and the Created By column is hidden, no results are<br />

returned.<br />

The order that strings are typed in is irrelevant. For example, typing james riley or<br />

riley james both return James Riley.<br />

As soon as the data filter appears, typing immediately shifts the focus to the text filter<br />

and returns results.<br />

Favorites<br />

Workflow and document objects (queries, charts, reports, and dashboards) can be marked as<br />

favorites, allowing you to find them more easily in the data filter. You can search for favorites<br />

or non-favorites using the my favorites or not my favorites filters. For more<br />

information, see “Working With Favorites” on page 27.<br />

Active and Inactive Values<br />

By default, the data filter displays active and previously selected inactive values. Active<br />

values are users, groups, projects for workflows and documents, and pick list items that<br />

21


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

22<br />

are currently active in <strong>MKS</strong> <strong>Integrity</strong>. Inactive values represent obsolete values in<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

If a multi-valued field contains one or more inactive values and you attempt to change<br />

any values in the field, you are prompted to leave the field unchanged or clear the field<br />

of all inactive values.<br />

Blank Values<br />

In rules and multi-value fields, you can choose an unspecified or blank value by<br />

selecting Unspecified from the results list.<br />

In single-value fields where a value is already selected, choose an unspecified or blank<br />

value by selecting the current value and clicking X.<br />

Users and Groups<br />

To choose your name for a user value, select your name or Me (the currently logged in<br />

user) from the results list.<br />

TIP Specifying Me can be useful in queries, charts, reports, and dashboards you<br />

intend to share with other users. For example, if you specify Me in a query that<br />

shows all Defects assigned to you, other users can use the same query to show their<br />

assigned Defects without modifying or copying the query.<br />

To choose <strong>MKS</strong> <strong>Integrity</strong> as a user value, select System from the results list. Specifying<br />

System is useful when you want to view or be notified about items that <strong>MKS</strong> <strong>Integrity</strong><br />

has created or modified, such as computed fields. For example, if you create an e-mail<br />

notification rule to send an e-mail when an item containing a computed field is updated,<br />

<strong>MKS</strong> <strong>Integrity</strong> sends an e-mail each time the computed field is calculated. Depending on<br />

how often the field is calculated, this can result in several e-mails. If you do not want to<br />

receive e-mails about items that have changed only because <strong>MKS</strong> <strong>Integrity</strong> re-calculated<br />

a computed field, you set the rule to not send e-mails when the item is modified by<br />

System.<br />

Users or groups with a or icon are no longer active or no longer in the security<br />

realm.<br />

If your system is using LDAP authentication, all <strong>MKS</strong> <strong>Integrity</strong> user lists display full<br />

user names. If the attribute for full user names is missing on the LDAP server or if a<br />

user’s full name entry is blank, the <strong>MKS</strong> <strong>Integrity</strong> Client interface displays only the user<br />

ID.<br />

Typing a user’s full name or user name returns the same results, for example, James<br />

Riley and jriley.<br />

Workflow and Document Projects<br />

Child projects appear in the following format: parent project > child project.


Configuration Management Projects<br />

You can only filter top-level projects; however, you can select top-level projects and<br />

subprojects.<br />

E-mail Notification Rules<br />

Introduction<br />

In an e-mail notification rule, Me refers to the user that the notification rule is created for. This<br />

is useful if you want to create a common notification rule and share it with other users.<br />

Common Filters<br />

Some of the common filters are:<br />

Filter Description<br />

active Displays active users, groups, workflow and document projects, or<br />

pick list values.<br />

inactive Displays inactive users, groups, workflow and document projects, or<br />

pick list values.<br />

in group Displays users belonging to a specific group.<br />

my favorites Displays charts, dashboards, queries, or reports configured by you<br />

as favorites.<br />

not my favorites Displays charts, dashboards, queries, or reports configured by you<br />

as non-favorites.<br />

system provided Displays charts, dashboards, queries, or reports configured as<br />

shared administrative objects.<br />

created by me Displays charts, dashboards, queries, or reports created by you.<br />

created by... Displays charts, dashboards, queries, or reports created by a<br />

specific user.<br />

modified in the last week Displays charts, dashboards, queries, or reports modified in the last<br />

week.<br />

modified on Displays charts, dashboards, queries, or reports modified during a<br />

specific time period.<br />

visible in item type Displays fields visible in the specified item type.<br />

visible in all types Displays fields visible in all types.<br />

of field type Displays a specific field.<br />

23


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

24<br />

Shortcut Keys<br />

The following shortcut keys perform data filter operations:<br />

Shortcut Key(s) Operation<br />

ESC Close the data filter.<br />

ENTER Apply the selected data and close the data filter.<br />

Up arrow Move up in the results list.<br />

Down arrow Move down in the results list.<br />

CTRL+ Add the selected data to the results list.<br />

CTRL- Remove the selected data from the results list.<br />

F12 Replace the selected data in the selection list with the selected data<br />

in the results list.<br />

CTRL+A Select all data in the results list.<br />

To filter data<br />

1 To filter data using a text search, type a string in the Show containing text<br />

filter. Data containing the string displays in the results list, becoming more specific as<br />

you type.<br />

To filter data using attribute filters (if available) or to further restrict your text filter with<br />

attribute filters, click the that are filter and select an attribute filter from the list.<br />

To clear the that are filter, select that are > Reset.<br />

To remove a filter, select > Remove. For example, if the active users filter is<br />

enabled, select active > Remove.


Introduction<br />

To select multiple groups or to search for one or more groups using the text filter in the<br />

GUI, select that are > in group > Other. The Specify 'in group' filter values dialog box<br />

displays.<br />

Type a name in the text filter. A list of groups displays in the results list, becoming<br />

more specific as you type.<br />

From the results list, select the group(s) you want to add to the selection list and<br />

click +.<br />

To remove groups from the selection list, select the groups, and click X.<br />

To replace all groups in the selection list with groups that are selected in the results<br />

list, click .<br />

To add the group(s) in the selection list to the list of groups, click OK or Enter.<br />

To cancel the group selection and close the data filter, click Cancel.<br />

The group(s) display as an active attribute filter, for example, in group<br />

'Development'.<br />

To select multiple groups in the Web interface, select that are > in group >... . The<br />

Select Groups dialog box displays.<br />

Select multiple groups and click OK. The groups display as an active attribute filter,<br />

for example, in group Development,... .<br />

2 If you are filtering view or selection dialog box data, select the data in the results list, and<br />

perform an operation specific to the view or dialog box, such as Query > Edit or OK.<br />

If you are filtering list data, select the desired data in the results list, and click Add.<br />

If you are filtering field data, select the desired data in the results list, and click +.<br />

25


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

26<br />

NOTE<br />

If you are selecting data for a single-value field, selecting the data from the<br />

results list automatically adds the data to the selection list, closes the data filter,<br />

and adds the data as the field value.<br />

If the search returns one result in the results list, the data is automatically added<br />

to the selection list, requiring you to confirm the selection by clicking OK or Add.<br />

To remove selected data in the selection list, click X.<br />

3 To apply the data in the selection list as the field value(s), click OK or Add. If the field is<br />

multi-valued, click Add. The data displays as the field value(s).<br />

To cancel the selection and close the data filter, click Cancel.<br />

To select a configuration management project in the GUI<br />

1 Do one of the following:<br />

Open the Projects view.<br />

Perform an operation that requires a project selection, and click Select. The Select a<br />

Project dialog box displays.<br />

The view or selection dialog box is similar to the following.<br />

To hide the My projects list, click , and to display a hidden My projects list, click .<br />

2 If you are selecting subprojects, click + to display the subprojects for a project and select<br />

the subproject(s) required. Proceed to step 5.<br />

3 If you are searching for top-level projects, type a project name in the Show projects<br />

containing text filter. A list of projects displays in the search results list, becoming more<br />

specific as you type.


TIP Because project names include the project path, you can type in directory names<br />

to browse through the project directory structure. If you enter multiple names,<br />

separate each name with a space, for example, qa scripts.<br />

Introduction<br />

4 From the results list, select the project(s) that you want to add to the My projects list.<br />

5 To add the selected projects(s) or subproject(s) to the My projects list, click +.<br />

To remove the selected projects(s) or subproject(s) from the My projects list, click X. To<br />

replace all projects or subprojects in the My projects list with projects or subprojects that<br />

are selected in the results list, click .<br />

NOTE If you are selecting a project for a single-value field, the project automatically<br />

displays in the My projects list and the +, X, and buttons are disabled.<br />

6 If you are selecting a project for a field, to add the project or subproject in the My projects<br />

list to the field, click OK. The project or subproject displays in the field.<br />

Working With Favorites<br />

To find workflow and document objects (queries, charts, reports, and dashboards) that you<br />

created and use, you configure these objects as favorites. In the relevant view, favorites<br />

display with the my favorites filter (for more information, see “Filtering Data” on page 18).<br />

In the GUI and Web interface, favorites are indicated by and non-favorite objects by . By<br />

default, all objects created by you are configured as favorites.<br />

Key Considerations<br />

Objects can be shared; however, favorite settings are specific to each user or group.<br />

To configure an object as a favorite, it does not have to be shared or a system provided<br />

object.<br />

A Quick Query is a non-configurable favorite.<br />

For queries, the concepts of favorites and non-favorites replace the concepts of hidden<br />

and shown that existed in previous releases. In the GUI, you can run favorite and nonfavorite<br />

queries because the data filter allows you to select both types. In the Web<br />

interface, you can only run favorite queries because the data filter is not available for<br />

selecting queries. If you attempt to run a non-favorite query, you are prompted to<br />

configure the selected query as a favorite. Clicking Yes configures the query as a favorite<br />

and runs it.<br />

In the CLI, creating an object is the only way to configure it as a favorite. In addition,<br />

favorites and non-favorites are not indicated.<br />

27


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

Display Patterns<br />

28<br />

To configure an object as a favorite or non-favorite<br />

1 From the Charts, Dashboards, Queries, or Reports view, select the object.<br />

2 Select Add To Favorites or Remove From Favorites from the Query, Report, Chart, or<br />

Dashboard menu.<br />

Display patterns allow you to assign a format to numeric values, for example, to a computed<br />

expression used in a chart. Display patterns quantify numeric values, for example, as<br />

currency or percentages. The <strong>MKS</strong> <strong>Integrity</strong> Client automatically detects your locale,<br />

displaying the relevant currency symbol in the Display Pattern list, in addition to other<br />

sample display patterns.<br />

A display pattern used in a computed expression that assigns a dollar amount to the field<br />

value.<br />

Key Considerations<br />

Display patterns appear only when viewing items, charts, or reports. For items,<br />

<strong>MKS</strong> <strong>Integrity</strong> stores the integer field as an unformatted numeric value in the database.<br />

Query filters, rules, and trigger assignments display the unformatted, localized version<br />

of the numeric field value.<br />

If the display pattern is invalid, an error message displays. If no display pattern is<br />

specified, the field displays the value in a localized form.


To specify a display pattern<br />

Introduction<br />

Select a display pattern from the Display Pattern list and modify it, or create one by<br />

combining a currency symbol, text that represents a measurement, and/or one or more of the<br />

following characters:<br />

Symbol Description<br />

0 Displays as a zero in the output. For example, a display pattern of 000.00 displays an<br />

input value of 12.14 as 012.14 in the numeric field.<br />

# Displays as a digit in the output. If the digit is a zero and it is leading or trailing the<br />

input value, it is left out of the value displayed in the numeric field. For example, a<br />

display pattern of #0.00 displays an input value of 0.126 as 0.13 in the numeric<br />

field.<br />

. Locale specific decimal separator. For example, a display pattern of #,###.00<br />

displays an input value of 12345.123 as 12,345.12 in the numeric field.<br />

- Minus sign. For example, a display pattern of -#### displays an input value of 1234<br />

as -1234 in the numeric field.<br />

, Locale specific grouping separator. For example, a display pattern of $#,###<br />

displays an input value of 12345.123 as $12,345 in the numeric field of a U.S.<br />

locale and $12.345 in the numeric field of a German locale.<br />

E Scientific notation. For example, a display pattern of 0.###E0 displays an input value<br />

of 123456 as 1.235E5 in the numeric field.<br />

; Separates positive and negative patterns. For example, a display pattern of<br />

#, ###;(#,###) displays an input value of -12345 as (12,345) in the numeric<br />

field.<br />

% Multiplies by 100 and displays as a percentage. For example, a display pattern of<br />

"#.# '%'" displays an input value of 0.06 as 6% in the numeric field. To display 60%,<br />

select a display pattern of #% and type an input value of .6.<br />

‘ Escapes special characters. Use '' to create a single quote.<br />

<strong>Server</strong> Connections<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client permits connections to multiple <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>s, allowing you to manage and configure multiple servers in the same session.<br />

29


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

30<br />

To connect to an <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

CLI EQUIVALENT integrity admingui<br />

1 Select File > <strong>Server</strong> Connection > Connect. The Specify <strong>Server</strong> Connection dialog box<br />

displays.<br />

NOTE If your preferences are not set to prompt a server connection, the Specify<br />

<strong>Server</strong> Connection dialog box does not appear.<br />

2 In the Host Name field, type the name of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> you want to connect<br />

to.<br />

3 In the Port Number field, type the port number.<br />

4 To accept the server information, click OK. The Enter Credentials dialog box displays.<br />

5 In the User Name field, type your user name. Your user name displays by default in the<br />

User Name field.<br />

6 In the Password field, type your password.<br />

7 To accept the user information, click OK. A connection with the server is established.<br />

NOTE Once you connect to another server, you can open a new window for<br />

configuring permissions, Workflows and Documents, and Configuration<br />

Management on that server. To open a new window, select Tools > <strong>Administration</strong>.<br />

Upon restarting the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, view settings are<br />

automatically restored and you are prompted to connect to the server or servers<br />

used during the previous session.<br />

To verify your connection, select File > <strong>Server</strong> Connection. If you are connected, your<br />

user name, server name, and port number appear in the <strong>Server</strong> Connection menu.<br />

IMPORTANT In the <strong>Server</strong> Connection menu, the active connection displays with a<br />

bullet next to the connection information. If the bullet does not appear, you are not<br />

connected to the server.<br />

In the lower right corner of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, the following three<br />

icons indicate the status of the server:<br />

Icon Type of <strong>Server</strong> Connection<br />

Connected to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

You are logged in and have an active client session.


Print Functions<br />

Icon Type of <strong>Server</strong> Connection<br />

To disconnect from an <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

CLI EQUIVALENT integrity disconnect<br />

1 Select File > <strong>Server</strong> Connection, and select the target server from the list.<br />

Introduction<br />

2 Select File > <strong>Server</strong> Connection > Disconnect. A dialog box notifies you that other client<br />

applications may be using this connection and asks you to confirm that you want close<br />

all connected views and disconnect your server connection.<br />

NOTE When you disconnect, all views for that connection close. New views either<br />

use the current connection or ask for credentials as defined in the preferences.<br />

3 To disconnect from the server, click Yes. The target server disconnects.<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client provides print functionality for details in some<br />

views. When working in views, if the view can be printed the print function is available by<br />

selecting File > Print from the menu or by clicking the print button ( ) on the toolbar.<br />

To print view information from the GUI<br />

1 Display the view you want to print.<br />

Disconnected from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

You have logged out and closed your client session.<br />

Offline from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

The connection to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> has been dropped or the<br />

network connection is down.<br />

TIP When printing view information, resize the window width to fit columns, and<br />

resize the column widths to fit cell contents.<br />

2 With the desired information displayed in the window, select File > Print. The Print<br />

dialog box displays.<br />

3 If necessary, select the required options under the General, Page Setup, and Appearance<br />

tabs.<br />

31


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

32<br />

TIP To fit more information on a page, change the paper orientation to landscape to<br />

accommodate larger window widths, decrease page margins to fit more information<br />

on a page, and, if your printer supports multiple page sizes, select a larger paper<br />

size.<br />

4 Click OK to print. The displayed information prints.<br />

NOTE Information from rows is not split across multiple printed pages.<br />

Each printed page contains a header that displays the user ID of the person printing the<br />

document, the window title, and the printing date. Each printed page is numbered in the<br />

footer.<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Alert Messages<br />

From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can send alert messages to all users<br />

currently logged in to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Sending alert messages is useful for<br />

notifying users about important information, such as an impending server upgrade in which<br />

the server will be shut down.<br />

Key Considerations<br />

You need the mks:Admin<strong>Server</strong> permission to create and clear alert messages. For a<br />

proxy server, you need the mks:im:AdminProxy or mks:si:AdminProxy permission.<br />

You can create one message for a given server at a single time. Creating a new message<br />

deletes the previous message.<br />

Alert messages are stored in the server’s memory. If the server shuts down, the message<br />

is deleted.<br />

If a user connects to the server after a message is sent, the user still receives the message.<br />

Alert messages are plain text only and allow a maximum 4000 KB.<br />

In the Web interface, the date displayed for an alert message is the server’s date, time,<br />

and time zone. In the GUI and CLI, the date displayed for an alert message is the client’s<br />

date, time, and time zone.<br />

To create an alert message in the GUI<br />

CLI EQUIVALENT integrity setserveralert<br />

1 From the tree pane, select the Alert node. The <strong>Server</strong> Alert pane displays.


Introduction<br />

2 To set the alert message, select Alert > Set. The Set Alert to Broadcast dialog box appears,<br />

displaying who the alert is from (the currently logged in user) and which server the alert<br />

is sent to (the currently connected server).<br />

3 In the text field, type the message you want to send.<br />

4 To send the alert, click OK. The alert is sent.<br />

To view an alert message in the GUI<br />

CLI EQUIVALENT im/si/aa viewserveralert, im/si/aa<br />

serveralerts<br />

If you are working in the <strong>MKS</strong> <strong>Integrity</strong> Client with the <strong>MKS</strong> system tray or Web interface for<br />

workflows and documents, alert messages appear in a window at the bottom of the interface.<br />

NOTE In the <strong>MKS</strong> <strong>Integrity</strong> Client with system tray, you can view alert messages for<br />

all of the servers you are currently connected to by right-clicking the system tray<br />

icon and selecting <strong>Server</strong> Alerts.<br />

The alert message displays who sent the message, the server it came from, when it was sent,<br />

and the message. Alert messages are plain text only and do not support rich content. If there<br />

is more than one message, the top of the alert message window indicates message # of #, with<br />

"previous" and "next" arrow buttons that cycle through the messages. To close the alert<br />

message window, click X or the Esc key.<br />

Users working in the CLI, Web interface for configuration management, and <strong>MKS</strong> <strong>Integrity</strong><br />

Client without the <strong>MKS</strong> system tray must manually check for alert messages from the CLI.<br />

For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference <strong>Guide</strong> for Workflows and<br />

Documents, <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference <strong>Guide</strong> for Configuration Management, or<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> <strong>Administration</strong> CLI Reference <strong>Guide</strong>.<br />

TIP To avoid manually checking alert messages from the command line, launch the<br />

alert messages dialog box from the command line by specifying -g or --gui and<br />

keep the dialog box open. The dialog box automatically refreshes to display new<br />

alert messages.<br />

33


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

Preferences<br />

34<br />

To clear an alert message in the GUI<br />

CLI EQUIVALENT integrity setserveralert<br />

1 From the tree pane, select the Alert node. The <strong>Server</strong> Alert pane appears, displaying the<br />

current alert message.<br />

2 Select Alert > Clear. The alert message is removed from the <strong>Server</strong> Alert pane.<br />

NOTE If no alert message exists, the Clear command is unavailable.<br />

The <strong>MKS</strong> <strong>Integrity</strong> Client contains a common Preferences Configuration window that<br />

displays in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client and <strong>MKS</strong> <strong>Integrity</strong> Client. The<br />

Preferences Configuration window allows you to configure preferences for each component<br />

installed on your local machine.<br />

Options that appear in bold are those set by you. You can reset the default settings by clicking<br />

the Clear Local Settings button (available only on the applicable panels).<br />

Select a component to configure:<br />

NOTE Regardless of which component(s) you installed, preferences for all<br />

components appear in the Preferences Configuration window.<br />

To configure <strong>MKS</strong> <strong>Integrity</strong> Client preferences, see “<strong>MKS</strong> <strong>Integrity</strong> Client Preferences”<br />

on page 35.<br />

To configure server preferences, see “<strong>Server</strong> Preferences” on page 37.<br />

To configure <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client preferences, see “<strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client Preferences” on page 38.


Preferences<br />

To configure workflow and document preferences, refer to the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User<br />

<strong>Guide</strong>.<br />

To configure Deploy preferences, refer to the <strong>MKS</strong> Deploy <strong>2009</strong> <strong>Administration</strong> <strong>Guide</strong>.<br />

To configure workflow and document preferences, refer to the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User<br />

<strong>Guide</strong>.<br />

To configure Authorization <strong>Administration</strong> preferences, see “Authorization<br />

<strong>Administration</strong> Preferences” on page 41.<br />

Option Prompts<br />

If a command is configured to prompt you to confirm or specify an option, the confirmation<br />

dialog box that displays when you run the command allows you to save your response so<br />

that you are not prompted again. If necessary, the option can be modified again from the<br />

command’s main dialog box, wizard, or command options in the Preferences dialog box.<br />

<strong>MKS</strong> <strong>Integrity</strong> Client Preferences<br />

You can set the following preferences for the <strong>MKS</strong> <strong>Integrity</strong> Client, which are applied to each<br />

component you installed:<br />

look and feel of the GUI<br />

time delay for pop-up windows<br />

memory heap size<br />

commands<br />

To set <strong>MKS</strong> <strong>Integrity</strong> Client preferences from the GUI<br />

CLI EQUIVALENT integrity setprefs<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.<br />

2 In the tree pane, under <strong>Integrity</strong> Client, select the General node. The General pane<br />

displays.<br />

To set the appearance of the GUI, select an option from the Look and Feel list. The<br />

available choices are System, Windows (available for windows clients only), Motif,<br />

and Metal.<br />

To set the time in milliseconds before a command’s status displays in the GUI, type<br />

a numeric value in the GUI field under Popup Status Delay, or use the up and down<br />

arrows to select a value. The default value is 2500.<br />

35


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

36<br />

To set the time in milliseconds that a command’s status displays in the CLI, type a<br />

numeric value in the CLI field under Popup Status Delay, or use the up and down<br />

arrows to select a value. The default value is 0.<br />

To close and shut down the <strong>MKS</strong> <strong>Integrity</strong> Client when using the Close Window<br />

command or clicking the X at the top right-hand corner of the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

window, enable the option for Exit on Close. This option is disabled by default.<br />

To set the maximum amount of memory reserved for the <strong>MKS</strong> <strong>Integrity</strong> Client at<br />

run time, under Miscellaneous in the Maximum heap size field, enter a value in<br />

megabytes, or use the up and down arrows to select a value. The minimum value is<br />

5 MB, and the maximum value depends on your available system memory. The<br />

default value is 96 MB.<br />

CAUTION Changing the heap size setting may unfavorably affect the performance of<br />

the <strong>MKS</strong> <strong>Integrity</strong> Client and your system. Consult your administrator before<br />

making changes.<br />

On Windows, you can enable or disable an <strong>MKS</strong> <strong>Integrity</strong> Client system tray icon<br />

that indicates the <strong>MKS</strong> <strong>Integrity</strong> Client is running by toggling the Enable System<br />

Tray Icon option. When enabled, you can also perform some basic <strong>MKS</strong> <strong>Integrity</strong><br />

Client commands by right clicking the <strong>MKS</strong> <strong>Integrity</strong> Client icon. The <strong>MKS</strong> <strong>Integrity</strong><br />

Client system tray icon is enabled by default.<br />

3 To save your preferences, click OK.<br />

NOTE You must restart the <strong>MKS</strong> <strong>Integrity</strong> Client for the new preferences to take<br />

effect.<br />

To set <strong>MKS</strong> <strong>Integrity</strong> Client command preferences from the GUI<br />

CLI EQUIVALENT integrity setprefs<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.<br />

2 In the tree pane, under <strong>Integrity</strong> Client, open the Commands folder and select a node:<br />

Disconnect From <strong>Server</strong> causes the <strong>MKS</strong> <strong>Integrity</strong> Client to confirm when you<br />

disconnect from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. To enable this option, select Confirm<br />

Disconnect.<br />

Exit causes the <strong>MKS</strong> <strong>Integrity</strong> Client to confirm that all open <strong>MKS</strong> <strong>Integrity</strong> Client<br />

components (configuration management, workflow and document management,<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, and Authorization <strong>Administration</strong>) close and<br />

shut down.<br />

3 To save your preferences, click OK.


<strong>Server</strong> Preferences<br />

Preferences<br />

To address the needs of geographically dispersed organizations, the <strong>MKS</strong> <strong>Integrity</strong> Federated<br />

<strong>Server</strong> architecture (FSA) serves configuration management client requests through a<br />

proxy. The proxy provides access to project members residing on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

by retrieving information from its local cache or, if changes are detected, directly from the<br />

server.<br />

The Proxies node in the <strong>Server</strong>s folder allows you to configure proxy preferences.<br />

For a detailed discussion about using a proxy, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation<br />

and Configuration <strong>Guide</strong>.<br />

To set proxy preferences from the GUI<br />

CLI EQUIVALENT integrity setprefs<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.<br />

2 In the tree pane under <strong>Integrity</strong> Client, open the <strong>Server</strong>s folder, and select the Proxies<br />

node. The Proxies pane displays.<br />

3 Configure the available options:<br />

NOTE The names direct and default in any case, or combination of cases, cannot<br />

be used as proxy host names.<br />

Spaces and commas are invalid characters in the Host Name field.<br />

Host names and port numbers must match to connect to a proxy successfully. If you<br />

provide an incorrect port number, <strong>MKS</strong> <strong>Integrity</strong> does not search for the correct one.<br />

a) Select Use same username and password for proxy and server if you want the same<br />

user name and password to be used when connecting to both the proxy and server.<br />

Selecting this option does not necessarily ensure that <strong>MKS</strong> <strong>Integrity</strong> prompts you<br />

only once for your user name and password. If the authentication schemes used do<br />

not match, <strong>MKS</strong> <strong>Integrity</strong> prompts you for your user name and password again.<br />

b) Select Always confirm proxy username and password if you want <strong>MKS</strong> <strong>Integrity</strong> to<br />

prompt you for the user name and password each time you connect to the proxy.<br />

c) Select Reuse current proxy username and password for all connections if you want<br />

to use the same proxy user name and password when connecting to multiple remote<br />

servers.<br />

d) Select Use default proxy for all unlisted connections if you want to specify the proxy<br />

server as the default server for unlisted connections. This option is only enabled<br />

when you complete the details for a default proxy described next.<br />

e) To specify a default proxy, under Default proxy complete the following:<br />

37


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

38<br />

In the Host Name field, type the name of the server, or the numerical IP address.<br />

In the Port field, type the port number. If you do not specify a port number, or<br />

use 0 as the port number, <strong>MKS</strong> <strong>Integrity</strong> assumes a direct connection.<br />

f) To configure multiple servers to connect to, under <strong>Server</strong> do the following:<br />

Click Add to display the Add new server connection dialog box.<br />

In the Host Name field type the name of the server or the numerical IP address.<br />

In the Port field, type the port number.<br />

g) Select the type of connection you want.<br />

Direct connection specifies connecting without a proxy.<br />

Use default proxy specifies connecting using the proxy specified as the default<br />

on the Proxy panel.<br />

To specify a different proxy, select Proxy and complete the Host Name and Port<br />

fields.<br />

h) Click OK to save the server details and return to the Proxy panel. The server displays<br />

in the <strong>Server</strong> list with the connection details that you selected displayed below it.<br />

You can review the server details for each server you configure by selecting it from<br />

the list.<br />

TIP To edit a previously configured server, select it from the <strong>Server</strong> list, and click Edit.<br />

Edit the server details as required, and click OK to save your changes.<br />

To delete a previously configured server, select it from the <strong>Server</strong> list, and click<br />

Delete. The server name is removed from the <strong>Server</strong> list.<br />

4 To save your preferences, click OK.<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client Preferences<br />

You can set the following preferences for the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client:<br />

restore desktop<br />

main toolbar<br />

server connection<br />

To set <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client desktop preferences from the GUI<br />

CLI EQUIVALENT integrity setprefs<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.


2 In the tree pane, select the Desktop node. The Desktop pane displays.<br />

Preferences<br />

3 To restore all active windows when you restart the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client,<br />

select the Restore Desktop option.<br />

IMPORTANT To activate the Restore Desktop option, you must restart the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

The Restore Desktop option remembers which windows were open when you last exited<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client. When you restart the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client, the active windows appear automatically in the main view.<br />

Restore Desktop remembers up to ten windows.<br />

4 To save your preferences, click OK.<br />

To set <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client toolbar preferences from the GUI<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.<br />

2 In the tree pane, select the Desktop node. The Desktop pane displays.<br />

3 Click Toolbar. The Configure toolbar for: Desktop View dialog box displays.<br />

4 Do the following if you want to customize the main toolbar:<br />

a) To add a button to the main toolbar:<br />

Under Available Buttons, select the desired button.<br />

Under Toolbar Contents, select the button you want the new button to appear<br />

beside.<br />

Click Add. The target button moves to the list of Toolbar Contents and displays<br />

on the main toolbar.<br />

b) To remove a button from the main toolbar:<br />

Under Toolbar Contents, select the target button.<br />

Click Remove. The target button moves to the list of Available Buttons and no<br />

longer displays on the main toolbar.<br />

c) To add a separator:<br />

Under Toolbar Contents, select the button you want the separator to appear<br />

beside.<br />

Under Available Buttons, select a separator.<br />

Click Add. A separator is added at the specified location under Toolbar<br />

Contents.<br />

On the main toolbar, the separator is positioned to the right of the existing button or<br />

separator. You can remove the separator the same way as removing a button.<br />

39


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

40<br />

d) To change the sequence of a button or separator:<br />

Remove it from the Available Buttons list.<br />

Add it to the desired location.<br />

5 To accept the changes, click OK. The Configure toolbar for: Desktop View dialog box<br />

closes.<br />

6 To save your preferences, click OK. Your changes display immediately on the main<br />

toolbar.<br />

To set <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client connection preferences from the GUI<br />

CLI EQUIVALENT integrity setprefs<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.<br />

2 In the tree pane, select the Connection node. The Connection pane displays.<br />

3 Configure the following options:<br />

a) Under Default <strong>Server</strong> Connection, specify the following options:<br />

To specify a default <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to connect to, in the Host Name field<br />

type the name of the server or the numerical IP address.<br />

In the Port field, type the port number.<br />

To be prompted for the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> name and port number each time<br />

you log in to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, select the Prompt for<br />

Host Name and Port option.<br />

b) Under User, specify the following options:<br />

In the User Name field, type the user name you want to set as the default user.<br />

In the Password field, type a password for the user.<br />

To be prompted for the default user name each time you log in to the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, select the Prompt for: User Name option.<br />

To be prompted for the password each time you log in to the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client, select the Prompt for: Password option.<br />

NOTE If the security realm at your site is Windows Single Sign-On (NTSS), the<br />

Prompt for: User Name and Prompt for: Password options are ignored, unless you<br />

specify a user name that is different than the logged in user name. For information<br />

on security realms, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration<br />

<strong>Guide</strong>.<br />

4 To save your preferences, click OK.


Setting <strong>MKS</strong> <strong>Integrity</strong> View Preferences<br />

Preferences<br />

You can also modify <strong>MKS</strong> <strong>Integrity</strong> views by setting preferences through the <strong>MKS</strong> <strong>Integrity</strong><br />

Client.<br />

To set view preferences in the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

CLI EQUIVALENT integrity setprefs<br />

1 Open the <strong>MKS</strong> <strong>Integrity</strong> Client, and select Tools > Preferences. The Preferences<br />

Configuration panel displays.<br />

2 Expand the Views directory for a component, and choose the view you want to<br />

configure.<br />

3 Configure the options as required. For detailed information on Authorization<br />

<strong>Administration</strong> options, see “Authorization <strong>Administration</strong> Preferences” on page 41. For<br />

detailed information on other options, see the <strong>MKS</strong> <strong>Integrity</strong> Client <strong>2009</strong> Getting Started<br />

<strong>Guide</strong>.<br />

4 To save your preferences, click OK.<br />

Authorization <strong>Administration</strong> Preferences<br />

For Authorization <strong>Administration</strong>, you can configure the default settings for connecting to<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

To configure Authorization <strong>Administration</strong> preferences from the GUI<br />

CLI EQUIVALENT integrity setprefs<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.<br />

2 In the tree pane under Authorization <strong>Administration</strong>, select the Connection node. The<br />

Connection pane displays.<br />

3 Configure the following options:<br />

a) Under Default <strong>Server</strong> Connection, specify the following options:<br />

To specify a default <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to connect to, in the Host Name field<br />

type the name of the server or the numerical IP address.<br />

In the Port field, type the port number.<br />

To be prompted for the default <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> name and port number<br />

each time you log in to Authorization <strong>Administration</strong>, select the Prompt for<br />

Host Name and Port option.<br />

41


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

Deploy Preferences<br />

42<br />

b) Under User, specify the following options:<br />

In the User Name field, type the user name you want to set as the default user.<br />

In the Password field, type a password for the user.<br />

To be prompted for the default user name each time you log in to Authorization<br />

<strong>Administration</strong>, select the Prompt for: User Name option.<br />

To be prompted for the default password each time you log in to Authorization<br />

<strong>Administration</strong>, select the Prompt for: Password option.<br />

NOTE If the security scheme at your site is Windows Single Sign-On (NTSS), the<br />

Prompt for: User Name and Prompt for: Password options are ignored unless you<br />

specify a user name that is different than the logged in user name. For information<br />

on security schemes, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration<br />

<strong>Guide</strong>.<br />

4 To save your preferences, click OK.<br />

To use features set in the Deploy preferences, you must be licensed for Deploy. For more<br />

information, see the <strong>MKS</strong> Deploy <strong>2009</strong> <strong>Administration</strong> <strong>Guide</strong>.<br />

<strong>Administration</strong> Command Line Interface<br />

The CLI is a program that allows a user to enter keywords as instructions to a computer or<br />

device to perform specific tasks. (The MS-DOS® command prompt is an example of a CLI.)<br />

Results are typically output as simple text to the user’s terminal. More specifically, the CLI<br />

provides the means for you to enter <strong>MKS</strong> commands through a text-based interface. The<br />

primary use of the CLI is for scripting. The CLI is also useful for environments where no GUI<br />

is available.<br />

In addition to the functionality provided through the GUI for the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client, you can also perform certain tasks through the CLI.<br />

For a complete description of the commands and their options, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

<strong>2009</strong> <strong>Administration</strong> CLI Reference <strong>Guide</strong>.


Defining Rules<br />

Rule Format<br />

Defining Rules<br />

As administrator, you construct and manage rules that govern how items move through your<br />

development cycle. The logic that governs these rules is defined in a number of places within<br />

<strong>MKS</strong> <strong>Integrity</strong>:<br />

user notification rules<br />

group notification rules<br />

field editability and relevance<br />

rule-based event triggers<br />

rule-based field relationships.<br />

NOTE For information on defining rules for rule-based field relationships, see “To<br />

create a rule-based field relationship in the GUI” on page 148.<br />

A rule is a statement that sets a specified outcome when certain conditions are met. In the<br />

GUI, rules are composed of nodes and conditions. Nodes are the logical connectors that<br />

describe the relationship between two statements (or conditions). Conditions are a statement<br />

of the requirements that must be satisfied, and can involve either user or field values.<br />

The logical and node indicates that all of the specified conditions must be true to meet the<br />

requirements of the rule.<br />

The logical or node indicates that one or more of the specified conditions must be true to<br />

meet the requirements of the rule.<br />

The specific placement of the logical node is important to determining how it affects the<br />

meaning of the rule.<br />

Example<br />

The following example shows an e-mail notification rule that asks <strong>MKS</strong> <strong>Integrity</strong> to notify the<br />

user (administrator) each time a new change request is created or whenever a defect is<br />

assigned to the user. With the or node, the notification occurs whenever either of the events<br />

occurs.<br />

43


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

44<br />

The use of [New Value] in a rule condition indicates a change in a field value. One part of<br />

the condition indicates the field value before the change, and the other part indicates the<br />

value after the change. For example, in the rule above, Assigned User Assigned<br />

User[New Value] indicates that the new value of the Assigned User field is not equal to<br />

what it was before the item was saved. In other words, the value of the Assigned User field<br />

was changed during the item edit.<br />

Working With Conditions<br />

When working with conditions, the meaning of the operator depends on whether the field<br />

you are using in the rule is single or multi valued.<br />

Operator Description<br />

= Equals (single-valued fields)<br />

Contains (multi-valued fields)<br />

Valid Operators<br />

Does not equal (single-valued fields)<br />

Does not contain (multi-valued fields)<br />

> Greater than (single-valued fields)<br />

Contains at least one element greater than (multi-valued fields)<br />

>= Greater than or equal (single-valued fields)<br />

Contains at least one element greater than or equal to (multi-valued fields)<br />

< Less than (single-valued fields)<br />

Contains at least one element less than (multi-valued fields)<br />


To create a condition involving field values<br />

NOTE For information on creating conditions for rule-based field relationships, see<br />

“To create a rule-based field relationship in the GUI” on page 148.<br />

1 Open the dialog box or panel where you are defining the rule.<br />

Defining Rules<br />

2 Select And or Or, depending on the type of logical connector you want to use between<br />

conditions.<br />

NOTE If you are creating a rule with only one condition, you do not need to select<br />

And or Or.<br />

Swap replaces the selected node with the opposite node. For example, swapping an Or<br />

node replaces it with an And node.<br />

Remove deletes the selected node.<br />

3 Under Condition, select one of the following:<br />

Compare the value of a field with a constant<br />

Compare the value of a field with the value of another field<br />

4 Select the operator from the list.<br />

5 Specify fields and field values for the condition.<br />

NOTE You cannot specify <strong>MKS</strong> <strong>Integrity</strong> project and attachment fields in conditions.<br />

a) To choose a value for a date field, click Change. The Specify Date or Time dialog box<br />

displays.<br />

b) Do one of the following:<br />

Select a date from the calendar. If the date field is configured to display the time<br />

and you want to include it, select the Show time option (if not already enabled)<br />

and include a time from the calendar. The Show time option is enabled by<br />

default.<br />

Select now to specify the current date and time. This option displays only if the<br />

date field is configured to display the date and time.<br />

Select today to specify the current date and a time of 00:00:00 (midnight). This<br />

option can be specified for a date field or a date field configured to display the<br />

date and time.<br />

Select none to specify an empty value for the date field.<br />

6 For each field, specify an Existing Value or a New Value.<br />

45


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

46<br />

7 When you are finished constructing the condition, click Add. The condition displays<br />

under the selected node.<br />

NOTE You cannot specify configuration management project and attachment fields<br />

in conditions.<br />

For more information on operators, see “Valid Operators” on page 44.<br />

For more information on using the data filter to select fields, see “Filtering Data” on page 18.<br />

To create a condition involving user groups<br />

8 Under Condition, select Check the group membership of the user performing<br />

the action.<br />

9 Select is or is not from the list.<br />

10 Select a group name from the a member of list. For detailed information on using the<br />

data filter, see “Filtering Data” on page 18.<br />

11 When you are finished constructing the condition, click Add. The condition displays<br />

under the selected node.<br />

To create a condition involving type properties<br />

NOTE This condition is commonly defined to view solution-specific item types. It<br />

can also be used in rules (except query rules) and expanded in report templates. To<br />

learn more about solution options and licensing, refer to the applicable solution<br />

guide.<br />

1 Under Condition, select Check a property associated with the item's type.<br />

2 Select a type property name from the filtered list. For information on using the data<br />

filter, see “Filtering Data” on page 18.<br />

3 Select the operator from the list (see “Valid Operators” on page 44).<br />

4 Enter a value for the property in the subsequent field.<br />

5 When you are finished constructing the condition, click Add. The condition displays<br />

under the selected node.<br />

To create a pre-condition associated with a document<br />

1 Under Condition, select Check a pre-condition associated with a document.<br />

2 Select an item type from the filtered list of document item types.<br />

For information on using the data filter, see “Filtering Data” on page 17.


Selecting Rules<br />

Viewing <strong>Administration</strong> History<br />

3 When you are finished constructing the condition, click Add. The document model<br />

condition displays in the text box.<br />

To learn about the various document item types and artifact classification, for example,<br />

defining types as meaningful and non-meaningful, see “Setting Up Documents” on<br />

page 97.<br />

There is a full set of use cases associated with the creation of pre-conditions, rules, and<br />

triggers available in the ALM section of the <strong>MKS</strong> Customer Community Knowledge<br />

Base found at http://www.mks.com/community.<br />

To replace an existing condition with a new one<br />

1 Select the existing condition.<br />

2 Construct the condition as described earlier.<br />

3 Click Replace. A confirmation dialog box displays.<br />

4 To confirm the replacement, click Yes.<br />

When working with rules, you can copy them from other existing items, such as users,<br />

groups, fields, or triggers.<br />

The Rule Selection dialog box allows you to select an item to copy an existing rule from.<br />

To select a rule in the GUI<br />

NOTE The Rule Selection dialog box for Users and Groups includes options that<br />

change the item type that rules are copied for. This allows you to copy group rules<br />

to a user or copy user rules to a group.<br />

1 In the Objects with Rules list of the Rule Selection dialog box, select the item you want to<br />

copy conditions from. If the user has conditions, that user displays in the Preview area.<br />

2 Click OK. The rule displays in the panel.<br />

3 Repeat as necessary to add more rules.<br />

Viewing <strong>Administration</strong> History<br />

Setting up workflows and documents involves modifying a number of administrative objects<br />

to customize the configuration to suit your work environment. Workflow and document<br />

administrative objects are users, groups, dynamic groups, projects, states, types, fields,<br />

triggers, change package types, and change package attributes. Whenever changes are made<br />

47


Chapter 2: <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

48<br />

to these objects, <strong>MKS</strong> <strong>Integrity</strong> tracks the changes and then provides reports on the change<br />

history through the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can view the record of changes through<br />

the History tab in the associated view for each administrative object. The administrative<br />

history displays when you are editing or viewing an administrative objects.<br />

You can also access information in the history through the CLI. To view the history, use the<br />

--showHistory option when viewing or editing administrative objects. By default, the view<br />

and edit commands do not display any history information. For more information on the<br />

CLI, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> <strong>Administration</strong> CLI Reference <strong>Guide</strong>.<br />

In the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, the History tab displays the changes in<br />

chronological order from the first to the most recent and lists the complete record of changes<br />

for that object. The record of changes is also stored in the <strong>MKS</strong> <strong>Integrity</strong> database.<br />

NOTE If you are upgrading from an earlier release, the history of changes is not<br />

shown from the previous installation.<br />

Information displayed under the History tab includes:<br />

user who made the change and the associated date/time information<br />

property of the object that was modified (for example, State object properties include<br />

name, description, image, capabilities, and the history of position or sequence changes)<br />

type of change that was made (one of Changed To, Added, or Removed)<br />

value associated with the modification<br />

NOTE Whenever a user is automatically created during logon, system is shown as<br />

the creator of that user.


C HAPTER THREE<br />

ViewSets<br />

Administering ViewSets for Users<br />

3<br />

This chapter provides information on administering ViewSets for the purpose of making<br />

them available to users from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

For information on how users make use of ViewSets in the <strong>MKS</strong> <strong>Integrity</strong> Client, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> Client <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

This chapter contains the following topics:<br />

“Understanding ViewSets” on page 50<br />

“Viewing ViewSets” on page 51<br />

“Basic ViewSet Operations” on page 54<br />

“Making ViewSets Available to Users” on page 56<br />

“Administering Published ViewSets” on page 62<br />

“ViewSet Permissions” on page 66<br />

“ViewSets FAQ” on page 67<br />

49


Chapter 3: ViewSets<br />

Where to Go Next<br />

50<br />

The following table summarizes the steps you should follow to set up <strong>MKS</strong> <strong>Integrity</strong><br />

ViewSets:.<br />

To Do This … See …<br />

Learn about what ViewSets are, and why they<br />

are used by users.<br />

Learn how to use the ViewSets view, types of<br />

ViewSets, and default samples.<br />

Perform basic ViewSet operations, such as<br />

creating, editing, copying, and deleting.<br />

Publish ViewSets to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> so<br />

that they are available to users.<br />

Manage and configure properties for ViewSets<br />

residing on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Specify permissions for modifying, publishing,<br />

and importing ViewSets.<br />

Troubleshoot problems you are encountering<br />

with administering ViewSets.<br />

Understanding ViewSets<br />

“Understanding ViewSets” on page 50<br />

“Viewing ViewSets” on page 51<br />

“Basic ViewSet Operations” on page 54<br />

“Making ViewSets Available to Users” on<br />

page 56<br />

“Administering Published ViewSets” on page 62<br />

“ViewSet Permissions” on page 66<br />

“ViewSets FAQ” on page 67<br />

A ViewSet is a collection of views in a specific configuration that persists each time the user<br />

opens and closes the <strong>MKS</strong> <strong>Integrity</strong> Client. As an administrator, you have the ability to<br />

control the configuration of ViewSets. Each ViewSet can be designed around one or more<br />

tasks, often corresponding to a specific role, such as a developer or project manager. For<br />

example, a developer ViewSet might contain views and actions for items and queries, while a<br />

project manager ViewSet might contain views and actions for charts, reports, and<br />

dashboards.<br />

It is the ability to specify not just open views, but available menu items (and toolbar buttons)<br />

that launch views, that gives the ViewSet its effectiveness with users. As an administrator for<br />

the ViewSet, you can even limit the level of customization that users are able to perform and<br />

what they see as available to customize.<br />

Depending on your work environment, one of your responsibilities as an administrator may<br />

be creating ViewSets for specific roles in your organization. Once you create a ViewSet, you<br />

can make it available to other users by publishing it on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (see<br />

“Publishing ViewSets” on page 59). Users can then import the ViewSet using the<br />

<strong>MKS</strong> <strong>Integrity</strong> Client. Users cannot import ViewSets that reside on other <strong>MKS</strong> <strong>Integrity</strong>


Viewing ViewSets<br />

Clients. In addition, you can create mandatory ViewSets that are automatically imported into<br />

each user’s <strong>MKS</strong> <strong>Integrity</strong> Client when it connects to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (see<br />

“Mandatory ViewSets” on page 61).<br />

<strong>MKS</strong> <strong>Integrity</strong> saves published ViewSet files in XML format in the database.<br />

<strong>MKS</strong> recommends creating and editing ViewSets in the GUI; however, you can retrieve<br />

published ViewSets from the database for manual editing. Once you are finished editing<br />

these files, you can store them in the database.<br />

As an alternative to using the Admin Migration Wizard, you could also retrieve a published<br />

ViewSet from a server, modify it, and place it in another server’s database for use.<br />

To retrieve published ViewSets from the database, use the integrity/im getdbfile<br />

command.<br />

To put published ViewSets in the database, use the integrity/im putdbfile command.<br />

NOTE The integrity putdbfile and getdbfile commands require the<br />

mks:Admin<strong>Server</strong> permission. The im putdbfile and getdbfile commands<br />

require the mks:im:Admin<strong>Server</strong> permission.<br />

For more information on using these commands, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

<strong>Administration</strong> CLI Reference <strong>Guide</strong>.<br />

You can also specify which users and groups are permitted to import, edit, and publish<br />

specific ViewSets (see “ViewSet Permissions” on page 66).<br />

For troubleshooting problems associated with ViewSets, see “ViewSets FAQ” on page 67.<br />

Viewing ViewSets<br />

The ViewSets view is the primary location for administering ViewSets. While you can<br />

perform modifications to some ViewSets from the <strong>MKS</strong> <strong>Integrity</strong> Client, the ViewSets view<br />

provides complete administrative functionality.<br />

NOTE To see the ViewSets view, you need the PublishNewViewSet permission or<br />

permission to modify any server (published) ViewSet. See “ViewSet Permissions”<br />

on page 66.<br />

To open the ViewSets view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, select the ViewSet<br />

Distribution > ViewSets node. The ViewSets view displays.<br />

51


Chapter 3: ViewSets<br />

52<br />

The ViewSets view displays the following information by default:<br />

Name Description<br />

Published State Displays what type of ViewSet it is, and consequently where the<br />

ViewSet is located (see “ViewSet Types and Locations” on<br />

page 52). The type of the ViewSet determines what operations<br />

you can perform on it.<br />

Name Displays the name of the ViewSet. The system is able to work<br />

with different ViewSets using the same name.<br />

Creator Displays the name of the user who published the ViewSet.<br />

Modified Date The meaning of modified date varies based the type of ViewSet:<br />

ViewSet Types and Locations<br />

Personal ViewSets, is the modified date of the ViewSet on<br />

the server at the time it was installed on the <strong>MKS</strong> <strong>Integrity</strong><br />

Client.<br />

Unpublished ViewSets, is the date the ViewSet was last<br />

edited.<br />

Published ViewSets, is the date the ViewSet was either<br />

published, or its properties edited on the server.<br />

Description Displays a description of the ViewSet, if one was provided for it.<br />

To provide a description for a ViewSet, see “Editing ViewSets”<br />

on page 54 or “Editing ViewSet Attributes” on page 63.<br />

Mandatory Specifies if the ViewSet is mandatory for users who have<br />

permission to import it (see “Mandatory ViewSets” on page 61).<br />

This field only applies to published ViewSets (see<br />

“Administering Published ViewSets” on page 62).<br />

Customizable Specifies if the ViewSet can be customized by users. Note: If a<br />

ViewSet is mandatory, it cannot be set to customizable.<br />

To administer ViewSets, it is important to understand the types of ViewSets and where they<br />

are located.<br />

There are three types of ViewSet: personal, unpublished, and published. A ViewSet changes<br />

type based on the operation performed in the ViewSets view (see “Viewing ViewSets” on<br />

page 51). The following table describes each type of ViewSet:<br />

Type Location Description<br />

Personal <strong>MKS</strong> <strong>Integrity</strong> Client ViewSets stored on (and available to) the<br />

<strong>MKS</strong> <strong>Integrity</strong> Client installed on the same<br />

machine a <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client you are viewing the ViewSets view<br />

from.<br />

Personal ViewSets are only displayed in the<br />

ViewSets view for the purpose of converting<br />

to unpublished ViewSets.


Type Location Description<br />

Unpublished <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client<br />

Default ViewSets<br />

Viewing ViewSets<br />

By default, the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> includes the following role-based ViewSets that may be<br />

useful in your organization:<br />

Configuration Manager<br />

ViewSet for performing advanced software configuration functions. This ViewSet<br />

includes views and actions for projects, Sandboxes, members, change packages, items,<br />

queries, and time entries.<br />

Release Manager<br />

ViewSet for managing deployment. This ViewSet includes views and actions for change<br />

packages, items, queries, and staging and deploy.<br />

Deploy Administrator<br />

ViewSet for staging and deploy administrators. This ViewSet includes views and actions<br />

for projects, and for staging and deploy.<br />

Developer<br />

ViewSet for software developers. This ViewSet includes views and actions for projects,<br />

Sandboxes, members, change packages, items, queries, and time entries.<br />

<strong>Integrity</strong> User<br />

ViewSets modified through the <strong>MKS</strong> <strong>Integrity</strong><br />

Client for the purpose of publishing to the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. These ViewSets have<br />

not yet been published (or have not been<br />

published since they were last fetched or<br />

edited).<br />

Created when a personal ViewSet is edited or<br />

copied from the ViewSets view. Also created<br />

when a published ViewSet is edited, copied,<br />

or fetched.<br />

Important: Unpublished ViewSets are stored<br />

locally on your <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client machine. Until the ViewSets are<br />

published to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, like<br />

any other locally stored data they are subject<br />

to local system failure.<br />

Published <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> ViewSets that have already been published to<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, and are available to<br />

specified users (see “Administering Published<br />

ViewSets” on page 62).<br />

ViewSet for creating, updating, and monitoring items. This ViewSet includes views and<br />

actions for change packages, items, queries, charts, reports, and dashboards.<br />

53


Chapter 3: ViewSets<br />

54<br />

IBM i Developer<br />

ViewSet for reviewing System i source changes. This ViewSet includes views and limited<br />

actions for projects, members, change packages, items, and queries. For more<br />

information on working with Implementer and source management, see the<br />

<strong>MKS</strong> Implementer <strong>2009</strong> User <strong>Guide</strong>.<br />

Basic ViewSet Operations<br />

This section covers basic operations that you can perform on ViewSets:<br />

“Creating ViewSets” on page 54<br />

“Editing ViewSets” on page 54<br />

“Copying ViewSets” on page 55<br />

“Deleting ViewSets” on page 56<br />

Creating ViewSets<br />

Creating a ViewSet from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client saves you the step of<br />

converting a personal ViewSet (created from the <strong>MKS</strong> <strong>Integrity</strong> Client) to an unpublished<br />

ViewSet.<br />

Editing ViewSets<br />

To create a ViewSet using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client interface<br />

1 From the ViewSets view (see “Viewing ViewSets” on page 51), select ViewSet > Create.<br />

The Create ViewSet dialog box displays.<br />

2 In the Name field, type a name for the ViewSet. A name is mandatory, but ViewSet<br />

names do not need to be unique. <strong>MKS</strong> <strong>Integrity</strong> tracks the ViewSet independently of the<br />

name you assign it.<br />

3 To create the ViewSet, click OK. The ViewSet displays in the ViewSets view.<br />

The created ViewSet is empty. To configure it with menus, views, and toolbars, edit the<br />

ViewSet (see “Editing ViewSets” on page 54). The Edit ViewSet GUI is automatically<br />

launched so you can customize the ViewSet (see “Editing ViewSets” on page 54).<br />

Editing a personal or published (server) ViewSet from the ViewSets view creates a local<br />

duplicate and converts it to an unpublished ViewSet. That means that if you edit a published


Basic ViewSet Operations<br />

ViewSet, a local duplicate is created to be edited as an unpublished ViewSet. That<br />

unpublished ViewSet must then be published to replace the original one you edited.<br />

IMPORTANT Unpublished ViewSets are stored locally on your <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client machine. Until the ViewSets are published to the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, like any other locally stored data they are subject to local<br />

system failure.<br />

To edit a ViewSet using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

Copying ViewSets<br />

1 From the ViewSets view (see “Viewing ViewSets” on page 51) select the ViewSet you<br />

want to edit. Then select ViewSet > Edit. The Edit ViewSet GUI displays.<br />

The Edit ViewSet GUI provides you with a way to see and interact with ViewSet<br />

elements to ensure that they appear and behave the way you intended. The Edit ViewSet<br />

GUI saves changes you make to the layout of the tabbed views. For more information on<br />

using the Edit ViewSet GUI, see the documentation for Test ViewSet GUI (see “Testing<br />

ViewSets” on page 61).<br />

NOTE If you fetch or delete a ViewSet while it is open in the Edit ViewSet GUI, the<br />

EditViewSet GUI closes and your changes are lost.<br />

2 To specify what elements are included in the ViewSet, select ViewSet > Customize. The<br />

Customize ViewSet dialog box displays. For information on customizing a ViewSet, see<br />

the <strong>MKS</strong> <strong>Integrity</strong> Client <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

IMPORTANT The customizing ViewSet documentation in the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

<strong>2009</strong> Getting Started <strong>Guide</strong> specifies which functionality is only available through the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

You can copy existing ViewSets to reuse them for new ViewSets you want to create. You can<br />

also create copies of ViewSets as backups, to restore later if you choose to discard changes<br />

you make to a ViewSet.<br />

To copy a ViewSet using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

1 From the ViewSets view (see “Viewing ViewSets” on page 51), select the ViewSet you<br />

want to copy.<br />

2 Select ViewSet > Copy ViewSet. The Copy dialog box displays, where<br />

is the name of the ViewSet you are copying.<br />

55


Chapter 3: ViewSets<br />

Deleting ViewSets<br />

56<br />

3 In the Name field, enter a name for the ViewSet copy. The default name is Copy of<br />

.<br />

To copy the views currently open in the selected ViewSet, enable Copy Open Views.<br />

4 To create the copy, click OK. The new ViewSet copy is created and displays in the<br />

ViewSets view as an unpublished ViewSet. The Edit ViewSet GUI is automatically<br />

launched so you can customize the ViewSet (see “Editing ViewSets” on page 54).<br />

You can delete ViewSets that are no longer needed. Published and unpublished ViewSets can<br />

each be deleted using the ViewSets view.<br />

NOTE Personal ViewSets cannot be deleted using the ViewSets view.<br />

To delete a ViewSet using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

1 From the ViewSets view (see “Viewing ViewSets” on page 51), select the ViewSets you<br />

want to delete.<br />

2 Select ViewSet > Delete. The Delete ViewSet confirmation dialog box displays.<br />

CAUTION You cannot recover a ViewSet once it is deleted.<br />

3 To confirm deletion, click Yes. The ViewSet is deleted and no longer appears in the<br />

ViewSets view.<br />

NOTE Clicking Yes to All only deletes all ViewSets of that particular type.<br />

Making ViewSets Available to Users<br />

There are default ViewSets included on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> for users to download<br />

(“Default ViewSets” on page 53). However, you can customize those ViewSets (or create your<br />

own) and then make them available to users to download.<br />

Some examples of why you might want to distribute ViewSets to users are as follows.<br />

Scenario 1: New <strong>MKS</strong> <strong>Integrity</strong> Client Installation<br />

James Riley has just joined the development team, and he is required to set up his own<br />

development machine. This includes installing the <strong>MKS</strong> <strong>Integrity</strong> Client and using something<br />

called a Developer ViewSet to create a sandbox so he can work on getting the code base to


Making ViewSets Available to Users<br />

compile. James has no idea what a ViewSet is or where to get one. James hopes the ViewSet<br />

comes with the client he is about to install.<br />

Solution: A pre-configured Developer ViewSet is available on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> for<br />

specified users, and it is automatically installed for them on their <strong>MKS</strong> <strong>Integrity</strong> Clients (see<br />

“Default ViewSets” on page 53) when the ViewSet is configured to be mandatory (see<br />

“Mandatory ViewSets” on page 61).<br />

Scenario 2: New Specialized Role<br />

A new performance team has been created with a specialized role that did not previously<br />

exist in your organization. You decide the team can benefit from its own Performance<br />

ViewSet, so that the needed information and functionality is available to the performance<br />

team members.<br />

Solution: Create a Performance ViewSet (see “Creating ViewSets” on page 54) and then<br />

publish it to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, specifying the group that contains the team members<br />

so they have access to import the ViewSet.<br />

Scenario 3: Process Changes to Existing Role<br />

Your organization has been using the <strong>Integrity</strong> User ViewSet for some time, but now a<br />

new process must be implemented. Much of the original ViewSet can still be used though.<br />

Solution: Fetch the <strong>Integrity</strong> User ViewSet from the server, edit it to represent your new<br />

process, and then publish it back to the server so that users can import it (thereby updating<br />

their existing ViewSet) to get the new process changes.<br />

Process Overview<br />

The following overviews describe publishing a new ViewSet and a personal ViewSet.<br />

Publish New ViewSet<br />

The proceeding diagram shows the general process for publishing a new ViewSet. All<br />

functionality is accessed through the ViewSets view (see “Viewing ViewSets” on page 51).<br />

ViewSets View<br />

Create Unpublished Publish<br />

Published<br />

ViewSet<br />

ViewSet<br />

The following is the general process for publishing a new ViewSet.<br />

1 From ViewSets view, create an unpublished ViewSet (see “Creating ViewSets” on<br />

page 54).<br />

57


Chapter 3: ViewSets<br />

58<br />

2 Publish the ViewSet to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (“Publishing ViewSets” on page 59).<br />

Once the ViewSet is published, users then have access the ViewSet to download and<br />

import into their <strong>MKS</strong> <strong>Integrity</strong> Client.<br />

To update an existing ViewSet already located on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, see “Updating<br />

Published ViewSets” on page 64.<br />

Publish Personal ViewSet<br />

The proceeding diagram shows the general process for taking a client-side ViewSet and<br />

uploading it to the server for users to access. All functionality is accessed through the<br />

ViewSets view (see “Viewing ViewSets” on page 51).<br />

Personal<br />

ViewSet<br />

Convert<br />

Unpublished<br />

ViewSet<br />

Publish<br />

Published<br />

ViewSet<br />

The following is the general process for taking a <strong>MKS</strong> <strong>Integrity</strong> Client ViewSet and<br />

publishing it to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (so users can access the ViewSet to import):<br />

1 Convert the personal ViewSet to an unpublished ViewSet (see “Converting Personal<br />

ViewSet to Unpublished ViewSet” on page 58).<br />

2 Publish the ViewSet to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (see “Publishing ViewSets” on page 59).<br />

Once the ViewSet is published, users then have access to the ViewSet to download and<br />

import into their <strong>MKS</strong> <strong>Integrity</strong> Client.<br />

To update an existing ViewSet already located on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, see “Updating<br />

Published ViewSets” on page 64.<br />

Converting Personal ViewSet to Unpublished ViewSet<br />

If you want to publish a ViewSet you created as (or modified from) a personal ViewSet in<br />

your <strong>MKS</strong> <strong>Integrity</strong> Client, it must first be converted to an unpublished ViewSet. For<br />

information on the kinds of ViewSets, see “ViewSet Types and Locations” on page 52.


Making ViewSets Available to Users<br />

To convert a client ViewSet to an unpublished ViewSet, create a copy of the ViewSet from the<br />

ViewSets view (see “Copying ViewSets” on page 55). Any ViewSet created (including<br />

created through copying) is an unpublished ViewSet.<br />

NOTE Personal ViewSets must to be located in the <strong>MKS</strong> <strong>Integrity</strong> Client on the same<br />

machine as the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client to be available for converting to<br />

unpublished ViewSets.<br />

Alternatively, any ViewSet you edit from the ViewSets view in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client is copied and converted to an unpublished ViewSet for editing (and so<br />

can be published to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>).<br />

Publishing ViewSets<br />

Only unpublished ViewSets can be published to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. For information<br />

on the kinds of ViewSets, see “ViewSet Types and Locations” on page 52. To convert a<br />

personal ViewSet to an unpublished ViewSet, see “Converting Personal ViewSet to<br />

Unpublished ViewSet” on page 58.<br />

To publish a ViewSet using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

CLI EQUIVALENT integrity publishviewset<br />

1 From the ViewSets view (see “Viewing ViewSets” on page 51), select the ViewSet you<br />

want to publish.<br />

2 Select ViewSet > Publish ViewSet. The Publish ViewSet wizard displays Step 1.<br />

Edit the ViewSet attributes as needed. For information on the fields and options, see<br />

“Editing ViewSet Attributes” on page 63.<br />

IMPORTANT <strong>MKS</strong> <strong>Integrity</strong> tracks the ViewSet independently of the name you assign<br />

it. Even if you rename a ViewSet, that same ViewSet is updated (overwritten) when<br />

you publish it again. If you want to retain the original, create and edit a copy of the<br />

ViewSet instead (see “Copying ViewSets” on page 55).<br />

To advance to the next step, click Next.<br />

59


Chapter 3: ViewSets<br />

60<br />

3 Specify how users are able to use the ViewSet.<br />

IMPORTANT<br />

If the ViewSet has been previously published, the permissions default to those of<br />

the ViewSet version on the server.<br />

If the ViewSet has not been previously published, the permissions default to<br />

include your user ID (as the user publishing the ViewSet).<br />

For more information on setting and using ViewSet permissions, see “ViewSet<br />

Permissions” on page 66.<br />

To advance to the next step, click Next.<br />

4 Views that are open in the ViewSet have default settings you may want to impose on the<br />

user. Specify the settings to include (or clear to exclude) in the ViewSet for the view<br />

named in the View Name field by enabling (or clearing) the selection in the Include<br />

column. This process may take several steps because there is a separate panel in the<br />

wizard for each view open in the ViewSet.<br />

NOTE Only settings that correspond to a command are available.<br />

The following information is depicted in the panel:<br />

View Name displays the name of the view, for example Items.<br />

View Title displays the title that appears in the view tab, such as<br />

Query: Quick Query.<br />

Include specifies if to include the setting value in the field.<br />

Setting Name displays the name of the setting.<br />

Setting Value displays the value the setting is currently set to.<br />

TIP To include all settings, click Select All. To clear all settings, click Clear All. To<br />

advance to the panel for each view step, click Next.<br />

5 When you have advanced through all of the settings panels for views, a panel displays<br />

that provides you with the means to test your ViewSet. To test the ViewSet, click Test<br />

ViewSet (see “Testing ViewSets” on page 61). The ViewSet is launched in the<br />

Test ViewSet GUI using the settings changes made in the previous wizard steps.


Testing ViewSets<br />

6 When you are finished with the Publish ViewSet wizard, click Finish.<br />

Making ViewSets Available to Users<br />

If the ViewSet is replacing an existing published ViewSet, The Confirm Overwrite<br />

Existing <strong>Server</strong> ViewSet dialog box displays. To update the existing ViewSet with your<br />

changes, click Yes.<br />

The ViewSet is published to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, and the unpublished ViewSet<br />

duplicate is deleted (no longer appears in the ViewSets view).<br />

After you have advanced through the Publish ViewSet Wizard (see “Publishing ViewSets”<br />

on page 59), you can test your ViewSet before finally publishing it to the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> for users to download and import.<br />

To test a ViewSet, from the Publish ViewSet Wizard click the Test ViewSet button. The<br />

Test ViewSet GUI displays.<br />

The Test ViewSet GUI provides you with a way to test the ViewSet to see how it appears and<br />

functions, just as it would in the <strong>MKS</strong> <strong>Integrity</strong> Client; however, the Test ViewSet GUI has the<br />

following restrictions:<br />

You can only test one ViewSet at a time.<br />

You can only customize the ViewSet, not perform other ViewSet modifications.<br />

You cannot perform any client customization. For example, there is no preference<br />

editing or integration editing.<br />

You cannot save changes you make to the open ViewSets<br />

Part of testing how a ViewSet appears to users is viewing the Customize ViewSet dialog box.<br />

It is the same dialog box that users see and use from the <strong>MKS</strong> <strong>Integrity</strong> Client. This can be<br />

useful to ensure that the correct editability settings have been specified for ViewSet actions<br />

and action groups. For information on customizing the ViewSet, see <strong>MKS</strong> <strong>Integrity</strong> Client <strong>2009</strong><br />

Getting Started <strong>Guide</strong>.<br />

Mandatory ViewSets<br />

In combination with permissions for which users are able to download and edit specific<br />

ViewSets (see “ViewSet Permissions” on page 66), you can ensure that the specified users get<br />

the ViewSets by configuring them to be mandatory.<br />

Mandatory ViewSets bypass the user acceptance process for downloading new (or updated)<br />

ViewSets from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (see the <strong>MKS</strong> <strong>Integrity</strong> Client <strong>2009</strong> Getting Started<br />

<strong>Guide</strong> for information on the user acceptance process). Instead, mandatory ViewSets are<br />

automatically downloaded and imported into each user’s client at the time the <strong>MKS</strong> <strong>Integrity</strong><br />

Client connects to the server. Users are not notified that the mandatory ViewSet has been<br />

61


Chapter 3: ViewSets<br />

62<br />

imported or updated and are not able to refuse the new or updated ViewSet. Once installed,<br />

mandatory ViewSets are automatically opened in the <strong>MKS</strong> <strong>Integrity</strong> Client and their actions<br />

and actions groups cannot be customized.<br />

Mandatory ViewSets, in combination with ViewSet permissions, provide your organization<br />

with another key component to producing a consistent process across or within groups.<br />

IMPORTANT Only published ViewSets can be specified as mandatory.<br />

You can specify if a ViewSet is mandatory in the following operations:<br />

“Editing ViewSet Attributes” on page 63<br />

“Publishing ViewSets” on page 59<br />

Key Considerations<br />

Users are not notified that a mandatory ViewSet has been updated and cannot refuse (or<br />

observe) its import.<br />

Mandatory ViewSets display Mandatory in parenthesis in the <strong>MKS</strong> <strong>Integrity</strong> Client title<br />

bar.<br />

Users cannot close mandatory ViewSets.<br />

Users can delete mandatory ViewSets, but the ViewSets are imported and opened the<br />

next time the <strong>MKS</strong> <strong>Integrity</strong> Client is run.<br />

Updated mandatory ViewSets are only opened the next time the <strong>MKS</strong> <strong>Integrity</strong> Client is<br />

run.<br />

Users may extensively customize optional ViewSets stored in their clients. If you<br />

configure the corresponding published (server) Viewset to be mandatory, all of the users<br />

customizations are silently lost.<br />

Mandatory ViewSets are intended to be an enforcement mechanism to provide uniform<br />

use of a ViewSet by users. They are not intended to be a ViewSet distribution mechanism<br />

only.<br />

Administering Published ViewSets<br />

Published ViewSets have properties and capabilities that personal and unpublished<br />

ViewSets do not. The subsequent sections provide information on administering published<br />

ViewSets


Published ViewSet Properties<br />

Administering Published ViewSets<br />

You can configure properties for published ViewSets, such as attributes and permissions.<br />

<strong>MKS</strong> <strong>Integrity</strong> provides a way to view and edit the properties of published ViewSets without<br />

having to create a local unpublished ViewSet duplicate.<br />

Viewing ViewSet Properties<br />

You can view the attributes and permissions of ViewSets residing on the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>. To edit ViewSet attributes and permissions, see “Editing ViewSet Attributes” on<br />

page 63.<br />

TIP You can also view (but not edit) attributes of personal and unpublished<br />

ViewSets.<br />

To view ViewSet properties using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

1 From the ViewSets view (see “Viewing ViewSets” on page 51), select the ViewSet you<br />

want to view properties for.<br />

2 Select ViewSet > View ViewSet Properties. The ViewSet dialog box<br />

displays, where is the name of the ViewSet you are viewing properties<br />

for. For information on the fields displayed on the Attributes panel, see the table in<br />

“Viewing ViewSets” on page 51.<br />

To view user and group permissions for the ViewSet, click the Permissions tab. For<br />

information on using the Permissions tab, see “ViewSet Permissions” on page 66.<br />

Editing ViewSet Attributes<br />

You can edit the attributes for ViewSets located on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Editing<br />

published ViewSet attributes (through editing properties) does not require a local<br />

unpublished ViewSet duplicate.<br />

TIP You can also edit ViewSet attributes when publishing a ViewSet (see<br />

“Publishing ViewSets” on page 59).<br />

From the ViewSets view (see “Viewing ViewSets” on page 51), select the ViewSet you want<br />

to edit attributes for. Select ViewSet > Edit ViewSet Properties. The Edit ViewSet Properties<br />

dialog box displays. Click the Attributes tab.<br />

For information on using the Permissions tab, see “ViewSet Permissions” on page 66.<br />

63


Chapter 3: ViewSets<br />

64<br />

The following attributes are editable:<br />

Attribute Description<br />

Name Contains the name for the ViewSet. ViewSet names are not required to be<br />

unique. <strong>MKS</strong> <strong>Integrity</strong> tracks the ViewSet independently of the name you assign<br />

it. However, no two published ViewSets on the same server may have the same<br />

name.<br />

Description Contains an optional description for a ViewSet. For example, tell users why and<br />

how they should use the ViewSet.<br />

Optional Specifies that the ViewSet is optional to users. Users who have permission to<br />

import the ViewSet may do so at their discretion, but they are not required to do<br />

so. When importing ViewSets, users can see if a change to this ViewSet is<br />

made and then can choose to import the updated ViewSet.<br />

Mandatory Specifies that the ViewSet is mandatory to users who have permission to import<br />

it. Users do not have a choice if the ViewSet is imported. Instead, the ViewSet is<br />

automatically downloaded and installed for the user when the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> connects to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client. For more<br />

information, see “Mandatory ViewSets” on page 61.<br />

Customizable Specifies if users can customize the ViewSet. Users cannot customize<br />

mandatory ViewSets.<br />

Fetching Published ViewSets<br />

To customize (edit) a published ViewSet, you must download it from the server to the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, and save it as an unpublished ViewSet (see “ViewSet<br />

Types and Locations” on page 52). Editing a ViewSet (see “Editing ViewSets” on page 54)<br />

automates that process for you. However, you can manually fetch the published ViewSet<br />

without editing by creating a local duplicate (as an unpublished ViewSet) to be modified at a<br />

later date.<br />

To fetch a published ViewSet using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

1 From the ViewSets view (see “Viewing ViewSets” on page 51), select the published<br />

ViewSet you want to fetch.<br />

2 Select ViewSet > Fetch ViewSet. The selected published ViewSet is fetched to the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, and it appears in the ViewSets view as an<br />

unpublished ViewSet.<br />

Updating Published ViewSets<br />

ViewSets stored on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (available for users to download and import<br />

into their <strong>MKS</strong> <strong>Integrity</strong> Clients) can be modified and updated as needed. The following<br />

diagram illustrates the process of updating a <strong>Server</strong> ViewSet.


Edit <strong>Server</strong><br />

ViewSet<br />

Need to modify a<br />

<strong>Server</strong> ViewSet<br />

Creates<br />

Unpublished ViewSet<br />

Copy<br />

Publish ViewSet<br />

<strong>Server</strong> ViewSet<br />

Updated<br />

Fetch <strong>Server</strong><br />

ViewSet<br />

1 Identify a need to modify a published ViewSet.<br />

Administering Published ViewSets<br />

2 To update a published ViewSet, get an unpublished ViewSet duplicate of the published<br />

ViewSet (see “ViewSet Types and Locations” on page 52).<br />

You can get the unpublished ViewSet duplicate by editing the published ViewSet (see<br />

“Editing ViewSets” on page 54) or by fetching the ViewSet (see “Fetching Published<br />

ViewSets” on page 64).<br />

ViewSets can then be modified by editing or by making changes through the<br />

Publish ViewSet wizard.<br />

3 Publish your modified ViewSet back to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (see “Publishing<br />

ViewSets” on page 59). The published ViewSet is updated by the publish operation, and<br />

users are then able to download and import it.<br />

IMPORTANT <strong>MKS</strong> <strong>Integrity</strong> tracks the ViewSet independently of the name you assign<br />

it. Even if you rename a ViewSet, that same ViewSet is updated (overwritten) when<br />

you publish it again. If you want to retain the original, create and edit a copy of the<br />

ViewSet instead (see “Copying ViewSets” on page 55).<br />

65


Chapter 3: ViewSets<br />

ViewSet Permissions<br />

66<br />

There are two kinds of permissions that govern ViewSets. ACL permissions regulate the<br />

publishing of ViewSets for the first time. Non-ACL permissions regulate if users can edit or<br />

publish a published ViewSet.<br />

IMPORTANT Users with Admin, Admin<strong>Server</strong>, and Debug<strong>Server</strong> permissions can<br />

modify, edit, and publish ViewSets without the required permissions documented<br />

in the later sections.<br />

Permission to Publish ViewSets<br />

To publish an unpublished ViewSet to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, you need to have the<br />

PublishNewViewSet ACL permission assigned to you or your group. To set the permission,<br />

from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client select the ViewSet Distribution > Permissions<br />

node, then highlight Global. The display pane then shows the global permission information<br />

for the mks:system:viewsets ACL. The default ACL entry is a group named everyone.<br />

ACL entries consist of principals and permissions.<br />

For more information on ACL principals and permissions, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

Published ViewSet Permissions<br />

ViewSet permissions control how users interact with the ViewSet. The permissions can be<br />

modified from the Permissions tab on the Edit ViewSet Properties dialog box (see “Editing<br />

ViewSet Attributes” on page 63) or from the Publish ViewSet Wizard (see “Publishing<br />

ViewSets” on page 59). To view permissions without editing them, see “Viewing ViewSet<br />

Properties” on page 63.<br />

NOTE The published ViewSet permissions are unrelated to ACL permissions.<br />

The following are available permission settings:<br />

Users specifies the users (and groups) permitted to import the ViewSet from the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Only users specified in this field see the ViewSet as available for<br />

import. However, there is no requirement for users to import the ViewSet if it is not<br />

mandatory. To make a ViewSet mandatory for users, see “Mandatory ViewSets” on<br />

page 61.<br />

Administrators specifies the users permitted to edit the ViewSet, as well as to publish the<br />

changed ViewSet back to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.


ViewSets FAQ<br />

For information on filtering data (in this case users and groups) see “Filtering Data” on<br />

page 18.<br />

ViewSets FAQ<br />

The following are frequently asked questions (FAQ) for ViewSets:<br />

Q. Why do I not see the ViewSets view?<br />

A: To see the ViewSets view, you need the PublishNewViewSet permission or a<br />

permission to modify any server (published) ViewSet. See “ViewSet Permissions” on<br />

page 66.<br />

Q. How can I move a ViewSet from one server to another server?<br />

A: Connect to the first server, and display the ViewSets view. Fetch the ViewSet from that<br />

server (see “Fetching Published ViewSets” on page 64). Then connect to the second<br />

server (displaying the ViewSets view for that server) and publish the ViewSet to that<br />

server (see “Publishing ViewSets” on page 59).<br />

Q. I have a client ViewSet, but I do not see it in my ViewSets view. Why?<br />

A: Ensure that the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client you are using to display the<br />

ViewSets view is located on the same machine as the <strong>MKS</strong> <strong>Integrity</strong> Client you used to<br />

create the client ViewSet.<br />

Q. Because I am always working with an unpublished ViewSet duplicate of the published ViewSet,<br />

how then can I rename the published ViewSet?<br />

A: <strong>MKS</strong> <strong>Integrity</strong> tracks the ViewSet independently of the name you assign it. Even if you<br />

rename a ViewSet, that same ViewSet is updated (overwritten) when you publish it<br />

again. You can rename a published ViewSet by editing its properties (see “Editing<br />

ViewSet Attributes” on page 63).<br />

Q. I renamed my unpublished ViewSet and then published it back to the server, hoping it would be<br />

treated as a new ViewSet with a different name. Why did it overwrite my old ViewSet that had<br />

the original name?<br />

A: <strong>MKS</strong> <strong>Integrity</strong> tracks the ViewSet independently of the name you assign it. Even if you<br />

rename a ViewSet, that same ViewSet is updated (overwritten) when you publish it<br />

again. Instead of renaming a ViewSet, create a copy of ViewSet instead (see “Copying<br />

ViewSets” on page 55).<br />

67


Chapter 3: ViewSets<br />

68<br />

Q. I edited a published ViewSet, and now I have an unpublished ViewSet by the same name. Why is<br />

it there?<br />

A: Editing a ViewSet requires a local duplicate of the ViewSet in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client. The unpublished ViewSet is that local duplicate, and it must be<br />

published back to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> for your changes to be available to users.<br />

Q. I published my unpublished ViewSet and the unpublished ViewSet disappeared. Where did it go?<br />

A: The unpublished ViewSet is considered unnecessary once a ViewSet is published to the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. You can get an unpublished ViewSet duplicate again by editing or<br />

fetching the ViewSet (see “Editing ViewSets” on page 54 or “Fetching Published<br />

ViewSets” on page 64).<br />

Q. Why are users reporting that ViewSets I published are automatically imported into their<br />

<strong>MKS</strong> <strong>Integrity</strong> Clients?<br />

A: You have set the ViewSets to be mandatory (see “Mandatory ViewSets” on page 61).<br />

Q. Why can I edit but not publish a particular ViewSet?<br />

A: You do not have permission to publish that ViewSet. An administrator who does have<br />

permission to publish that ViewSet must assign you permission (see “ViewSet<br />

Permissions” on page 66).<br />

Q. Users lost their custom changes to their ViewSets. Why?<br />

A: Check to see if you configured the ViewSet to be mandatory. See “Mandatory ViewSets”<br />

on page 61.<br />

Q. I logged into the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client on a different machine, and my<br />

unpublished ViewSets were gone. Where did they go?<br />

A: Unpublished ViewSets are only stored locally on the same machine they were created<br />

on. You must publish the ViewSet to edit (customize) it on a different machine.


C HAPTER FOUR<br />

Workflow Management<br />

Creating Workflow to Manage Change<br />

Every item type follows a workflow, which is followed by every item of that type.<br />

Workflow is the process established by an administrator to capture and track<br />

information and steps during your software development cycle.<br />

4<br />

Each item type has its own set of states to advance through the development cycles. For<br />

example, a change request might go through the states: submitted, work started, tested,<br />

reviewed, and closed.<br />

States can also be shared across several workflows. Items and their current states<br />

provide change management information necessary to support business decisions.<br />

This chapter contains the following topics:<br />

“Assessing Your Current Product Development Process” on page 70<br />

“Assigning Administrators for <strong>MKS</strong> <strong>Integrity</strong>” on page 74<br />

“States” on page 77<br />

“Types” on page 82<br />

“Fields” on page 121<br />

“Workflows” on page 152<br />

“Considerations When Modifying Visibility, Editability, and Types” on page 178<br />

“Deleting Admin Provided Objects and Items” on page 179<br />

“Setting Up E-mail Notification” on page 180<br />

Where to Go Next<br />

The following table summarizes the steps you should follow to set up a workflow<br />

69


Chapter 4: Workflow Management<br />

Assessing Your Current Product Development<br />

Process<br />

70<br />

To Do This … See …<br />

Manage states, including creating and editing<br />

states.<br />

Manage types, including creating and editing<br />

types.<br />

Set up a document model with types and<br />

attributes<br />

Manage fields, including creating and editing<br />

fields.<br />

Manage field relationships, including creating,<br />

editing, and deleting field relationships.<br />

Design a workflow, including creating, managing,<br />

and printing a workflow.<br />

Understand the considerations for modifying<br />

visibility rules, editability rules, and types.<br />

Creating and testing your workflow using the<br />

Admin Migration Wizard.<br />

This assessment involves no direct interaction with the software. Instead, you need to spend<br />

some time evaluating the product development process currently followed in your<br />

organization and map it out so you can customize your project for workflows and documents<br />

to suit your needs.<br />

This may take longer for some than for others. But the purpose of the assessment is to avoid<br />

the time-consuming task of redesigning a project that was not well-planned in the first place.<br />

When undertaking this assessment, you should focus on these areas:<br />

your workflow and project state transitions<br />

your current tracking mechanism<br />

the scope of implementation within your organization<br />

the relevant teams and user groups<br />

“States” on page 77<br />

“Types” on page 82<br />

“Setting Up Documents” on page 97<br />

“Fields” on page 121<br />

“Managing Field Relationships” on page 143<br />

“Workflows” on page 152<br />

“Considerations When Modifying Visibility,<br />

Editability, and Types” on page 178<br />

“Testing Workflow With Admin Migration Wizard”<br />

on page 161


Assessing Your Current Product Development Process<br />

To assess your workflow and project state transitions, consider the following<br />

questions<br />

1 What project states (or stages) are followed from the inception of a project to its<br />

completion?<br />

conceptualization<br />

design<br />

development<br />

review<br />

testing<br />

production<br />

2 Are approvals considered as separate stages or are they a prerequisite for moving to the<br />

next stage?<br />

Define a sequential state model for your projects.<br />

3 Does the workflow follow in sequence from one state to the next, or are there provisions<br />

for repeating certain steps?<br />

Consider the state transitions in your workflow.<br />

4 Is the workflow the same for each type of project?<br />

one workflow is used<br />

one workflow is used for each item type<br />

workflow depends on the urgency of the work<br />

In <strong>MKS</strong> <strong>Integrity</strong>, you may define a workflow for each item type.<br />

To assess your current tracking mechanism, consider the following questions<br />

1 How do you currently log defects and enhancements?<br />

manually, using forms<br />

in-house database<br />

no current method<br />

other tracking product<br />

Think about what items you want to track.<br />

71


Chapter 4: Workflow Management<br />

72<br />

2 Who assigns work?<br />

team leader<br />

self<br />

Do you want only team leaders to assign the work, or can anyone assign the work?<br />

3 How are developers notified of work assigned to them?<br />

meetings, verbally<br />

e-mail from team leader, other team members<br />

through an in-house defect tracking system<br />

4 How do developers indicate their work is complete?<br />

through their configuration management / revision control system<br />

by e-mail<br />

combination of the preceding options<br />

through an in-house defect tracking system<br />

Users can promote items to states defined in the workflow.<br />

5 Who do developers notify when their work is complete?<br />

team leader only<br />

team leader and the submitter of the item<br />

the developers who are responsible for the function or module<br />

Users can also use the e-mail notification option.<br />

To assess the scope of implementation, consider the following questions<br />

1 Is <strong>MKS</strong> <strong>Integrity</strong> to be used in different areas of your organization?<br />

in development<br />

development and client services (including technical support)<br />

marketing<br />

Define the tracking objectives for each group.<br />

2 Is the workflow the same for each group?<br />

one workflow is used<br />

one workflow is used for each item type<br />

workflow depends on the urgency of the work<br />

In <strong>MKS</strong> <strong>Integrity</strong>, you may define a workflow for each item type.


Assessing Your Current Product Development Process<br />

To assess your teams and user groups, consider the following questions<br />

1 Which groups are currently involved in your tracking process?<br />

Are those groups to use workflows and documents?<br />

2 Can you predict requiring different privileges for users in these groups?<br />

everyone is required to administer the project for workflows and documents<br />

one administrator, with the rest of the team having a subset of the administrator’s<br />

privileges<br />

What workflow and document privileges do you grant to your users?<br />

3 What are the user groups you can identify?<br />

workflow and document users<br />

developers<br />

contractors<br />

testers/QA<br />

other<br />

You may use these groups to start defining user groups in <strong>MKS</strong> <strong>Integrity</strong>.<br />

4 Are your user groups defined by team, or do some user groups include members from<br />

different teams?<br />

Is your user groups to be defined by your organization structure, or by process?<br />

With your assessment answers in hand, you can now proceed to customizing your<br />

installation, described in the next section. As you go, you can refer to your assessment of<br />

your current tracking mechanism, your teams and user groups, and your scope of<br />

implementation.<br />

Working With <strong>MKS</strong> <strong>Integrity</strong><br />

Consider the following when setting up your admin provided objects in <strong>MKS</strong> <strong>Integrity</strong>:<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client does not lock admin provided objects, making<br />

it possible for two or more administrators to edit a common object at the same time. The<br />

final state of the option is the state set by the administrator who last saved the option.<br />

For example, if two administrators are creating workflows at the same time, only the last<br />

saved workflow takes effect. This behavior should be considered if you assign multiple<br />

administrators for <strong>MKS</strong> <strong>Integrity</strong>. For more information on the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client, see “Introduction” on page 10.<br />

If your <strong>MKS</strong> <strong>Integrity</strong> system is using a DB2 database for System i, read/write<br />

operations to the database table must be synchronized. Therefore, administration work<br />

73


Chapter 4: Workflow Management<br />

74<br />

that affects the database should be performed only when the system is not in use by<br />

other users.<br />

Assigning Administrators for <strong>MKS</strong> <strong>Integrity</strong><br />

For <strong>MKS</strong> <strong>Integrity</strong>, the person who sets up and configures <strong>MKS</strong> <strong>Integrity</strong> is referred to as the<br />

super administrator. The super administrator can also delegate certain tasks related to projects<br />

for workflows and documents and types to a project administrator and type administrator.<br />

As the super administrator responsible for setting up <strong>MKS</strong> <strong>Integrity</strong>, you have access to all<br />

admin provided objects. For day-to-day management, once <strong>MKS</strong> <strong>Integrity</strong> is configured you<br />

may want to delegate a subset of administrative responsibilities by allowing certain users to<br />

manage projects and types. <strong>MKS</strong> <strong>Integrity</strong> allows you to limit access to these two key<br />

workflow and document objects and, in this way, delegate responsibilities for the associated<br />

management tasks.<br />

You can delegate certain administrative tasks by assigning project administrators and type<br />

administrators. You assign an <strong>MKS</strong> <strong>Integrity</strong> project administrator through the Create Project<br />

or Edit Project function. You assign an <strong>MKS</strong> <strong>Integrity</strong> type administrator using the Create<br />

Type or Edit Type function. For more information on project administrators, see “Assigning<br />

<strong>MKS</strong> <strong>Integrity</strong> Project Administrator” on page 260. For more information on type<br />

administrators, see “Assigning Type Administrator” on page 94.<br />

<strong>MKS</strong> <strong>Integrity</strong> then limits access according to the specific projects and types you have<br />

assigned the administrators to. The following table summarizes the functionality available to<br />

the <strong>MKS</strong> <strong>Integrity</strong> super administrator, project administrator, and type administrator:<br />

Workflow and<br />

Document Object<br />

Super Administrator Project Administrator Type Administrator<br />

Users Create<br />

Edit<br />

View<br />

Delete<br />

Import<br />

View View<br />

Groups Create<br />

Edit<br />

View<br />

Delete<br />

Import<br />

View View


Workflow and<br />

Document Object<br />

Dynamic Groups Create<br />

Edit<br />

View<br />

Delete<br />

Edit project membership<br />

Projects Create<br />

Edit<br />

View<br />

Delete<br />

Assign project or type<br />

administrators<br />

States Create<br />

Edit<br />

View<br />

Delete<br />

Type Overrides<br />

Types Create<br />

Edit<br />

View<br />

Delete<br />

Create/edit presentation<br />

templates<br />

Assign project or type<br />

administrators<br />

Fields Create<br />

Edit<br />

View<br />

Type Overrides<br />

Triggers Create<br />

Edit<br />

View<br />

Delete<br />

Admin Charts Create<br />

Edit<br />

View<br />

Delete<br />

Assigning Administrators for <strong>MKS</strong> <strong>Integrity</strong><br />

Super Administrator Project Administrator Type Administrator<br />

View<br />

Edit project membership<br />

Create subprojects a<br />

Edit<br />

View<br />

Delete subprojects1 View<br />

View<br />

No access Create<br />

Edit b<br />

View<br />

Delete2 Type Overridesc No access Edit<br />

View<br />

Create/edit<br />

presentation<br />

templates<br />

No access Create<br />

Edit 2<br />

View<br />

Type Overrides 3<br />

No access No access<br />

No access No access<br />

75


Chapter 4: Workflow Management<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Permissions<br />

76<br />

Workflow and<br />

Document Object<br />

Admin Dashboards<br />

Create<br />

Edit<br />

View<br />

Delete<br />

Admin Queries Create<br />

Edit<br />

View<br />

Delete<br />

Admin Reports Create<br />

Edit<br />

View<br />

Delete<br />

Super Administrator Project Administrator Type Administrator<br />

No access No access<br />

No access No access<br />

No access No access<br />

a Project administrators can only create and delete subprojects. They cannot create top level projects.<br />

b<br />

Type administrators can only delete/modify a field or state if they are an administrator of all types that refer to it.<br />

c<br />

Type administrators can only modify the overrides for the type they administer. Other overrides for the field cannot be<br />

modified.<br />

The <strong>MKS</strong> <strong>Integrity</strong> super administrator is set by allowing the Admin permission under the<br />

mks:im ACL. Any user granted the Admin permission has access to all workflow and<br />

document admin provided objects, including users, groups, dynamic groups, projects, states,<br />

types, fields, and triggers. Project and type administrators are not granted the Admin<br />

permission, and <strong>MKS</strong> <strong>Integrity</strong> limits their access to the specific projects and types they are<br />

assigned to.<br />

As super administrator, you can extend the capability of a project or type administrator by<br />

granting certain ACL permissions. The following ACL permissions extend the capability of<br />

the assigned administrator:<br />

The CreateProject permission allows the user to create a new top level project for<br />

workflows and documents and allows the project administrator to assign another<br />

<strong>MKS</strong> <strong>Integrity</strong> project administrator.<br />

The CreateType permission allows the user to create a new type and allows the type<br />

administrator to assign another type administrator.<br />

NOTE For more information on setting ACL permissions in <strong>MKS</strong> <strong>Integrity</strong>, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.


Assigning Administrators Using Command Line Interface<br />

States<br />

Functionality for assigning <strong>MKS</strong> <strong>Integrity</strong> project and type administrators is also available<br />

through the CLI using commands createProject, editProject, createType, and<br />

editType.<br />

To assign a project administrator from the CLI, use the createProject or editProject<br />

commands with the --permittedAdministrators option. Similarly, to assign a type<br />

administrator, use the createType or editType commands with the<br />

--permittedAdministrators option. For more information on these commands, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> <strong>Administration</strong> CLI Reference <strong>Guide</strong>.<br />

States<br />

In <strong>MKS</strong> <strong>Integrity</strong>, item types can each have their own set of states to advance through. They<br />

can also follow a state model defined by the project administrator, giving greater control over<br />

who has access to a specific item type at a given time, as well as who has responsibility for<br />

approving the advancement of the state.<br />

Throughout the development lifecycle, items submitted in <strong>MKS</strong> <strong>Integrity</strong> go through a<br />

workflow. You can customize the workflow and the stage the item is in. These stages are<br />

called states in <strong>MKS</strong> <strong>Integrity</strong>. For example, your process may include resource allocation,<br />

research, coding, and testing, or your process can be more elaborate.<br />

Example<br />

Possible states for a typical development environment are Submitted, In Review, Rejected,<br />

In Development, Unit Test, Development Done, Built, In QA, Passed, Failed, In Production,<br />

and Released.<br />

Key Considerations<br />

You can only create one state at a time.<br />

States can be referenced by more than one workflow. For example, you could set the<br />

Submit state as the starting step for all your workflows.<br />

Working in States View<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage states from one convenient<br />

location. Managing states is carried out through the States view.<br />

CLI EQUIVALENT im states<br />

77


Chapter 4: Workflow Management<br />

78<br />

To open the States view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

Workflows and Documents node, and select States. The States view displays.<br />

By default, the data filter in the States view displays all existing states. You can search for a<br />

specific state by typing in the text filter. For more information, see “Filtering Data” on<br />

page 18.<br />

Throughout your development lifecycle, items submitted in <strong>MKS</strong> <strong>Integrity</strong> go through a<br />

workflow. You can customize the workflow and the stage the item is in. These stages are<br />

called states in <strong>MKS</strong> <strong>Integrity</strong>. For example, your process may include resource allocation,<br />

research, coding, and testing, or your process can be more complex.<br />

Available Menu Commands for States<br />

Through the States view, you can:<br />

edit the details for existing states<br />

view the details for existing states<br />

delete states<br />

Creating States<br />

create a new state for use in your workflow<br />

reposition or change the sequence for an existing state in the workflow<br />

Any changes you make in the States view have an immediate effect on your <strong>MKS</strong> <strong>Integrity</strong><br />

database.<br />

You can create states for use in an item type’s workflow. You can only create one state at a<br />

time.<br />

To create a state in the GUI<br />

CLI EQUIVALENT im createstate<br />

1 From the States view (see “States” on page 77), select State > Create. The Create State<br />

dialog box displays.<br />

2 In the Name field, type a name for the state. This is the name the state is referred to in<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

3 Under the Description tab, type a more detailed textual description of the state, such as<br />

the state’s meaning in your workflow. To do this, click the Description tab.<br />

4 Under the Position tab, specify where the new state displays in the State list within an<br />

item. Use the Move Up and Move Down buttons to change the position of the new state.


States<br />

5 Under the Image tab, associate a custom icon image with the state. To do this, select Use<br />

Custom Image, and click Select to browse for the image file. To have no image associated<br />

with the type, select No Image.<br />

If you choose to use your own custom icon image, the image must be in GIF or JPEG<br />

format, and no larger than 24 by 16 pixels.<br />

6 Under the Capabilities tab, define state-based capabilities. In <strong>MKS</strong> <strong>Integrity</strong>, state based<br />

capabilities allow change packages that are under review or change packages that are<br />

open to exist while an item is in a given state. For more information on the change<br />

package review and approval process, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

If the item state does not allow open change packages, <strong>MKS</strong> <strong>Integrity</strong> prompts users to<br />

close the item’s change package before they move any item to that state. In addition, if an<br />

item state does not allow open change packages, users cannot create new change<br />

packages for any items in that state.<br />

To define a state-based capability, do one of the following:<br />

To display only enabled state-based capabilities, from the Filter list select<br />

.<br />

To display all available state-based capabilities, from the Filter list select .<br />

To display only the state-based capabilities related to workflows and documents,<br />

select <strong>MKS</strong> <strong>Integrity</strong>. Then to allow time entries in the selected state, enable the<br />

Allows time entry in this state option. For more information on creating, editing,<br />

viewing, and deleting time entries, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

To display only the state-based capabilities related to configuration management,<br />

select <strong>MKS</strong> Source. Then select one or more of the following capabilities:<br />

To allow change packages under review in the selected state, enable the Allows<br />

SI change packages under review to exist in this state option.<br />

To allow open change packages in the selected state, enable the Allows open SI<br />

change packages to exist option.<br />

To display only the state-based capabilities related to test management, select <strong>MKS</strong><br />

Test. To allow test results to be created and modified when a test session item is in<br />

the selected state, enable Allow test results to be created and modified in this state.<br />

For more information on using <strong>MKS</strong> <strong>Integrity</strong> to create and edit test results, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

NOTE If you are using the Implementer integration with <strong>MKS</strong> <strong>Integrity</strong>, additional<br />

state-based capabilities are available.<br />

7 When you are finished setting the properties, click OK.<br />

79


Chapter 4: Workflow Management<br />

Editing States<br />

Viewing States<br />

80<br />

You can edit state details, but you can only edit one state at a time. You cannot edit the<br />

Unspecified state; you can only view it.<br />

To edit a state in the GUI<br />

CLI EQUIVALENT im editstate<br />

1 From the States view (see “States” on page 77), select the state you want to edit.<br />

2 Select State > Edit. The Edit State dialog box displays.<br />

3 Edit the information as required. For more information about the fields that display in<br />

this dialog box, see “To create a state in the GUI” on page 78.<br />

4 To determine which states are referenced by any given type, click the Usage tab for the<br />

state in question.<br />

The Usage panel shows what types refer to the state and what attributes have been<br />

overridden for that type.<br />

5 To determine all objects that reference the state, click the References tab. For information<br />

on the contents of the tab, see “To manage admin provided objects in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client” on page 244.<br />

6 To view a history of administrative changes for the selected state, click the History tab.<br />

The record of changes displays.<br />

7 To save your changes, click OK.<br />

You can view detailed information for existing states. You cannot edit any of the details, and<br />

you can only view the details for one state at a time.<br />

To view a state in the GUI<br />

CLI EQUIVALENT im viewstate<br />

1 From the States view (see “States” on page 77), select the state you want to view.<br />

2 Select State > View. The View State dialog box displays. For more information about the<br />

fields in this dialog box, see “To create a state in the GUI” on page 78.<br />

TIP You can double click a state in the States view to view it.


Deleting States<br />

Moving States<br />

3 To determine which states are referenced by any given type, click the Usage tab for the<br />

state in question.<br />

The Usage panel shows what types refer to the state and what attributes have been<br />

overridden for that type.<br />

States<br />

4 To determine all objects that reference the state, click the References tab. For information<br />

on the contents of the tab, see “To manage admin provided objects in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client” on page 244.<br />

5 To view a history of administrative changes for the selected state, click the History tab.<br />

The record of changes displays.<br />

6 When you are finished viewing, click Close.<br />

You can only delete a state if it is unreferenced, that is, if no one has used this state in any<br />

item.<br />

To delete a state in the GUI<br />

CLI EQUIVALENT im deletestate<br />

1 From the States view (see “States” on page 77), select the state(s) you want to delete.<br />

2 Select State > Delete. A confirmation dialog box displays.<br />

3 To confirm the deletion, click Yes.<br />

You can customize the order the states display in. The order in the Reposition States dialog<br />

box is also the order used in <strong>MKS</strong> <strong>Integrity</strong>.<br />

To change the order of the states in the GUI<br />

CLI EQUIVALENT im editstate<br />

1 From the States view (see “States” on page 77), select State > Reposition. The Reposition<br />

States dialog box displays.<br />

2 Select the state you want to move, and use Move Up or Move Down buttons to change its<br />

position.<br />

3 Click OK.<br />

81


Chapter 4: Workflow Management<br />

State Metrics<br />

Types<br />

82<br />

In addition to recording information in fields, <strong>MKS</strong> <strong>Integrity</strong> can also perform arithmetic<br />

operations between fields, storing the result as a read-only value in an item’s computed field,<br />

or displaying it as a value when you run a chart or report. Using external information<br />

functions in computed fields, you can generate state metrics. State metrics are useful for<br />

determining item responsiveness and workflow progression. For example, you could use the<br />

DaysInState(state-name) function in a computed expression to calculate how many days a<br />

Defect item was in state In Development. The computed value is then stored in the<br />

computed field. For more information on state metrics, see “Using Computed Fields to<br />

Calculate State Metrics” on page 319.<br />

In <strong>MKS</strong> <strong>Integrity</strong>, a type represents a category of items that share a specific development cycle<br />

or workflow. Individual types are required whenever an independent workflow is needed.<br />

As part of creating a customized workflow, type permissions allow you to control more<br />

precisely which users can work with an item according to the type the item is associated<br />

with. Type permissions allow you to create a unique set of permissions for a specified type,<br />

allowing the membership of the group to change based on the value of the type identifier.<br />

When you create a new type, visibility is allowed to the everyone group by default (that is,<br />

all users can see the new type). You can later restrict visibility as required.<br />

When creating a type in <strong>MKS</strong> <strong>Integrity</strong>, you can also designate users or groups as<br />

<strong>MKS</strong> <strong>Integrity</strong> type administrators for that type. For more information on type<br />

administrators, see “Assigning Type Administrator” on page 94.<br />

Example<br />

In a software development environment, a request for a new software feature may follow one<br />

workflow, while work to fix a defect may follow a different workflow. In such a scenario, the<br />

administrator creates two distinct types: Feature Request and Defect.<br />

Key Considerations<br />

Individual types are required whenever an independent workflow is needed.<br />

Type permissions allow you to create a unique set of permissions for a specified type.<br />

The super administrator can designate users or groups as <strong>MKS</strong> <strong>Integrity</strong> type<br />

administrators for a given type.<br />

Type properties are used to define solution-specific ViewSets that licenses are required<br />

for.


Requirements management and test management utilize specific document item types<br />

that control the behavior of documents and promote reuse and versioning. To learn<br />

about document types, including how to manage and create them, see “Setting Up<br />

Documents” on page 97.<br />

Working in Types View<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage types from one convenient<br />

location. Managing types is carried out through the Types view.<br />

CLI EQUIVALENT im types<br />

To open the Types view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

Workflows and Documents node, and select Types. The Types view displays.<br />

By default, the data filter in the Types view displays all existing types. You can search for a<br />

specific type by typing in the text filter. For more information, see “Filtering Data” on<br />

page 18.<br />

You can categorize items into various types, for example, problems, proposals, solutions, or<br />

requests for change.<br />

Any changes you make in the Types view have an immediate effect on your <strong>MKS</strong> <strong>Integrity</strong><br />

database. From the Types view you can access other type-related functions including Field<br />

Relationships and Workflow. For more information on these functions, see “Managing Field<br />

Relationships” on page 143 and “Workflows” on page 152.<br />

Available Menu Commands for Types<br />

Through the Types view, you can:<br />

edit the details for an existing type<br />

view the details for an existing type<br />

delete a type<br />

create a new item type<br />

copy a type<br />

reposition, or change the order of presentation for a type<br />

The workflow view is used to graphically view and create a workflow for an item type. The<br />

workflow view cannot be used to import users and groups, or to create projects, types, and<br />

fields. Only one workflow for one type can be opened in the workflow view.<br />

NOTE To launch the workflow view, a user must have administrator permissions.<br />

Types<br />

83


Chapter 4: Workflow Management<br />

Creating Types<br />

84<br />

Access to workflow functionality occurs in the Workflow view, which is contained in the Edit<br />

Type dialog box.<br />

You can categorize items into various types, for example, problems, action items, bugs,<br />

proposals, solutions, or change requests. Individual types are required whenever an<br />

independent workflow is needed.<br />

When creating a type in <strong>MKS</strong> <strong>Integrity</strong>, you can also designate users or groups as<br />

<strong>MKS</strong> <strong>Integrity</strong> type administrators for that type. For more information on type<br />

administrators, see “Assigning Type Administrator” on page 94.<br />

To create a type in the GUI<br />

CLI EQUIVALENT im createtype<br />

1 From the Types view (see “Types” on page 82), select Type > Create. The Create Type<br />

dialog box displays.<br />

2 In the Name field, enter a name for the type. This is the name <strong>MKS</strong> <strong>Integrity</strong> uses to refer<br />

to the type. The Name field allows up 100 alphanumeric characters.<br />

3 Select a node to perform a task on the Type. The following nodes are available:<br />

Administrators


See “Assigning Type Administrator” on page 94.<br />

Attributes<br />

See “Configuring Type Attributes” on page 87.<br />

Properties<br />

See “Using Type Properties” on page 245.<br />

Change Packages<br />

Specify how change packages are used with the type. To allow change packages to<br />

be created for items of this type, select Allow Change Packages. Then select which<br />

users can create change packages against items of this type.<br />

If you select Anyone, any user can create a change package for the item.<br />

Types<br />

If you select a User Field, only users selected in that field on the item can create<br />

a change package.<br />

If you select a Group Field, only users who belong to groups selected in that<br />

field on the item can create a change package.<br />

If you select Groups, only users who belong to the groups selected in the list can<br />

create a change package.<br />

NOTE<br />

Custom user fields and any group fields first must be made visible for the type.<br />

Field relationships are set after Visible Fields are configured.<br />

Test Management<br />

Defines the type as part of Test Management.<br />

See “Setting the Test Management Role for Types” on page 112.<br />

Documents<br />

Define the model for item types that utilize documents.<br />

See “Setting Up Documents” on page 97.<br />

Editability<br />

See “Setting Item Editability for Types” on page 114.<br />

Field Relationships<br />

See “Managing Field Relationships” on page 143.<br />

Notification Fields<br />

Specify the notification fields you want to include in every e-mail notification<br />

related to this type. All visible fields for this item type are available. All users<br />

85


Chapter 4: Workflow Management<br />

86<br />

receive e-mail notifications with the notification fields you select, even if the fields<br />

are normally invisible to them.<br />

NOTE For the selected type, only fields visible to at least one group are listed.<br />

By default, the e-mail notifications include the item ID, type, and summary, as well<br />

as a hyperlink to the item, the date the item was edited, the user who performed the<br />

edit, and the fields that were modified.<br />

Overrides for Fields and Overrides for States<br />

The Overrides for Fields and Overrides for States nodes are type<br />

overrides and are configured as required after the type is created. For more<br />

information on type overrides for fields and states, see “Setting Type Overrides” on<br />

page 115.<br />

Permissions<br />

Specify the groups that have access to the type. In the right pane under Available<br />

Groups, select the desired groups and move them to Permitted Groups.<br />

As part of a customized workflow, type permissions allow you to control more<br />

precisely which groups can work with an item according to the type the item is<br />

associated with. Type permissions allow you to create a unique set of permissions<br />

for a specified type, allowing the membership of the group to change based on the<br />

value of the type identifier.<br />

By default, the everyone group is included in the list of Permitted Groups. This<br />

means that by default all users have access to created types in <strong>MKS</strong> <strong>Integrity</strong>. To<br />

limit access to a type, move the everyone group to the Available Groups list.<br />

Position<br />

Customize the order that types display in. The order you select is the order the type<br />

appears in the Create Item list. Use the Move Up or Move Down buttons to change the<br />

position of the new type.<br />

Copy Fields<br />

Define which fields are copied when items of this type are copied. In the Copy Fields<br />

list, select the fields to be copied. The fields must be visible to the user in both the<br />

original item and the new item in order to be copied.<br />

Visible Fields<br />

Define which fields are visible for particular groups. In the Fields list, select a field<br />

to define visibility for.<br />

CAUTION A type can contain a maximum of 1000 fields. Exceeding the maximum<br />

number of fields results in exception errors when creating, editing, or viewing the<br />

item type in the GUI.


Types<br />

In the Selected Field Is Visible For list, select the groups that can see this field. By<br />

default, the everyone group is selected. In this list, use the Select All button to select<br />

all the groups list, and use the Unselect All button to clear all the groups in the list.<br />

For more information on field visibility for types, see “Setting Field Visibility for<br />

Types” on page 120. If there are no fields defined for your installation, see “Creating<br />

Fields” on page 127.<br />

Workflow<br />

Design the workflow for the type. For more information, see “Workflows” on<br />

page 152.<br />

Presentations<br />

Customize the item presentation using the presentation template designer. For more<br />

information, see “Customizing Item Presentation” on page 188.<br />

History<br />

View a record of all changes made to the type object.<br />

References<br />

Determine all objects that reference the type. The References pane displays the<br />

following information:<br />

Object Type displays the type of object referencing the type. Possible objects<br />

include: Type (item), Field (includes computed fields, as well as editability,<br />

relevance, and visibility rules), Trigger (includes trigger and notification rules),<br />

User Notification Rule, Chart, and Query.<br />

Name displays the actual name of the object referencing the type.<br />

Creator displays the user ID that was logged as creating the object reference.<br />

NOTE Fields or states containing overrides display in the References pane regardless<br />

of whether the fields are visible or the states are included in the workflow.<br />

4 To save your settings and create the type, click OK.<br />

Configuring Type Attributes<br />

Type attributes are general configurable settings for the type such as version control, its icon<br />

image, and description.<br />

To configure type attributes in the GUI<br />

CLI EQUIVALENT im createtype or im edittype<br />

87


Chapter 4: Workflow Management<br />

88<br />

From the Create Type or Edit Type dialog box (see “Creating Types” on page 84 or “Editing<br />

Types” on page 91), in the tree pane, select Attributes. The Attributes view displays.<br />

Under General, you can permit the following:<br />

Display Workflow in Item displays the Workflow tab to the user in the Create Item, Edit<br />

Item, and Item Detail views. The tab also displays copying an item and when creating a<br />

related item. The Workflow tab contains a read-only display of the item type workflow to<br />

the user.<br />

NOTE Users in the Web interfaces do not have a client-side user preference to<br />

override the display of the Workflow tab. Users launching the GUI view from the<br />

CLI can override the display of the Workflow tab on a per command basis, if the tab<br />

is enabled for the type.<br />

To display phases in the Workflow tab, select a phase field from the Phase Field list. Only<br />

phase fields that are enabled in the Visible Fields node appear in the Phase Field list.<br />

For more information on phases, see “Phase Fields” on page 130.<br />

Under Items of this type, you can permit the following:<br />

Allow Time Tracking allows one or more users to allocate time spent working on items of<br />

this type. When enabled, a Time Entries tab displays in the Edit Item and Item Detail<br />

views. You can use time entries to develop metrics (in the form of queries, charts, and<br />

reports) that measure the amount of effort spent on projects.


NOTE<br />

To create, edit, and delete time entries on behalf of other users, the<br />

TimeTrackingAdmin ACL permission is required.<br />

The ability to create, edit, and delete time entries is governed by state-based<br />

capabilities. For more information, see “Creating States” on page 78.<br />

Types<br />

Back Projects enables the type to back a project, allowing you to create a link between an<br />

item of this type and a project in the Project field. Backing a project with an item allows<br />

you to link the current project to a specific item that stores project metadata and metrics.<br />

For more information, see “Managing Metadata for Workflow and Document Projects”<br />

on page 257.<br />

NOTE<br />

To make this option available, the Project field must be selected as a visible field<br />

for this type.<br />

If you enable the Back Projects option, creating items of this type and linking<br />

them to projects is useful only to certain users. You may want to prevent most<br />

users from being able to create items of this type, for example, you can allow only<br />

users in the ProjectManagers group to create Project items. To restrict type<br />

visibility, see “Setting Type Visibility” on page 114.<br />

May have their tree copied allows items of this type and all related items within the<br />

hierarchy to be copied. Copy tree is disabled by default and is available primarily for the<br />

use of <strong>MKS</strong> solution templates.<br />

When this option is selected, the Rule for Copy Tree button is enabled. Selecting this<br />

button displays the Edit Copy Tree Rule dialog box, which closely resembles the Item<br />

Editability dialog box.<br />

To learn more about item editability, see “Setting Item Editability for Types” on<br />

page 114. To learn more about rules, see “Defining Rules” on page 43.<br />

May be branched allows items of this type to be branched by users who have applicable<br />

project visibility based on the branching rules you set up for item types. A branch is an<br />

identical copy of the original item and is added to the project history based on a current<br />

or historical date.<br />

Branches are created when users want to begin new divergent work off of a current or<br />

historical version of an item. For more information about what is visible to the user in the<br />

<strong>MKS</strong> <strong>Integrity</strong> Client after an item is branched, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Branching is disabled by default and is available primarily for the use of <strong>MKS</strong> solution<br />

templates.<br />

When this option is selected, the Rule for Branching button is enabled. Selecting this<br />

button displays the Edit Branch Rule dialog box, which closely resembles the Item<br />

89


Chapter 4: Workflow Management<br />

90<br />

Editability dialog box. This rule allows you to define the rules for the branching specific<br />

item types for users and user groups.<br />

To learn more about item editability, see “Setting Item Editability for Types” on<br />

page 114. To learn more about rules, see “Defining Rules” on page 43.<br />

May have labels applied allows items of this type to have labels applied.<br />

Labels allow users to associate a particular point in time of an item or group of items<br />

with a name, for example, items belonging to a prior release, or those marking project<br />

milestones or document baselines. Labeling is disabled by default and is available<br />

primarily for the use of <strong>MKS</strong> solution templates.<br />

For more information about what the user sees in the <strong>MKS</strong> <strong>Integrity</strong> Client after an item<br />

is labeled, see <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

IMPORTANT You must set up a rule to enforce the permissions for labeling before<br />

you enable labels on a type.<br />

When you select this option, the Rule for Add Label and Rule for Delete Label buttons are<br />

enabled. Selecting a button displays either the Edit Label Rule or the Edit Delete Label<br />

Rule dialog box. Each closely resembles the Item Editability dialog box.<br />

To learn more about item editability, see “Setting Item Editability for Types” on<br />

page 114. To learn more about rules, see “Defining Rules” on page 43.<br />

May be deleted, controlled by rule allows items of this type to be deleted, as defined by a<br />

rule. Users or groups defined in the rule that are allowed to delete items of this type<br />

require the ModifyDeleteItemRule permission.<br />

IMPORTANT The ModifyDeleteItemRule permission differs from the<br />

DeleteItem permission, which allows users or groups to delete items of any type<br />

without a defined rule. To define strict item deletion rules in your organization,<br />

<strong>MKS</strong> recommends defining a delete item rule and assigning the<br />

ModifyDeleteItemRule permission to the appropriate users and groups.<br />

When you select this option, the Rule for Delete Item button is enabled. Selecting this<br />

button displays the Edit Delete Item Rule dialog box, which closely resembles the Item<br />

Editability dialog box. This rule allows you to define the rules for deleting specific item<br />

types for users and user groups.<br />

To learn more about deleting items, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>. To learn more<br />

about item editability, see “Setting Item Editability for Types” on page 114. To learn<br />

more about rules, see “Defining Rules” on page 43.<br />

To associate a custom icon image with the type, under Image select Use Custom Image, and<br />

browse for the image file. When you select an image for the type, it displays with the type. To<br />

have no image associated with the type, select No Image.


Editing Types<br />

Types<br />

If you choose to use your own custom icon image, the image must be in GIF or JPEG format,<br />

and no larger than 24 by 16 pixels.<br />

In the Description field, type a descriptive statement about the type if necessary.<br />

You can edit the details of an item type, but you can only edit one type at a time.<br />

To edit a type in the GUI<br />

CLI EQUIVALENT im edittype<br />

1 From the Types view (see “Types” on page 82), select the type you want to edit.<br />

2 Select Type > Edit. The Edit Type dialog box displays.<br />

3 Edit the type as required. Details on the individual nodes are provided as follows:<br />

Administrators, see “Assigning Type Administrator” on page 94.<br />

Attributes, see “To configure type attributes in the GUI” on page 87.<br />

Properties, see “Using Type Properties” on page 245.<br />

Change Packages, see “To create a type in the GUI” on page 84.<br />

Documents, see “Setting Up Documents” on page 97.<br />

Test Management, see “Setting the Test Management Role for Types” on page 112.<br />

Item Editability, see “Setting Item Editability for Types” on page 114.<br />

Field Relationships, see “Managing Field Relationships” on page 143.<br />

Notification Fields, see “To create a type in the GUI” on page 84.<br />

Overrides for Fields and Overrides for States, see “Setting Type<br />

Overrides” on page 115.<br />

Permissions, see “To create a type in the GUI” on page 84.<br />

Position, see “To create a type in the GUI” on page 84.<br />

Visible Fields, see “To create a type in the GUI” on page 84.<br />

Workflow, see “Workflows” on page 152.<br />

Presentations, see “Customizing Item Presentation” on page 188.<br />

References, see “To create a type in the GUI” on page 84.<br />

History, see “Viewing <strong>Administration</strong> History” on page 47.<br />

91


Chapter 4: Workflow Management<br />

Copying Types<br />

92<br />

4 To save your changes, click OK.<br />

You can copy a type and rename it to create a new type. Copying a type is useful for quickly<br />

creating a new type that shares common details with an existing type.<br />

When naming a copied type, you cannot use a name that already exists.<br />

To copy a type in the GUI<br />

CLI EQUIVALENT im copytype<br />

1 From the Types view (see “Types” on page 82), select the type you want to copy.<br />

2 Select Type > Copy. The Copy Type dialog box displays.<br />

3 In the Name field, type a new name for the type. This is the name <strong>MKS</strong> <strong>Integrity</strong> uses to<br />

refer to the type. The Name field allows 100 alphanumeric characters.<br />

4 Edit the type as required. Details on the individual nodes are provided as follows:<br />

Administrators, see “Assigning Type Administrator” on page 94.<br />

Attributes, see “To configure type attributes in the GUI” on page 87.<br />

Properties, see “Using Type Properties” on page 245.<br />

Change Packages, see “To create a type in the GUI” on page 84.<br />

Documents, see “Setting Up Documents” on page 97.<br />

Item Editability, see “Setting Item Editability for Types” on page 114.<br />

Field Relationships, see “Managing Field Relationships” on page 143.<br />

Notification Fields, see “To create a type in the GUI” on page 84.<br />

Overrides for Fields and Overrides for States, see “Setting Type<br />

Overrides” on page 115.<br />

Permissions, see “To create a type in the GUI” on page 84.<br />

Position, see “To create a type in the GUI” on page 84.<br />

Visible Fields, see “To create a type in the GUI” on page 84.<br />

Workflow, see “Workflows” on page 152.<br />

Presentations, see “Customizing Item Presentation” on page 188.<br />

References, “To create a type in the GUI” on page 84.<br />

History, see “Viewing <strong>Administration</strong> History” on page 47.


Viewing Types<br />

5 To save your changes, click OK.<br />

You can view the details of an item type, but you can only view the details for one type at a<br />

time.<br />

To view a type in the GUI<br />

CLI EQUIVALENT im viewtype<br />

1 From the Types view (see “Types” on page 82), select the type you want to view.<br />

2 Select Type > View Definition. The Type dialog box displays.<br />

3 Details on the individual nodes are provided as follows:<br />

Administrators, see “Assigning Type Administrator” on page 94.<br />

Attributes, see “To configure type attributes in the GUI” on page 87.<br />

Properties, see “Using Type Properties” on page 245.<br />

Change Packages, see “To create a type in the GUI” on page 84.<br />

Types<br />

Test Management, see “Setting the Test Management Role for Types” on page 112.<br />

Document, see “Setting Up Documents” on page 97.<br />

Item Editability, see “Setting Item Editability for Types” on page 114.<br />

Field Relationships, see “Managing Field Relationships” on page 143.<br />

Notification Fields, see “To create a type in the GUI” on page 84.<br />

Overrides for Fields and Overrides for States, see “Setting Type<br />

Overrides” on page 115.<br />

Permissions, see “To create a type in the GUI” on page 84.<br />

Position, see “To create a type in the GUI” on page 84.<br />

Visible Fields, see “To create a type in the GUI” on page 84.<br />

Workflow, see “Workflows” on page 152.<br />

Presentations, see “Customizing Item Presentation” on page 188.<br />

References, “To create a type in the GUI” on page 84<br />

History, see “Viewing <strong>Administration</strong> History” on page 47.<br />

4 When you are finished viewing the information, click Close.<br />

93


Chapter 4: Workflow Management<br />

Deleting Types<br />

Moving Types<br />

94<br />

If you decide you no longer need a particular type, you can delete it, as long as no items of<br />

that type have been created. You can delete more than one type at a time.<br />

To delete a type in the GUI<br />

CLI EQUIVALENT im deletetype<br />

1 From the Types view (see “Types” on page 82), select the type(s) you want to delete.<br />

2 Select Type > Delete. A confirmation dialog box displays.<br />

3 To confirm the deletion, click Yes.<br />

NOTE You can delete a type only if it is not used by other admin objects and it has<br />

not appeared in your history, that is, if no one has created an item of that type. To<br />

view references to the type, see “Viewing Types” on page 93.<br />

You can customize the order the types display in. <strong>MKS</strong> <strong>Integrity</strong> uses the order displayed in<br />

the Reposition Types dialog box.<br />

To change the order of the types in the GUI<br />

CLI EQUIVALENT im edittype<br />

1 From the Types view (see “Types” on page 82), select Type > Reposition. The Reposition<br />

Types dialog box displays.<br />

2 Select the type you want to move, then click Move Up or Move Down as required.<br />

3 Click OK to save your changes.<br />

Assigning Type Administrator<br />

As the super administrator for <strong>MKS</strong> <strong>Integrity</strong>, you can designate groups or individual users,<br />

or a combination of them, to be type administrators for the selected type.<br />

<strong>MKS</strong> <strong>Integrity</strong> type administrators are allowed to edit and view types. Type administrators<br />

are not allowed to assign themselves as administrators to any other types, or to edit types<br />

that are assigned to other type administrators.


TIP If you have multiple type administrators, <strong>MKS</strong> recommends as a best practice<br />

that you isolate the administration objects that each type interacts with, for example,<br />

dynamic groups. This prevents type modifications made by one administrator<br />

affecting another type.<br />

NOTE To determine which fields and states are referenced by any given type,<br />

administrators can view the Usage panel for the field or state in question. The Usage<br />

panel shows the types that refer to the field or state and the attributes that have been<br />

overridden for that type.<br />

If the assigned type administrators are granted the CreateType ACL permission, then they<br />

are allowed to create new types, as well as delete any types. <strong>MKS</strong> <strong>Integrity</strong> type<br />

administrators who are granted the CreateType permission can also assign other type<br />

administrators. For more information on the CreateType permission, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

Types<br />

The list of available users and groups contains all active and inactive members that have been<br />

imported into <strong>MKS</strong> <strong>Integrity</strong>; however, the available list does not necessarily include all users<br />

and groups available in the realm. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

The following table summarizes the capabilities and limitations of the type administrator:<br />

Type administrators can: Type administrators cannot:<br />

Create fields and states.<br />

Create new type in <strong>MKS</strong> <strong>Integrity</strong> (if<br />

CreateType permission is granted).<br />

Edit and view existing types where they are<br />

assigned type administrator.<br />

Edit and view fields and states referenced by<br />

corresponding type if they are also type<br />

administrator for all types that reference those<br />

fields.<br />

Edit field overrides for type they administer.<br />

Delete type (if the CreateType permission is<br />

granted).<br />

View users, groups, dynamic groups, projects,<br />

states, and fields.<br />

View assigned type administrators.<br />

Create, edit, view, and delete custom<br />

presentation templates.<br />

Example<br />

Edit fields (fields cannot be deleted) or states<br />

that reference types assigned to another<br />

administrator.<br />

Delete states that reference type assigned to<br />

another administrator.<br />

Edit users, groups, dynamic groups, projects,<br />

or triggers.<br />

Create/import or delete users, groups,<br />

dynamic groups, projects, or triggers.<br />

Create new type in <strong>MKS</strong> <strong>Integrity</strong> (unless<br />

CreateType permission granted).<br />

Assign another type administrator (unless<br />

CreateType permission granted).<br />

Mary is the type administrator for the Feature type and Neil for the Defect type. The types<br />

reference the following fields:<br />

95


Chapter 4: Workflow Management<br />

96<br />

With this arrangement, Mary can modify the ReleaseID field and Neil can modify the<br />

Priority field; however, neither administrator can modify the Date or Description fields<br />

because these are shared between the two types. Type administrators cannot make edits to<br />

fields or states that affect other types not administered by them.<br />

Only the super administrator is automatically allowed to modify fields that are referenced by<br />

multiple types. To modify fields or states that are referenced by multiple types, the user must<br />

be assigned as a type administrator for all types referencing those fields. For example, if Mary<br />

is added as a type administrator for the Defect type then she can modify all three fields (Date,<br />

Description, and ReleaseID), assuming no other types referenced these fields.<br />

A type administrator can add an existing field to his or her type; however, if the selected field<br />

is already referenced by another type, no type administrator is then allowed to make changes<br />

to that field. For example, if Mary added the Priority field to the Feature type, then Neil is<br />

no longer able to modify the Priority field.<br />

Key Considerations<br />

Only the super administrator is automatically allowed to assign a type administrator in<br />

<strong>MKS</strong> <strong>Integrity</strong>. Type administrators can assign another type administrator only if they<br />

are first granted the CreateType permission.<br />

Through the Create Type window, the super administrator can also assign a type<br />

administrator while creating a new type.<br />

To assign an <strong>MKS</strong> <strong>Integrity</strong> type administrator<br />

CLI EQUIVALENT im edittype<br />

Type Fields Referenced<br />

Feature Date<br />

Description<br />

ReleaseID<br />

Defect Date<br />

Description<br />

Priority<br />

1 From the Types view, select the type you want to create a type administrator for, then<br />

select Type > Edit. The Edit Type window displays.<br />

NOTE Only the super administrator is automatically allowed to assign a type<br />

administrator in <strong>MKS</strong> <strong>Integrity</strong>. Type administrators can assign another type<br />

administrator only if they are first granted the CreateType permission.<br />

Through the Create Type window, the super administrator can also assign a type<br />

administrator while creating a new type.


2 Click the Administrators node.<br />

To assign a specified user or group as a type administrator, see “Filtering Data” on<br />

page 18. You can assign more than one user or group as a type administrator.<br />

Types<br />

3 Click OK to accept the changes. The selected user or group is assigned as a type<br />

administrator. Users and groups displayed in the Assigned column are then allowed to<br />

manage the selected type in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Setting Up Documents<br />

Documents are containers for content items in <strong>MKS</strong> <strong>Integrity</strong>. Each document is composed of<br />

three types: Segments, Nodes, and Shared items, as well as two specific relationships:<br />

Contains/Contained By and References/Referenced By. Together, these types and<br />

relationships form a document model.<br />

Document models control the behavior of documents and content modified by users across<br />

and between domains. A domain is an area of discipline or other logical grouping of like<br />

documents; for example, requirements management and test management. The root of each<br />

document is called a segment root and it has a set of Node types that are its content. Shared<br />

items are referenced by nodes and represent shared content in a document model.<br />

As an administrator, it is your task to create new and modify existing document models from<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client. To learn the specific definitions for all of the terms<br />

mentioned above, see “Key Terms and Concepts in Documents” on page 98.<br />

The following graphic illustrates how segments, nodes, and shared items interact in a typical<br />

document model:<br />

Typical Document Model with relationships<br />

This section describes how to create document types that control the behavior of documents<br />

modified using the Document view in <strong>MKS</strong> <strong>Integrity</strong>.<br />

97


Chapter 4: Workflow Management<br />

98<br />

As an administrator you are responsible for:<br />

creating all three document types (segment, node, shared item) and assigning the<br />

applicable permissions to users and groups<br />

adding the document type to the Category list users will see in the Document view by<br />

editing the Shared Category field<br />

making the associated segments and/or nodes meaningful or non-meaningful<br />

defining field relationships for the fields you want to make traces as well as any other<br />

relevant field relationships<br />

defining additional attributes on the document types the same way you would any type<br />

in <strong>MKS</strong> <strong>Integrity</strong>, for example, triggers and queries<br />

The <strong>MKS</strong> Application Lifecycle Management (ALM) solution template contains sample<br />

document types with associated sample configurations. To learn more about the ALM<br />

template, which includes requirements management and test management concepts and case<br />

studies specific to the operation of the document model in <strong>MKS</strong> <strong>Integrity</strong>, see the ALM<br />

section of the <strong>MKS</strong> Customer Community Knowledge Base found at http://www.mks.com/<br />

community.<br />

Key Terms and Concepts in Documents<br />

This section discusses document model terms and concepts at a high level. It gives you the<br />

basis for understanding these concepts so you can create typical document types using the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

For more details and diagrams on the concepts in this section, including use cases, best<br />

practices, and other relevant information, see the ALM section of the <strong>MKS</strong> Customer<br />

Community Knowledge Base found at http://www.mks.com/community.


<strong>MKS</strong> <strong>Integrity</strong><br />

Term<br />

Architectural<br />

Term<br />

Document (root) Segment<br />

(root)<br />

Document Segment/<br />

Subsegment<br />

Definition<br />

Types<br />

Container for nodes that reference shared items or other documents.<br />

A root document is also considered a segment.<br />

Represented by the top-level node in the Outline panel of the Document<br />

view.<br />

May be related to the item backing the project via the Documents<br />

relationship. The subsegment refers to the node that references a segment<br />

root.<br />

Segments:<br />

are documents or subdocuments that contain content.<br />

can include or reference other segments.<br />

Subsegments:<br />

are segments that are a part of another document. If they are independent of<br />

another document they are considered segments.<br />

are included or inserted into a document which creates a References/<br />

Referenced By relationship between nodes/segment respectively.<br />

can be nested within segments or other subsegments.<br />

Content Node Content:<br />

is the term used in <strong>MKS</strong> <strong>Integrity</strong> for a node/shared item pair; the node<br />

references the shared item.<br />

can be meaningful, for example, a requirement, test case, segment or<br />

subsegment. It can also be non-meaningful; for example a heading or a<br />

comment. These criteria are defined by your system administrator on the<br />

Shared Category field.<br />

Nodes:<br />

are references to individual content items (can also be subsegments<br />

containing their own nodes) that belong to a document and contain<br />

document-specific metadata.<br />

Contents n/a All node/shared item pairs that are contained within a document.<br />

Shared Item n/a <strong>MKS</strong> <strong>Integrity</strong> items that represent shared content in your document model.<br />

Transparent during the creation or modification of content.<br />

Shared Items:<br />

are referenced by nodes.<br />

track modifications to content and reflect them in the node.<br />

Section n/a A grouped hierarchy of nodes in a document, for example: section 1.4 and its<br />

children, 1.4.1, 1.4.2 or section 3.4.2 and its children 3.4.2.1, 3.4.2.2.<br />

Reference mode n/a Setting available on a node within a document that controls how the system<br />

behaves when content is reused and modified. Options are: Author, Reuse,<br />

Share.<br />

99


Chapter 4: Workflow Management<br />

<strong>MKS</strong> <strong>Integrity</strong><br />

Term<br />

100<br />

Architectural<br />

Term<br />

Category n/a Pick field exposed on a node or segment type which allows for the<br />

categorization of content items, for example: Heading, Comment, Requirement,<br />

Test Case.<br />

You can select a segment or node type from the Category pick list value when<br />

you create or modify a segment or a node.<br />

Available options are defined by your administrator on the Shared Category<br />

field.<br />

Group document n/a A read-only document used for grouping content. You cannot create or edit<br />

meaningful content in a group document.<br />

How Segments and/or Nodes Are Exposed to Users<br />

Editable Field Value Attributes (FVAs) are the mechanism used to expose data contained on<br />

the shared item to the user through the node in a document.<br />

When you are creating a field that contains common data across all instances of its use, you<br />

create it on the shared item and create a paired FVA on the node. If the field is project-specific<br />

it only needs to be created on the node.<br />

To learn how to edit built in FVA fields to expose data to users on the shared item after<br />

creating item types, see “Document Set Up Tasks” on page 103.<br />

To learn how to create a node/shared item relationship by editing FVAs, see “Editing Field<br />

Relationships” on page 151.<br />

Document Relationships<br />

There are three classes of relationships that work with the segment, node and shared item<br />

types to complete the document model within <strong>MKS</strong> <strong>Integrity</strong>.<br />

Structural<br />

The structural relationship is used to construct the tree hierarchy or document structure.<br />

Each parent in the hierarchy can have one or more children. Conversely, each child can<br />

have only one parent.<br />

The main structural relationship is between the segment and the node, or the node and a<br />

node and is called Contains/Contained By.<br />

Couplet<br />

Definition<br />

The couplet relationship is used to connect the node(s) to the shared item. This<br />

relationship, in combination with the Reference Mode field, controls how content is<br />

versioned, branched, and reused within a document model.<br />

The node/shared item relationship is called References/Referenced By.


Trace<br />

Types<br />

Trace relationships are used to link document content to other items for a specific<br />

purpose.<br />

Users can create trace relationships between two items in the document model<br />

repository, for example, between a requirement and a test case, or between a higher-level<br />

requirement and a lower-level requirement.<br />

Trace relationships connect nodes, not shared items, together and are tied to the<br />

Category field rather than to the type of the object itself (not <strong>MKS</strong> <strong>Integrity</strong> item types)<br />

for content. Using type properties, you can control the relationships between the various<br />

types and categories of items. Although the number of trace relationships is not<br />

constrained, generally there is one relationship between each type of object in the<br />

system, for example: high level requirements, marketing requirements, test cases, and<br />

components. As an administrator, you can define which relationship fields act as trace<br />

fields relationships between document content items.<br />

To learn how to create a trace relationship field, see the ALM section of the <strong>MKS</strong><br />

Customer Community Knowledge Base found at http://www.mks.com/community.<br />

To learn how users create trace relationships, see your <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Trace relationships are often used in the context of the ALM template. To learn more<br />

about these another other relationships in ALM, see the ALM section of the <strong>MKS</strong><br />

Customer Community Knowledge Base found at http://www.mks.com/community.<br />

Customizing Document Content<br />

Document content is a general term used to describe all of the items contained within a<br />

document or all nodes and shared items contained in a segment. Since all of the nodes of a<br />

given document are of the same <strong>MKS</strong> <strong>Integrity</strong> type, you need a way to differentiate between<br />

headings, comments and other more specific content items. The fields Category and Shared<br />

Category are used for this differentiation and field relationships are used to limit the choices<br />

for the field in each domain.<br />

Categories<br />

Categories are defined on the shared item or segment root via the Shared Category field. The<br />

value of the category is exposed to the end user via the FVA Category field on a node. In<br />

addition to this field pair, field relationships help constrain which values are available on<br />

each type in a document mode. For example, users are prevented from assigning a category<br />

value of Business Requirement to a test case through the use of field relationships.<br />

Meaningful and Non-Meaningful Content<br />

Meaningful and non-meaningful content are the terms used in <strong>MKS</strong> <strong>Integrity</strong> to differentiate<br />

types of content for the purposes of reporting and metrics. By default, content is meaningful<br />

if it is not of category Comment or Heading.<br />

101


Chapter 4: Workflow Management<br />

102<br />

For example, a node with a category of Performance Test may be meaningful to your<br />

metrics, but the headings contained in the content items may not be. You define content as<br />

meaningful or non-meaningful on the Shared Category field after you create document types.<br />

You can define content as meaningful or non meaningful when you edit the Shared Category<br />

field. Similar to Category values, you can create queries and triggers that operate based on<br />

meaningful and non-meaningful definitions for document content.<br />

To learn how to create document model queries, see <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

For sample document model triggers, see the ALM section of the <strong>MKS</strong> Customer Community<br />

Knowledge Base found at http://www.mks.com/community.<br />

Significant Fields<br />

Defined for the segment, node, and shared item. Significant fields are fields that, when<br />

modified by users, result in an update to the contents revision identifier, by default the<br />

Revision Date or Input Revision Date fields.<br />

Changes are reflected to the user in the item history and can be viewed through the History<br />

tab of the individual items of via reports defined within your configuration. Each type has<br />

default associated significant edit fields.<br />

Setting up a document model within <strong>MKS</strong> <strong>Integrity</strong>, you must define significant fields for<br />

each document type.<br />

The ALM template has sample built-in significant fields by type, for details see the ALM<br />

section of the <strong>MKS</strong> Customer Community Knowledge Base found at http://www.mks.com/<br />

community.<br />

Reference Modes<br />

Reference mode is a system-defined field on nodes that contributes to controlling how<br />

content is shared and reused within a document model.<br />

The following are valid reference mode values, some of which users can set and others are<br />

controlled by the system:<br />

Author<br />

The content belongs to the current document. Any user or group with permissions to do<br />

so can modify the content. A new version or branch is not created when content with a<br />

reference mode value of Author is modified.<br />

Reuse<br />

The content belongs to another document and is being referenced by the current<br />

document. Any user or group with permissions to do so can modify the content and any<br />

modification do not affect any other reference to the same shared item. Should a change<br />

be made, the system branches the item and the branched item then has an author<br />

reference to it.


Share<br />

The content belongs to another document and is being referenced by the current<br />

document. The content cannot be modified directly but shows all changes made by the<br />

author.<br />

<strong>MKS</strong> Solution Global Type<br />

The <strong>MKS</strong> Solution global type contains system-defined type properties that control the<br />

behavior of the documents and content across and between domains as well as some<br />

Document view behaviors.<br />

Type properties within this type that should never be modified are denoted with <strong>MKS</strong> Only.<br />

Details about type properties and other specific tasks related to the modification of the <strong>MKS</strong><br />

Solution global type is contained in the <strong>MKS</strong> Customer Community Knowledge Base<br />

found at http://www.mks.com/community.<br />

Types<br />

For more information about how types are created and modified in general in <strong>MKS</strong> <strong>Integrity</strong>,<br />

see “Types” on page 82.<br />

Creating a Document Domain<br />

This section contains the procedures required in order to set up a typical document model,<br />

using the options available under Workflow and Documents in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client.<br />

To understand how to create a document model using three types in the <strong>MKS</strong> <strong>Integrity</strong><br />

Client, in this section you create a sample document domain called Requirements that has<br />

sample document types and sample attributes, for example: states, projects, visible fields,<br />

field relationships.<br />

The example in this section assumes you are setting up a document model for the first time.<br />

You can also copy existing document domain by copying and modifying the three document<br />

types (segment, node, and shared item) the way you would any type in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Document Set Up Tasks<br />

The following table outlines the steps required to define a typical document model.<br />

Step Task Procedure(s)<br />

1 Create a project with the applicable permissions to<br />

back your document items.<br />

2 Create a state to use as the Initial State when you<br />

create document types. The initial state is selected<br />

for each document type when you create them. You<br />

may want to define different states for documents<br />

and nodes.<br />

“Workflow and Document Projects” on page 248<br />

“Creating Projects” on page 265<br />

“States” on page 77<br />

“Creating States” on page 78<br />

103


Chapter 4: Workflow Management<br />

Step Task Procedure(s)<br />

3 Create a Shared Attachment field to support rich<br />

content.<br />

4 Create a Shared Text field to support rich content.<br />

Set the Default Attachment Field to the newly<br />

created Shared Attachment field.<br />

5 Create the following two FVA fields and make them<br />

editable; they use the References relationship to the<br />

shared fields you created in step 3 and 4:<br />

Attachment<br />

Text<br />

6 Create a Shared_Requirement type with the<br />

applicable attributes.<br />

7 Create a node type called Requirement with the<br />

applicable attributes.<br />

8 Create a segment type called Requirement_<br />

Document with the applicable attributes.<br />

9 Edit the References relationship field. For type<br />

Requirement, allow type Requirement_ Document.<br />

10 Make the applicable nodes and/or segments<br />

meaningful or nonmeaningful by editing the Shared<br />

Category field.<br />

104<br />

Creating Document Types<br />

“Fields” on page 121<br />

“Creating Fields” on page 127<br />

“Fields” on page 121<br />

“Creating Fields” on page 127<br />

CLI EQUIVALENT im createtype or im edittype<br />

“Creating Fields” on page 127<br />

“Field Value Attribute Fields” on page 129<br />

“To create a shared item type in the GUI” on<br />

page 105<br />

“To create a node type from the GUI” on page 106<br />

“To create a segment type from the GUI” on<br />

page 108<br />

“To edit the References field relationship to add the<br />

Requirement Document type” on page 110<br />

“Meaningful and Non-Meaningful Content” on<br />

page 101<br />

This step is included as a part of “Creating<br />

Document Types” on page 104.<br />

11 Create trace relationships fields. This step is included as a part of “Creating<br />

Document Types” on page 104.<br />

In order to set up a domain for managing Requirements, a segment, a node, and a shared<br />

item type need to be created using the various options on the Document Model node in the<br />

Create Type dialog box. These types need to be set in order to interact and control the<br />

behavior of the documents users create and modify. None is the default value for all domain<br />

types that do not utilize a document model.<br />

The following table lists the examples you will create in this section and their associated<br />

relationships:


Name Type Relationship<br />

Shared_Requirement Shared Item Represented by the Reference relationship which is pre-defined<br />

in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Requirement Node Represented by the Contained By relationship to the segment<br />

and Referenced By relationship to the shared item.<br />

This relationship is pre-defined in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Requirement_ Document Document<br />

(segment root)<br />

To create a shared item type in the GUI<br />

In this example, you create a shared item type called Shared_Requirement.<br />

1 Ensure you have completed steps 1–5 in “Document Set Up Tasks” on page 103.<br />

2 From the Types view (see “Types” on page 82), select Types > Create Type. The Create<br />

Type dialog box displays.<br />

3 Type Shared_Requirement in the Name field.<br />

4 In the tree pane, select Attributes (see “Configuring Type Attributes” on page 87). The<br />

Attributes view displays. Enable the following:<br />

May have their tree copied<br />

May be branched<br />

May have labels applied<br />

5 Define the following as Visible Fields (see “Setting Field Visibility for Types” on<br />

page 120):<br />

State<br />

Shared Attachments<br />

Shared Text<br />

6 Define a workflow (see “Creating Workflow” on page 158) with the following<br />

transitions:<br />

Unspecified–Active<br />

Active–Active<br />

To create the type that fulfills the role of Shared Item:<br />

Represented by the Contains relationship. This relationship is<br />

pre-defined in <strong>MKS</strong> <strong>Integrity</strong>.<br />

7 In the tree pane, select Document Model. The Document Model view displays.<br />

Types<br />

105


Chapter 4: Workflow Management<br />

106<br />

8 Select Shared Item from the drop list at the top of the dialog box. Settings for Shared Item<br />

displays.<br />

To learn more about shared items in the document model, the <strong>MKS</strong> Customer<br />

Community Knowledge Base found at http://www.mks.com/community.<br />

Define the Significant Edit Fields setting for the shared item. Specify the significant fields<br />

for this type (see “Significant Fields” on page 102). To learn how to create and modify<br />

fields, see “Fields” on page 121.<br />

9 Define the following field relationships (see “Managing Field Relationships” on<br />

page 143):<br />

Type=Shared_Requirement<br />

Shared Category=Heading, Comment,System Requirement, ....<br />

10 Define additional type attributes using the tree pane. Refer to the following sections for<br />

complete details about the options included with the node:<br />

“States” on page 77<br />

“Types” on page 82<br />

“Workflows” on page 152<br />

“Fields” on page 121<br />

“Customizing Item Presentation” on page 188<br />

“<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Permissions” on page 76<br />

11 Click OK to finish creating the Shared_Requirement type and its associated attributes.<br />

You will now create a node type for the shared item to reference.<br />

To create a node type from the GUI<br />

In this example, you create a node type called Requirement.<br />

1 Ensure you have completed steps 1–5 in “Document Set Up Tasks” on page 103.<br />

2 From the Types view (see “Types” on page 82), select Types > Create Type. The Create<br />

Type dialog box displays.<br />

3 Type Requirement in the Name field.<br />

4 In the tree pane, select Attributes (see “Configuring Type Attributes” on page 87). The<br />

Attributes view displays.<br />

5 Enable the following:<br />

May have their tree copied<br />

May be branched<br />

May have labels applied


6 Define a workflow (see “Creating Workflow” on page 155) with the following<br />

transitions:<br />

Unspecified–Active<br />

Active–Active<br />

Types<br />

7 Define the following Visible Fields (see “Setting Field Visibility for Types” on page 120):<br />

Project<br />

State<br />

Text<br />

Text Attachments<br />

To create the type that fulfills the role of node:<br />

8 In the tree pane, select Document Model. The Document Model view displays.<br />

9 Select Node at the top of the dialog box. Settings for Node displays.<br />

To learn more about nodes in the document model, see the <strong>MKS</strong> Customer Community<br />

Knowledge Base found at http://www.mks.com/community.<br />

Select the Shared Item Type you want to reference from the node from the list. In this<br />

example, the Shared Item type has already been created and is called<br />

Shared_Requirement.<br />

Previously created shared item types display in this list if any were created or<br />

installed via the ALM template. The ALM template comes with built in sample<br />

types. To learn more about the ALM template, see the <strong>MKS</strong> Customer Community<br />

Knowledge Base found at http://www.mks.com/community.<br />

Significant Edit Fields<br />

10 Click OK.<br />

Specify the significant fields for this type. See “Significant Fields” on page 102.<br />

To learn how to create and modify fields, see “Fields” on page 121.<br />

11 Create a Property (see “Configuring Type Attributes” on page 87) called<br />

<strong>MKS</strong>.PrimaryTextField. This property cannot be specified using the <strong>MKS</strong> Solution<br />

global type property. It must be specified on all nodes when there is more than one long<br />

text field on the shared item.<br />

12 Define the following field relationships (see “Managing Field Relationships” on<br />

page 143):<br />

Type=Requirement<br />

Shared Category=Heading, Comment, System Requirement<br />

107


Chapter 4: Workflow Management<br />

108<br />

13 Define additional type attributes using the tree pane, see the following sections for<br />

complete details about the options included with the node:<br />

“States” on page 77<br />

“Types” on page 82<br />

“Workflows” on page 152<br />

“Fields” on page 121<br />

“Customizing Item Presentation” on page 188<br />

“<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Permissions” on page 76<br />

14 Click OK to finish creating the Node type and its associated attributes.<br />

You will now create a segment type to contain the node type you just created.<br />

To create a segment type from the GUI<br />

In this example, you create a segment type called Requirement_Document.<br />

1 Ensure you have completed steps 1–5 in “Document Set Up Tasks” on page 103.<br />

2 From the Types view (see “Types” on page 82), select Types > Create Type. The Create<br />

Type dialog box displays.<br />

3 In the tree pane, select Attributes (see “Configuring Type Attributes” on page 87). The<br />

Attributes view displays.<br />

4 Enable the following:<br />

May have their tree copied<br />

May be branched<br />

May have labels applied<br />

5 Define a workflow (see “Creating Workflow” on page 155) with the following<br />

transitions:<br />

Unspecified–Active<br />

Active–Active<br />

6 Define the following as visible fields (see “Setting Field Visibility for Types” on<br />

page 120):<br />

Project<br />

State<br />

Shared Attachment<br />

Shared Text<br />

7 In the tree pane, select Document Model. The Document Model view displays.


To create the type to fulfill the role of segment:<br />

8 Select Segment from the list. The Settings for Segment dialog box displays.<br />

Types<br />

9 Select the Node Type you want to reference the node from the list. In this example, select<br />

the Requirement node type that you created previously.<br />

This list is empty if you did not create a node type. Previously created node types<br />

display in this list if you created or installed any via the ALM template. The ALM<br />

template comes with built in sample types. To learn more about the ALM template, see<br />

the <strong>MKS</strong> Customer Community Knowledge Base found at http://www.mks.com/<br />

community.<br />

10 Define the following settings for the segment:<br />

a) Add or remove Significant Edit fields.<br />

Specify the significant fields for this type. See “Significant Fields” on page 102.<br />

To learn how to create and modify fields, see “Fields” on page 121.<br />

b) Select a Print Report to use as the format you want for the printed output the user<br />

sees when they print a document of this type in <strong>MKS</strong> <strong>Integrity</strong>. Reports should be<br />

designed to print the entire document.<br />

Any administration report can be used for printing a document. However, <strong>MKS</strong><br />

recommends you use the Document Content report that is included with the ALM<br />

template.<br />

To learn more about the ALM template, see the <strong>MKS</strong> Customer Community<br />

Knowledge Base found at http://www.mks.com/community.<br />

For additional information, refer to “Defining the Format of Printed Documents” on<br />

page 111.<br />

c) Check Group Document if you use this item type to group content. You cannot<br />

create or edit meaningful content in a group document.<br />

For example, the ALM template uses Test Group to collect test cases for test<br />

execution. Tests can be authored in test suites, based on functional or architectural<br />

structures, and linked to the requirements that they verify. This grouping of tests<br />

makes it easy for the author to ensure complete testing coverage. But in some testing<br />

environments not all tests in a suite are executed at the same time. The Test Group<br />

can be used to organize a subset of test cases for each environment, with special<br />

testers and scripts. For more examples of using grouping in test management, see<br />

the <strong>MKS</strong> Customer Community Knowledge Base found at http://www.mks.com/<br />

community.<br />

d) Specify the default reference mode to apply to nodes after they are branched. To<br />

understand the differences between reference modes, see “Reference Modes” on<br />

page 102.<br />

109


Chapter 4: Workflow Management<br />

110<br />

11 Define the following field relationships (see “Managing Field Relationships” on<br />

page 143):<br />

Type=Requirement_Document<br />

Shared Category=Document<br />

12 Define additional type attributes using the tree pane, see the following sections for<br />

complete details about the options included with the node:<br />

“States” on page 77<br />

“Types” on page 82<br />

“Workflows” on page 152<br />

“Fields” on page 121<br />

“Customizing Item Presentation” on page 188<br />

“<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Permissions” on page 76<br />

13 Click OK to finish creating the Segment type and its associated attributes.<br />

IMPORTANT If you have a node type referenced by a segment, you cannot change the<br />

document type of the node to shared item or segment.<br />

To edit the References field relationship to add the Requirement Document type<br />

1 From the Fields view (see “Fields” on page 121), select References > Edit. The Edit Field<br />

dialog box displays.<br />

2 Click the Field Relationships node.<br />

3 In the Types box, select the Requirement node type add Requirement Document to the<br />

Allowed SubSegment Types list.<br />

If the segment allows more than one valid Shared Category, then you should set the<br />

<strong>MKS</strong>.RQ.Domain property to include additional categories. If the segment allows only one<br />

valid Shared Category, for example, the default Document you do not need to augment<br />

<strong>MKS</strong>.RQ.Domain property.<br />

To learn how about the <strong>MKS</strong>.RQ.Domain property, see the <strong>MKS</strong> Customer Community<br />

Knowledge Base found at http://www.mks.com/community.<br />

4 Click OK.<br />

This section of the procedure is optional to add Shared Category pick values and make them<br />

meaningful or non meaningful:<br />

1 From the Fields view (see “Fields” on page 121), select Shared Category > Edit. The Edit<br />

Field dialog box displays.<br />

2 Click Add. The Add Pick dialog box displays.


3 Type a Label for the Shared Category value you want to add.<br />

4 Select meaningful or non-meaningful from the list.<br />

5 Define images as applicable (“Editing Fields” on page 140).<br />

6 Click OK twice.<br />

To learn how to create a trace relationship field, see the <strong>MKS</strong> Customer Community<br />

Knowledge Base found at http://www.mks.com/community.<br />

7 Click OK to finish creating your document model.<br />

After you have created your document domain, you need to make the Document and<br />

Content menus visible to users. To learn how to activate menus on ViewSet, see “Updating<br />

Published ViewSets” on page 64. When a user selects Document > Create, the categories<br />

become visible in the Document view.<br />

Types<br />

You may want to limit the categories associated with the shared item (field relationships) to a<br />

list applicable to your application.<br />

You can configure additional type attributes, for example, define document items to be a part<br />

of test management. See “Setting the Test Management Role for Types” on page 112.<br />

To see how the document types you created translate to the structure of a document that<br />

users create and modify, see your <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Defining the Format of Printed Documents<br />

You can define the printed output users will see when they print documents by creating a<br />

report and defining it on the Segment type. Reports can only be set on segment types and a<br />

segment type does not require a print report definition.<br />

The ALM template ships with sample reports. To learn more about what those reports are,<br />

and where you can find them, see the <strong>MKS</strong> Customer Community Knowledge Base found at<br />

http://www.mks.com/community.<br />

To define a print report format for a Segment type in the GUI<br />

1 Create a report to use with segment types using the report feature. To learn how to use<br />

the report feature, see your <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

NOTE A sample report is available if you are using documents in an ALM template<br />

environment. To locate the sample report, the <strong>MKS</strong> Customer Community<br />

Knowledge Base found at http://www.mks.com/community.<br />

111


Chapter 4: Workflow Management<br />

112<br />

2 From the Create Type or Edit Type panel, with the Segment mode button enabled,<br />

choose a report from the Print Report pick list.<br />

Any administration report can be used for printing a document. However, <strong>MKS</strong><br />

recommends you use the Document Content report that is included with the ALM<br />

template.<br />

To learn more about the ALM template, see the <strong>MKS</strong> Customer Community Knowledge<br />

Base found at http://www.mks.com/community.<br />

3 Complete the rest of the panel depending on the document model definition you require.<br />

4 Click OK. The report is attached to the segment for this Document type.<br />

When a user selects Document > Print in the Document view, the document prints<br />

using the report specified for the segment. If no report is defined and the user prints<br />

using this method, the table on the right is sent to the printer.<br />

When a document is selected in the Item view and a user selects View > Print, you are<br />

presented with an option to print Selected Document. This option only exists if an<br />

item type is a document segment and there is a print report associated with the type.<br />

NOTE Multiple document printing is not supported in <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong>. If<br />

multiple documents are selected in the Item view, this option is disabled.<br />

To learn more about item printing options, see <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Setting the Test Management Role for Types<br />

If you are using <strong>MKS</strong> <strong>Integrity</strong> for test management, you can specify the role that the type has<br />

in the test management process.<br />

To set test management roles for types in the GUI<br />

1 From the Create Type, Copy Type, or Edit Type dialog box, click the Test Management<br />

node. (For more information on the dialog box, see “Creating Types” on page 84,<br />

“Copying Types” on page 92, or “Editing Types” on page 91.)<br />

2 Specify whether this item type can be related to test results. For example, you might<br />

want a defect item type to be able to be related to a test result.<br />

3 Select one of the following test management roles for the item type:<br />

None<br />

The item type does not have a role specific to test management.<br />

Test Suite<br />

A test suite is a grouping of test cases. Typically, tests are authored in test suites. Test<br />

suites can vary from small groupings that test an individual feature, to large


Types<br />

groupings that test an entire product or perform stress or load testing. Test suites<br />

can contain other test suites. Test suites must have a document model of Segment<br />

since test suites are containers of content. For more information on the document<br />

model, see “Setting Up Documents” on page 97.<br />

If you select this role, proceed to step 7.<br />

Test Case<br />

A test case describes the test conditions and provides a container for adding test<br />

results from the test session. Test cases can be specified for different types of tests,<br />

including functional, performance, automated, or manual tests. Test cases must<br />

have a document model of Node since test cases provide the content for test suite or<br />

test group documents. For more information on the document model, see “Setting<br />

Up Documents” on page 97.<br />

If you select this role, proceed to step 5.<br />

Test Step<br />

A test step is a specific testing operations performed as part of a executing a test case.<br />

A test case contains an ordered list of steps to follow in order to complete the test.<br />

Test steps can be shared across test cases. Test steps must have a document model of<br />

None. For more information on the document model, see “Setting Up Documents”<br />

on page 97.<br />

If you select this role, proceed to step 7.<br />

Test Session<br />

A test session is a concrete run or execution of a group of test cases. The group of<br />

tests to be run can be based on a test suite or test group. During the test session each<br />

test suite or test group is executed, (which in turn means that each test case in each<br />

of the test suites or test groups is executed) and test results are collected. Test<br />

sessions must have a document model of None. For more information on the<br />

document model, see “Setting Up Documents” on page 97.<br />

4 Specify who is able to modify the test results for the test session:<br />

Anyone<br />

The user in the specified User Field on the test session.<br />

Any user in the group in the specified Group Field on the test session.<br />

Any user in the specified Groups.<br />

Proceed to step 7.<br />

5 Select Test Steps will be enabled on items of this type if you want test steps to display on<br />

the test case. A test step is a specific test for a test case. A test case can contain an ordered<br />

list of steps to follow in order to complete the test. Test steps can be shared across test<br />

cases.<br />

6 Specify the Fields on the test case that you want to display in the Test Results view.<br />

113


Chapter 4: Workflow Management<br />

114<br />

7 Click OK.<br />

For more information on using <strong>MKS</strong> <strong>Integrity</strong> for test management, see the <strong>MKS</strong> Customer<br />

Community Knowledge Base found at http://www.mks.com/community.<br />

Setting Item Editability for Types<br />

You can define the conditions that give users permission to edit items of a specific type.<br />

To define item editability for a type in the GUI<br />

CLI EQUIVALENT im createtype, im copytype, or im edittype<br />

1 From the Create Type, Copy Type, or Edit Type dialog box, click the Item Editability<br />

node. (For more information on the dialog box, see “Creating Types” on page 84,<br />

“Copying Types” on page 92, or “Editing Types” on page 91.) The Item Editability panel<br />

displays.<br />

2 Do one of the following:<br />

Under Condition, define the conditions this type should be editable under.<br />

For information on the available operators and rule structure, see “Defining Rules”<br />

on page 43. For information on using the data filter, see “Filtering Data” on page 18.<br />

Under Copy, do one of the following:<br />

Click Add to copy editability rules from another type. The copied rules are<br />

appended to any existing rules.<br />

Click Replace to copy editability rules from another type to replace any existing<br />

rules.<br />

The Rule Selection dialog box displays.<br />

In the Objects with Rules list, select the type that you want to copy a rule from.<br />

If the type has a rule, that type displays in the Preview area.<br />

Click OK. The rule displays in the Editability panel.<br />

3 Click OK to save the item editability rule(s) for the type.<br />

Setting Type Visibility<br />

Type visibility allows you to control access to information throughout your organization.<br />

Through <strong>MKS</strong> <strong>Integrity</strong>, you can manage the types that reflect your product development.<br />

You can use type visibility to ensure that sensitive information from one group is not viewed


or modified by another group. All items and e-mail notification are subject to type visibility<br />

rules.<br />

Types<br />

When you create a type, you can select which user groups can see the type and all items<br />

assigned to the project. You can also define which user groups can see all types in the<br />

database and which ones are restricted to see only certain types. If a user is not a member of<br />

at least one group allowed to view the type, that user cannot view any items of that type.<br />

Based on type visibility, users are allowed to query the database only for items of the types<br />

that are visible to them. Items of types not visible to users are not displayed in the query<br />

results. If users try to view an item of a type that is not visible to them, an error message<br />

displays.<br />

If an item in one project is related to an item in a project not visible to the user, the related<br />

item does not display in the Relationship view. In the History view, the user can see only that<br />

an edit occurred (Modified by on ). Users do not see the related item<br />

ID, and cannot see if the edit was an addition or removal of a related item.<br />

If an item, previously invisible to users, is reassigned to a type that is visible to users, they do<br />

not see the previous type name in the History view. Instead, a symbolic “Restricted Type”<br />

value displays.<br />

Setting Type Overrides<br />

Type overrides allow you to set certain attribute values that apply only for the selected type.<br />

<strong>MKS</strong> <strong>Integrity</strong> allows two varieties of type overrides: overrides for fields and overrides for<br />

states. Overrides for fields and states can be set while editing a type.<br />

When you set a type override, you are effectively customizing the applicable field or state<br />

attribute to suit the type(s) you administer. <strong>MKS</strong> <strong>Integrity</strong> then applies the new attribute<br />

value only for the type you are editing. The customized value supersedes the global settings<br />

for the target attribute when referenced by the selected type.<br />

NOTE Type overrides can also be set through the CLI using the im editfield and<br />

im editstate commands. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

<strong>Administration</strong> CLI Reference <strong>Guide</strong>.<br />

Overrides for Fields<br />

Once a type is created, you can set overrides for certain field attributes. Overrides can be set<br />

for all fields referenced by that type; however, only the following field attributes are available<br />

for override:<br />

Relevance<br />

Editability<br />

Description<br />

115


Chapter 4: Workflow Management<br />

116<br />

Ranges<br />

Phases<br />

Display pattern<br />

Default value<br />

Parameter substitution<br />

Overriding field relevance allows you to define, for the selected type, specific conditions that<br />

make a field applicable to users, groups, or items with certain field values. For example, if the<br />

global setting meant that the selected field was generally relevant and you wanted to<br />

simplify the information presented for the majority of users, you could set an override that<br />

made the field relevant only to the primary users of the selected type. For more information<br />

on the relevance attribute, see “Setting Field Relevance” on page 133.<br />

Overriding the field’s editability allows you to define, for the selected type, the conditions<br />

where users have permission to edit a field. For example, if the global setting means that the<br />

selected field is generally editable and you want to simplify the tasks required for the<br />

majority of users, you could set an override that makes the field editable only by the primary<br />

users of the selected type. For more information on the editability attribute, see “Setting Field<br />

Editability” on page 135.<br />

Overriding the field description allows you to customize the description that <strong>MKS</strong> <strong>Integrity</strong><br />

uses for the type you are administering. This new description supersedes the global<br />

description for the selected field and is applied only when the field is referenced by the<br />

selected type. For example, the global description for the Submit field might be “Initial<br />

stage“. When referenced by the Feature Request type, you could set this description to<br />

“Feature request submission“. For more information on the description attribute, see<br />

“Setting Field Description” on page 137.<br />

Overriding the field default value allows you to have multiple types share a field with<br />

different field defaults for each type. For example, if you shared the Assigned Group field<br />

across multiple types, you could override the default Assigned Group field value and replace<br />

it with a new default field value for the type, or just remove the existing default.<br />

To set a type override for fields<br />

CLI EQUIVALENT im edittype<br />

1 From the Types view (see “Types” on page 82), select the type you want to edit.<br />

2 Select Type > Edit. The Edit Type dialog box displays.<br />

3 In the tree pane, select the Override for Fields node. The display pane shows the<br />

fields referenced by the selected type. A checkmark indicates the attribute has been<br />

overridden.


Column headers display the field attributes that are available for override, including<br />

Description, Relevance, Editability, Ranges, Display Pattern, and Phases.<br />

4 To set an override for a field, highlight the field in the list, and click Edit. The Edit Field<br />

Overrides For Type dialog box displays.<br />

TIP To view the existing overrides for a field, highlight the field, and click View.<br />

If the Override the global rule option is not selected, an editable attribute displays the<br />

global value. A checkmark in the tab indicates an override. You can set the following<br />

overrides:<br />

Types<br />

To set an override for a numeric field’s global display pattern, click the Values tab (if<br />

not already displayed), select the Override the global display pattern option, and<br />

make the required changes. For more information on display patterns, see “Display<br />

Patterns” on page 28.<br />

To set an override for global range values, click the Values tab (if not already<br />

displayed), select the Override the global range values option, and make the<br />

required changes. For more information on ranges, see “Range Fields” on page 130.<br />

To set an override for global phases, click the Values tab (if not already displayed),<br />

select the Override the global phases option, and make the required changes. For<br />

more information on phases, see “Phase Fields” on page 130.<br />

To set an override for the default value, click the Values tab (if not already<br />

displayed), select the Override the default value option, and change the Set Default<br />

Value option. If the field is an integer, float, or date field, you can also change the Set<br />

Minimum Value and Set Maximum Value options. If you do not want to use a default<br />

or minimum/maximum value for the type, disable Override the default value.<br />

To set an override for parameter substitution in a text field, click the Values tab (if<br />

not already displayed), select Override "Substitute Parameters" Value and change<br />

the Substitute Parameters option. When parameter substitution is not enabled for a<br />

field, you see parameter entries in the following format: {{}}.<br />

When parameter substitution is enabled for a field, the parameter name is replace<br />

with a parameter value when you view the item through a view or report that<br />

supports parameter substitution.<br />

To set an override for default columns in a relationship field, click the Default<br />

Columns tab, select the Override the global default columns option, and make the<br />

required changes. For more information on setting default columns, see “Specifying<br />

Default Columns” on page 133.<br />

To set an override for the relevance attribute, click the Relevance tab, select the<br />

Override the global rule option, and make the required changes. For more<br />

information on the relevance attribute, see “Setting Field Relevance” on page 133.<br />

117


Chapter 4: Workflow Management<br />

118<br />

To set an override for the editability attribute, click the Editability tab, select the<br />

Override the global rule option, and make the required changes. For more<br />

information on the editability attribute, see “Setting Field Editability” on page 135.<br />

To set an override for the description attribute, click the Description tab, and select<br />

the Override the global description option. In the text field, type the text description<br />

you want to apply to this field only when referenced by this type.<br />

NOTE<br />

To view the existing sequence of fields referenced by this type, click the Position<br />

tab. The list of fields displays.<br />

To view the administrative changes made to fields referenced by this type, click<br />

the History tab. A list of administrative changes, if any, displays.<br />

Position and History information is for information purposes only and is not<br />

editable.<br />

5 When you are finished setting the overrides, click OK.<br />

Overrides for States<br />

Once a type is created, you can set overrides for certain state attributes. Overrides can be set<br />

for all states referenced by that type; however, only the following state attributes are<br />

available for override:<br />

Description<br />

Image<br />

Capabilities<br />

Overriding the attribute allows you to set a unique description, image, or capability that<br />

supersedes the global setting used by <strong>MKS</strong> <strong>Integrity</strong>. The override you set is then used by<br />

<strong>MKS</strong> <strong>Integrity</strong> only when that state is referenced by the selected type. For example, for the<br />

Build state, the state capability rule does not allow open change packages. However, you<br />

could set an override that allowed open change packages in the Build state only when<br />

referenced by the Web Development type.<br />

For more information on state attributes, see “Creating States” on page 78.<br />

To set a type override for states<br />

CLI EQUIVALENT im edittype<br />

1 From the Types view (see “Types” on page 82), select the type you want to edit.<br />

2 Select Type > Edit. The Edit Type dialog box displays.


3 In the tree pane, select the Overrides for States node. The display pane shows the<br />

states referenced by the selected type. A checkmark indicates the attributes have been<br />

overridden.<br />

Column headers display the state attributes that are available for override, including<br />

Description, Image, and Capabilities.<br />

4 To set an override for a state, highlight the state in the list, and click Edit. The Edit State<br />

Overrides For Type dialog box displays.<br />

If the Override the global rule option is not selected, an editable attribute displays the<br />

global value. A checkmark in the tab indicates an override.<br />

TIP To view the existing overrides for a state, highlight the state, and click View.<br />

Types<br />

5 To set an override for the description attribute, click the Description tab, and select the<br />

for Override the global description option. In the text field, type the text description you<br />

want to apply to this state only when referenced by this type.<br />

6 To view the existing sequence of states referenced by this type, click the Position tab. The<br />

list of states displays. Details displayed under the Position tab is for information<br />

purposes only and cannot be edited.<br />

7 To set an override for the image attribute, click the Image tab, select the Override the<br />

global image option, and make the required changes in the image selection.<br />

You can associate a custom icon image with the state. To do this, select Use Custom<br />

Image, and browse for the image file. To have no image associated with the type, select<br />

No Image. If you choose to use your own custom icon image, the image must be in GIF or<br />

JPEG format, and no larger than 24 x 16 pixels.<br />

8 To view the administrative changes made to states referenced by this type, click the<br />

History tab. A list of administrative changes, if any, displays. Details displayed under the<br />

History tab is for information purposes only and cannot be edited.<br />

9 To set an override for the state capability attribute, click the Capabilities tab, select the<br />

Override global capabilities option, and make the required changes to define state-based<br />

capabilities. In <strong>MKS</strong> <strong>Integrity</strong>, state-based capabilities allow time entries to exist while an<br />

item is in a given state. For more information on creating, editing, viewing, and deleting<br />

time entries, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

In <strong>MKS</strong> <strong>Integrity</strong>, state-based capabilities allow change packages that are under review<br />

or change packages that are open to exist while an item is in a given state. For more<br />

information on the change package review and approval process, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>2009</strong> User <strong>Guide</strong>.<br />

If the item state does not allow open change packages, <strong>MKS</strong> <strong>Integrity</strong> prompts users to<br />

close the item’s change package before they move any item to that state. In addition, if an<br />

119


Chapter 4: Workflow Management<br />

120<br />

item state does not allow open change packages, users cannot create new change<br />

packages for any items in that state.<br />

To define a state-based capability, do one of the following:<br />

To display only enabled state-based capabilities, from the Filter list select<br />

.<br />

To display all available state-based capabilities, from the Filter list select .<br />

To display only the state-based capabilities related to <strong>MKS</strong> <strong>Integrity</strong>, select<br />

<strong>MKS</strong> <strong>Integrity</strong>. Then to allow time entries in the selected state, enable the Allows<br />

time entry in this state option.<br />

To display only the state-based capabilities related to <strong>MKS</strong> <strong>Integrity</strong>, select<br />

<strong>MKS</strong> <strong>Integrity</strong>.Then select one or more of the following capabilities:<br />

To allow change packages under review in the selected state, enable the Allows<br />

SI change packages under review to exist in this state option.<br />

To allow open change packages in the selected state, enable the Allows open SI<br />

change packages to exist option.<br />

NOTE If you are using the Implementer integration with <strong>MKS</strong> <strong>Integrity</strong>, additional<br />

state-based capabilities are available.<br />

10 When you are finished setting the overrides, click OK.<br />

Setting Field Visibility for Types<br />

When you create a type, you can select which groups can see the fields and the values within<br />

the fields. Field visibility, based on the type definition, allows you to control access to<br />

information within an item. You can use field visibility to ensure that sensitive information<br />

from one group is not viewed or modified by another group. All items, attachments, and<br />

queries are subject to field visibility rules.<br />

If users do not have visibility for a field (in a specified type), they cannot:<br />

see the value(s) assigned to that field for an item of the specified type<br />

use queries to search on fields that are not visible to them<br />

IMPORTANT In the Create Query dialog box, users are able to see the field name. If<br />

the field is a picklist, users are able to see all possible values within the field.<br />

The standard fields Type, ID, Created By, Created Date, Modified By, and Modified Date are not<br />

subject to field visibility rules and are always visible for all item types. Other standard fields<br />

are always visible for specific types, based on their document model or test role. Fields that<br />

are always visible are displayed with a gray checkmark.


Fields<br />

Field visibility applies to the Fields, History, Attachments, and Relationships sections in an<br />

item. In addition, because queries are subject to field visibility, reports and charts do not<br />

include data from invisible fields.<br />

NOTE Field visibility is not field relevance. Relevance allows you to create subsets of<br />

information that make it easier for users to create and edit items. Field visibility is a<br />

security mechanism that restricts user access to information in <strong>MKS</strong> <strong>Integrity</strong>. For<br />

more information on relevance, see “Setting Field Relevance” on page 133.<br />

Fields<br />

<strong>MKS</strong> <strong>Integrity</strong> comes with a standard set of default fields that are visible to all item types and<br />

all users. Fields are categories of data that can be associated with items. You can also create<br />

custom fields in <strong>MKS</strong> <strong>Integrity</strong>.<br />

When naming a field, <strong>MKS</strong> <strong>Integrity</strong> also allows you to use a secondary name to be displayed<br />

on the interface. This secondary name, known as the display name, can be helpful in<br />

simplifying information presented to the user. For more information, see “Using Display<br />

Names” on page 126.<br />

Any changes you make within the Fields dialog box are implemented in the database<br />

immediately; you cannot cancel them. If you create a field with an incorrect type, you cannot<br />

change its type. You can remedy the problem by renaming the field, making it invisible for all<br />

types, or deleting it if there are no references (see “Deleting Fields” on page 142).<br />

NOTE There are special considerations if you rename a default field that is<br />

referenced in an item type property. Item type properties are used to define<br />

solution-specific behavior. For more information, see the ALM section of the <strong>MKS</strong><br />

Customer Community Knowledge Base found at http://www.mks.com/<br />

community.<br />

Several of the default fields are used specifically in the document model structure. To learn<br />

more about the architecture of the document model, see the ALM section of the <strong>MKS</strong><br />

Customer Community Knowledge Base found at http://www.mks.com/community.<br />

Standard <strong>MKS</strong> <strong>Integrity</strong> fields that you can include in your workflow are as follows:<br />

Field Name Editable? Description<br />

Assigned User Yes User responsible for item.<br />

Assigned Group Yes Group responsible for item.<br />

Attachment Yes Attachment(s) included with the item. For more<br />

information about creating attachments in items, see your<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

121


Chapter 4: Workflow Management<br />

122<br />

Field Name Editable? Description<br />

Backward Relationships Yes Related parent items. For more information on item<br />

relationships, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Category Yes FVA field that displays the value from the Shared<br />

Category field in a node item.<br />

For more information about item types in the document<br />

model, “Types” on page 82.<br />

Contained By No Describes the linkage from child to parent and defines the<br />

contents and structure of a document.<br />

For more information about item types in the document<br />

model, “Types” on page 82.<br />

Contains No Describes the linkage from parent to child and defines<br />

the contents and structure of a document.<br />

For more information about item types in the document<br />

model, “Types” on page 82.<br />

Created By No User who created item.<br />

Created Date No Date item was created.<br />

Subdocument Name No Name of the document item name that references the<br />

segment. The subdocument name is derived from the<br />

Summary field on the referencing node. You can edit<br />

Summary directly on a node or a segment.<br />

For more information about item types in the document<br />

model, “Types” on page 82.<br />

Document ID No ID of the document item in which content is contained.<br />

For more information about item types in the document<br />

model, “Types” on page 82.<br />

Forward Relationships Yes Related child items. For more information on item<br />

relationships, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

ID No Unique ID assigned to each item upon creation.<br />

Input Revision Date Yes Date of the last significant modification to this document<br />

item or, if a node, to the shared item that backs it.<br />

Modified By No User who last modified item.<br />

Modified Date No Date item was last changed.<br />

Notes Yes Special notes about the item.<br />

Parameters Yes Lists the valid parameters for an item. For more information,<br />

see “Using Parameters and Parameter Values Fields” on<br />

page 138.<br />

Parameter Values Yes Specifies the values for the parameters. For more<br />

information, see “Using Parameters and Parameter Values<br />

Fields” on page 138.


Field Name Editable? Description<br />

Project No Project item belongs to. Projects are groupings of related<br />

items.<br />

Referenced By No Describes the linkage from shared item to node, or document<br />

root to node.<br />

For more information about item types in the document<br />

model, “Types” on page 82.<br />

Referenced Item Type Yes Shared item type as exposed through the node<br />

reference.<br />

For more information about item types in the document<br />

model, “Types” on page 82.<br />

Reference Mode No Controls how document items are versioned, branched, and<br />

reused.<br />

References No Describes the linkage from node to shared item, or node to<br />

document root.<br />

Root ID No ID of the original ancestor of a document item. Same as<br />

the item ID if an original artifact.<br />

Shared By No Establishes an explicit sharing linkage between two node<br />

items.<br />

Node items participating in a Shares/Shared By<br />

relationship always point to the same shared item.<br />

Edits to shared node fields also appear on the items<br />

listed.<br />

For more information on nodes and shared items, see<br />

“Setting Up Documents” on page 97.<br />

Shared Category Yes Defines the type of document or shared item. Values are<br />

constrained by field relationships.<br />

For more information about item types in the document<br />

model, “Types” on page 82.<br />

Note: Shared Category fields are always mandatory.<br />

Shared Test Steps Yes Related test steps for a test case. Test steps are items with a<br />

test management role of Test Step. For more information,<br />

see “Setting the Test Management Role for Types” on<br />

page 112.<br />

A test step shared with another test case cannot be edited,<br />

but it can be copied and replaced with the new version.<br />

Shares No Establishes an explicit sharing linkage between two node<br />

items.<br />

Node items participating in a Shares/Shared By<br />

relationship always point to the same shared item.<br />

Shared node fields can only be edited on the item listed.<br />

For more information on nodes and shared items, see<br />

“Setting Up Documents” on page 97.<br />

Fields<br />

123


Chapter 4: Workflow Management<br />

124<br />

Field Name Editable? Description<br />

Signature Comment No Any comments entered as part of electronic signature.<br />

For more information, see “Setting Up Electronic<br />

Signatures” on page 241.<br />

Signed By No User who provided electronic signature when item was<br />

changed. For more information, see “Setting Up<br />

Electronic Signatures” on page 241.<br />

State Yes Step or stage of workflow process.<br />

Summary Yes Brief summary of item, up to 250 alphanumeric<br />

characters.<br />

Tests As Of Date Yes Date on test session that determines which test cases<br />

display for test documents in the test result editor. Test<br />

cases added to test documents after this date are not<br />

displayed.<br />

Test Cases Yes Related test cases that shared test steps belong to.<br />

Tests Yes Related test documents or test cases. When you add a<br />

related item to this field, a dialog box displays, allowing<br />

you to select a test document, or select individual test<br />

cases from a test document.<br />

Note: You cannot create new items to add as related<br />

items.<br />

Test documents can be test suite or test group<br />

documents. Test suites have a document model of<br />

Segment and a test management role of Test Suite.<br />

Test group documents have a document model of<br />

Segment and a segment setting of Group Document.<br />

Test cases have a document node of Node and a test<br />

management role of Test Case.<br />

For more information on the document model, see<br />

“Setting Up Documents” on page 97. For more<br />

information about test management roles, see “Setting<br />

the Test Management Role for Types” on page 112.<br />

Tests For Yes Related item that the test document or test case belongs to.<br />

Test Steps No FVA field that displays information from the Shared Test<br />

Steps field in a related test case.<br />

Type No Item type that pertains to particular workflow.<br />

Key Considerations<br />

<strong>MKS</strong> <strong>Integrity</strong> comes with a set of standard fields that are visible to all item types and all<br />

users.<br />

Field visibility rules based on item type are defined when creating a type. For more<br />

information, see “Setting Field Visibility for Types” on page 120.


When naming a field, <strong>MKS</strong> <strong>Integrity</strong> allows you to use a secondary name (the display<br />

name) that appears on the GUI.<br />

Working in Fields View<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage fields from one convenient<br />

location. Managing fields is carried out through the Fields view.<br />

CLI EQUIVALENT im fields<br />

To open the Fields view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

Workflows and Documents node, and select Fields. The Fields view displays.<br />

By default, the data filter in the Fields view displays all existing fields. You can search for a<br />

specific field by typing in the text filter and/or using the following filters:<br />

Filter Description<br />

visible in item type Displays fields visible in the specified item type.<br />

visible in all item types Displays fields common to all types.<br />

of field type Displays specific field types.<br />

For more information on using the data filter, see “Filtering Data” on page 18.<br />

Fields<br />

<strong>MKS</strong> <strong>Integrity</strong> has a standard set of default fields that are visible to all users for all item types.<br />

Fields are categories of data that can be associated with items. You can also create custom<br />

fields in <strong>MKS</strong> <strong>Integrity</strong>.<br />

NOTE Field visibility rules based on item type are defined when creating a type. For<br />

more information, see “Setting Field Visibility for Types” on page 120.<br />

Any changes you make in the Fields view have an immediate effect on your <strong>MKS</strong> <strong>Integrity</strong><br />

database. For general information on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, see<br />

“Introduction” on page 10.<br />

Through the Fields view, you can:<br />

edit the details for an existing field<br />

view the details for an existing field<br />

create a new field<br />

reposition, or change the order of presentation for a field<br />

delete an existing field<br />

125


Chapter 4: Workflow Management<br />

126<br />

Any changes you make within the Fields dialog box are implemented in the database<br />

immediately; you cannot cancel them. If you create a field with an incorrect type, you cannot<br />

delete it or change its type or definition. You can either rename it or make it invisible for all<br />

types.<br />

Using Display Names<br />

NOTE Certain standard fields are always visible and cannot be edited. For these<br />

standard fields, only the Description and Position panels appear. The standard<br />

fields are: ID, Modified By, Created By, Modified Date, and Created Date. You can<br />

provide a description for each standard field.<br />

When naming a field, <strong>MKS</strong> <strong>Integrity</strong> also allows you to use a secondary name that can be<br />

displayed to the user on the interface. This secondary name, known as the display name, is the<br />

field title that users see when working with <strong>MKS</strong> <strong>Integrity</strong>. Therefore, the field name is the<br />

name used by <strong>MKS</strong> <strong>Integrity</strong> to identify the field, and the display name is the text displayed<br />

to the user.<br />

When naming a field, <strong>MKS</strong> <strong>Integrity</strong> automatically enters the same selected name in the<br />

Display Name field; however, you can choose a different name to use as the display name.<br />

Display names are useful for clarifying the terminology presented to users on the interface.<br />

For example, you may want to use acronyms or short forms when naming your fields, but<br />

then provide the full text name as the field title that is presented to users, such as a field name<br />

Mgr with a display name Manager. You could also use display names to simplify titles, such<br />

as a field name Created Date with a display name Created On.<br />

NOTE Display names are not intended as a method for translating or localizing<br />

information presented on the interface.<br />

To avoid confusion for users, display names must be unique for fields referenced within a<br />

single type. Fields referenced across multiple types do not need to have unique display<br />

names. For non-unique display names referenced across multiple types, <strong>MKS</strong> <strong>Integrity</strong><br />

appends detailed information or displays tooltips to help the user identify the field.<br />

In the presentation template designer, display names are also used by default for the titles of<br />

fields that you insert into your custom template. For more information on working with<br />

custom presentation templates, see “Customizing Item Presentation” on page 188.<br />

TIP To view the column for display names from the GUI, right click the column<br />

header, and select Display Names from the shortcut menu.


Creating Fields<br />

Fields<br />

<strong>MKS</strong> <strong>Integrity</strong> is installed with a set of default fields, and you can also create custom fields to<br />

suit your work process. Default fields cannot be deleted.<br />

IMPORTANT When creating custom fields used in item types, custom indexes may<br />

need to be created for your database. Contact your Database Administrator (DBA)<br />

for assistance.<br />

You can create the following types of fields.<br />

Field Type Description<br />

Attachment For including attachments, such as design documents.<br />

Note: You can create relevance and editability rules on<br />

attachment fields; however, you cannot include attachment<br />

fields in the definition of a rule.<br />

Integer For simple, countable items, such as call tracking numbers.<br />

Item Backed Picklist (IBPL) For displaying values from one or more items in a picklist. For<br />

more information, see “Item Backed Picklist Fields” on<br />

page 129<br />

Field Value Attribute (FVA) For sharing field information from a linked item. For more<br />

information, see “Field Value Attribute Fields” on page 129<br />

Picklist Specifies items that should display in a drop-down list, such as<br />

predefined product codes. You can also choose an option that<br />

allows users to select multiple picklist values.<br />

Note: Once you use a picklist value, that value cannot be used<br />

again, even if you delete the pick field that is associated with it.<br />

Similarly, you cannot change the picklist value once you have<br />

set it.<br />

Floating Point For numbers with decimals, such as performance data.<br />

Logical For Boolean items (ones that are either true or false), such as<br />

whether an item has been tested.<br />

Date For dates, such as when a defect was fixed. Optionally, you<br />

can include the time.<br />

Short Text For miscellaneous information, such as a comment field. You<br />

can define suggestions to appear in this field.<br />

Long Text For miscellaneous information. You can display information in<br />

this field in rows.<br />

User For users that display in a drop-down list, such as users in a<br />

specific group.<br />

Group Fields For groups that display in a drop-down list, such as groups<br />

assigned to a specific project.<br />

127


Chapter 4: Workflow Management<br />

128<br />

Field Type Description<br />

Relationship Fields Relationship fields enable you to link one item to another.<br />

For more information, see “Relationship Fields” on page 128.<br />

Trace Relationship Fields Trace relationship fields enable you to create trace<br />

relationships between two items in the document model.<br />

Phase For categorizing groups of states in a workflow. For more<br />

information, see “If an FVA field is backed by a text field with<br />

parameter substitution, when you view the item through a view<br />

or report that supports parameter substitution, the substituted<br />

values from the item containing the backing field are displayed<br />

in the FVA field on the current item. For more information, see<br />

“Using Parameters and Parameter Values Fields” on<br />

page 138.” on page 130.<br />

Query Backed Relationship For displaying a large number of related items in a read-only<br />

relationships field, based on a query. For example, the<br />

Features field in a Project item could display all the Feature<br />

items that are returned by the Release_5_Features query.<br />

Range For categorizing numeric value ranges in an associated<br />

numeric field (integer or floating point). For more information,<br />

see “Range Fields” on page 130.<br />

Relationship Fields<br />

You can create relationship fields to link items for reference purposes, such as linking<br />

duplicate items, or linking features and their defects. You can also create relationship fields to<br />

link items for the purposes of tracking and monitoring. For example, you can create a Sub<br />

Features relationship field on a Feature item type to link a master feature to a group of<br />

secondary features, which in turn can have relationship fields that link to defect and<br />

documentation items. Users can then track the overall development progress for a master<br />

feature by reviewing its hierarchy of related items using the Relationships view. For more<br />

information on the Relationships view, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Every relationship consists of a pair of relationship fields: one for the forward relationship<br />

and one for the backward relationship. Forward relationships are relationships where the<br />

related item is a child of the original item. Backward relationships are relationships where the<br />

related item is a parent of the original item. For example, you could create a forward<br />

relationship field named Sub Features to link master features to their sub features, and a<br />

backward relationship field named Master Feature to link sub features to their master feature.<br />

Users can create a relationship from either the child or the parent, and the corresponding<br />

field in the related item is updated automatically.<br />

To learn how to define a relationships field as a trace for use in document types, see the last<br />

section of “Creating Document Types” on page 104.


Item Backed Picklist Fields<br />

Fields<br />

An item backed picklist (IBPL) field displays the values of one or more fields from another<br />

item type as picklist values. The item type that the values are based on is known as the<br />

backing item type. Whenever a value in one of the fields is updated in a backing item, all items<br />

with IBPL fields that reference that value are updated to reflect the new value.<br />

For example, if you create an IBPL field named Documentation on the Defect item type,<br />

backed by the ID field on the Documentation item type, ID field values in all Documentation<br />

items appear as pick text in the Documentation IBPL field in Defect items. If you wanted to<br />

show more information in the pick text, the Documentation field could be backed by the<br />

Project and Summary field as well as the ID field. The values from these fields would be<br />

combined to form more descriptive picklist values.<br />

Only values from active backing items are displayed in IBPL fields. You determine the<br />

criteria for active items by specifying the active states, and by defining a filter for any<br />

additional criteria that you require. The item type, active states, and additional filter criteria<br />

are used together to filter the values that appear in the IBPL field.<br />

If a selected picklist value becomes inactive, it still displays in the IBPL field, unless you edit<br />

that field.<br />

Note the following:<br />

The name of the IBPL field cannot be the same as the referenced field in the backing item<br />

type.<br />

If a new or existing IBPL field is multi-valued, it cannot be used as a relationship for a<br />

Field Value Attribute (FVA) field. When creating an FVA field, the IBPL field does not<br />

appear in the relationship field.<br />

Field Value Attribute Fields<br />

If an item is related to another item through a single-valued relationship field or IBPL field,<br />

you can share information from the related item in an FVA field. For example, if Department<br />

items have a Manager field and a Phone Extension field, and Department items can be related<br />

to Defect items through a Manager IBPL field on the Defect, you can also create an FVA field<br />

on the Defect named Extension to Call that displays the phone number for the selected<br />

department manager. If you change the Phone Extension in the Department item, that change<br />

is reflected in the Defect item.<br />

Note the following:<br />

You cannot create an FVA field backed by a range field that is based on a numerical field<br />

value attribute field.<br />

Users cannot edit an FVA field if it has no backing relationship.<br />

If you create an FVA rich content field, it can only access attachments from an FVA<br />

attachment field over the same relationship as the FVA rich content field. This keeps the<br />

text and image data together. If the rich content field is not an FVA field, it should use<br />

129


Chapter 4: Workflow Management<br />

130<br />

non-FVA attachment fields. If you create a type with visible FVA and non-FVA rich<br />

content and attachment fields, <strong>MKS</strong> <strong>Integrity</strong> only displays attachment fields visible to<br />

the user in the GUI or Web interface. From the CLI, the user must know which<br />

attachment fields to use with rich content fields.<br />

If an FVA field is backed by a text field with parameter substitution, when you view the<br />

item through a view or report that supports parameter substitution, the substituted<br />

values from the item containing the backing field are displayed in the FVA field on the<br />

current item. For more information, see “Using Parameters and Parameter Values<br />

Fields” on page 138.<br />

Phase Fields<br />

Phases are useful for organizing an item type’s workflow if it contains a large number of<br />

states and provide users with a broad overview of an item’s status independent of the<br />

workflow. For example, a Feature type could have the following phases (states are in<br />

parentheses):<br />

Requirements (Draft 1, First Draft Signoff, ...)<br />

Design (Update Data Model, ...)<br />

Development (In Development, Unit Testing, ...)<br />

Testing (White Box Testing, Black Box Testing, Regression Testing, ...)<br />

Implementation (Planning, Implementation, ...)<br />

Post-Implementation Maintenance (Patch 1 In Progress, ...)<br />

You can create any number of phases for a phase field. States not grouped into a phase are<br />

referred to as out of phase states. When an item is in an out of phase state, the phase field<br />

displays Out of Phase.<br />

Range Fields<br />

A range field is a computed picklist field associated with a numeric field: range limits and the<br />

associated field are stored in the computation expression and the range category name and<br />

icon are stored in the database as picklist items. When a value is entered in the associated<br />

numeric field, the appropriate range category displays in the range field. Range fields are<br />

useful for defining thresholds for numeric data and providing a broad overview of that data.<br />

For example, if a Project type has an integer field called Critical Defects that displays the<br />

number of Defect items marked Critical, you could add a range field called Defect Status<br />

that displays one of the following range categories based on the number of items in the<br />

Critical Defects field:<br />

Golden ("Critical Defects" = 0)<br />

Acceptable (1


Fields<br />

You can also add visual indicators to a range field by using customized images for each range<br />

category or by using the item presentation template designer to render range fields<br />

differently for each range category. For example, in the Defect Status field you could render<br />

Golden as black text on a white background, Acceptable as blue text on a white<br />

background, Watch as black text on a yellow background, and Trouble as red text on a<br />

yellow background.<br />

NOTE<br />

You cannot specify different range category names and icons for types; however,<br />

you can specify different range limits for types.<br />

Range field values are automatically determined based on an associated numeric<br />

field. You cannot edit range fields in an Item Details view.<br />

Range fields cannot contain an associated field that includes a computed<br />

expression with an external information function.<br />

Range value limits can be overridden on a per type basis; however, you cannot<br />

override range category names and icons.<br />

SI Project Fields<br />

SI project fields allow users to specify a related configuration management project, optionally<br />

including a checkpoint revision or development path. By creating a configuration<br />

management project field and a computed field that uses the SIMetric() external<br />

information function, you can retrieve metrics about the specified project, for example, how<br />

many lines of code are in the project. For more information on creating configuration<br />

management project metrics, see “Using Configuration Management Project Metrics” on<br />

page 280. For more information on external information functions and computed fields, see<br />

“Computed Expressions” on page 291.<br />

IMPORTANT<br />

Metrics are only maintained against project checkpoints; therefore, to generate<br />

metrics users must specify a checkpoint when they specify the configuration<br />

management project.<br />

Configuration management project fields cannot be specified in any type of rule.<br />

To allow users to specify a related configuration management project when<br />

creating or editing an item, you must enable and properly configure the<br />

workflow and document, and configuration management integration. For more<br />

information, refer to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration<br />

<strong>Guide</strong>. You must restart the server for this change to take effect.<br />

To create a field in the GUI<br />

CLI EQUIVALENT im createfield<br />

1 From the Fields view (see “Fields” on page 121), select Field > Create. The Create Field<br />

dialog box displays.<br />

131


Chapter 4: Workflow Management<br />

132<br />

2 In the Name field, type a new name for the field. This is the name you use to refer to the<br />

field in <strong>MKS</strong> <strong>Integrity</strong>. The Name field allows 100 alphanumeric characters.<br />

In the Display Name field, <strong>MKS</strong> <strong>Integrity</strong> automatically enters the same selected name.<br />

Display names are the field titles that users see when working with <strong>MKS</strong> <strong>Integrity</strong>.<br />

You can choose a different name to use as the display name. Display names are useful<br />

for clarifying the terminology presented to users on the interface. For more information,<br />

see “Using Display Names” on page 126.<br />

3 On the Values panel, from the Data Type list select a data type for the field. When you<br />

select a data type, the values the field can accept display below. For more information,<br />

see the following.<br />

“Attachment Fields: Values Tab” on page 443<br />

“Integer Fields: Values Tab” on page 443<br />

“Item Backed Picklist Fields: Values Tab” on page 444<br />

“Field Value Attribute Fields: Values Tab” on page 444<br />

“Pick Fields: Values Tab” on page 445<br />

“Floating Point Fields: Values Tab” on page 445<br />

“Logical Data Fields: Values Tab” on page 446<br />

“Date Fields: Values Tab” on page 446<br />

“Short Text Fields: Values Tab” on page 447<br />

“Long Text Fields: Values Tab” on page 448<br />

“User Fields: Values Tab” on page 449<br />

“Group Fields: Values Tab” on page 450<br />

“Relationship Fields: Values Tab” on page 450<br />

“Phase Fields: Values Tab” on page 452<br />

“Query Backed Relationship Fields: Values Tab” on page 452<br />

“Range Fields: Values Tab” on page 453<br />

NOTE The Values panel is unavailable for standard fields, such as Type, ID, Created<br />

Date, Created By, Modified Date, and Modified By.<br />

4 Edit the field information as needed:<br />

To type a more detailed textual description of the field, such as the field’s purpose<br />

or what distinguishes this field from others, click the Description tab.


Fields<br />

To customize the order the fields display in, click the Position tab to display the<br />

Position panel, and use the Move Up and Move Down buttons to change the order in<br />

the list. This order is used throughout <strong>MKS</strong> <strong>Integrity</strong>.<br />

To specify default columns for relationship fields, click the Default Columns tab to<br />

display the Default Columns panel. For more information, see “Specifying Default<br />

Columns” on page 133.<br />

To set field relevance, click the Relevance tab. For more information, see “Setting<br />

Field Relevance” on page 133.<br />

To set field editability, click the Editability tab. For more information, see “Setting<br />

Field Editability” on page 135.<br />

To set field rules, click the Rules tab. For more information, see “Setting Field Rules”<br />

on page 137.<br />

5 When you are finished setting the field’s properties, click OK.<br />

Specifying Default Columns<br />

You can specify default columns for fields types Relationship and Query Backed<br />

Relationship.<br />

Use the Forward tab to specify the columns displayed on the forward relationship field and<br />

the Backward tab for the columns displayed on the backward relationship field. The<br />

customization of the two fields are independent of each other, but both can be specified from<br />

just one of the fields (you are not required to edit both fields).<br />

For information on filtering data to specify fields and the common interactors on the panel,<br />

see the <strong>MKS</strong> <strong>Integrity</strong> Client <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

Setting Field Relevance<br />

Relevance is a set of field conditions that determine which fields are relevant to selected<br />

groups of users or to specified field values. Fields that do not meet the relevance rules are not<br />

visible to users.<br />

You can define specific conditions that make a field relevant to selected groups of users or<br />

items with field values. Fields that do not meet relevance rules are not visible to users.<br />

Relevance allows you to create subsets of information that make it easier for users to create<br />

and edit items.<br />

Relevance uses logical conditions based on user groups and field values to make up a rule.<br />

These rules apply item by item and not by type definition.<br />

If you create a dynamic group related to a specific project, you can also choose to make a field<br />

relevant only to members of that group.<br />

Relevance is not a security mechanism for controlling access to information in <strong>MKS</strong> <strong>Integrity</strong>.<br />

For purposes of security, <strong>MKS</strong> <strong>Integrity</strong> includes project, type, and field visibility rules to<br />

133


Chapter 4: Workflow Management<br />

134<br />

control user access to information. For more information on visibility rules, see “Setting<br />

Workflow and Document Project Visibility” on page 250, “Setting Type Visibility” on<br />

page 114, and “Setting Field Visibility for Types” on page 120.<br />

NOTE Relevance rules are evaluated on the <strong>MKS</strong> <strong>Integrity</strong> Client’s time zone.<br />

To define field relevance in the GUI<br />

CLI EQUIVALENT im createfield or im editfield<br />

NOTE Relevance does not apply for fields ID, Created Date, Created By, Modified<br />

Date, Modified By, and Type.<br />

1 From the Create Field or Edit Field dialog box, click the Relevance tab. For more<br />

information on the dialog box, see “Creating Fields” on page 127 or “Editing Fields” on<br />

page 140. The Relevance panel displays.<br />

2 To prevent the field from being displayed, enable Never Relevant. This option is useful if<br />

you want to hide read-only custom fields (that is, phase, range, computed) in Item Detail<br />

and Items views, but still be able to query on them. Enabling this option replaces any<br />

existing rules with false, removing all remaining options in the panel. If you enable this<br />

option, proceed directly to the final step of this procedure.<br />

3 Under Condition, define the conditions that make the selected field relevant to the<br />

selected user, groups, or field values. For more information, see “Defining Rules” on<br />

page 43.


4 Under Copy, copy relevance rules from another field. Do one of the following:<br />

Fields<br />

Click Add to copy relevance rules from another field. The copied rules are appended<br />

to any existing rules.<br />

NOTE If the field you are copying has a false relevance rule (never relevant), the<br />

rule does not appear. This means that a false relevance rule cannot be copied.<br />

Click Replace to copy relevance rules from another field to replace any existing<br />

rules. The Rule Selection dialog box displays.<br />

In the Objects with Rules list, select the field that you want to copy a rule from. If the<br />

field has a rule, that field displays in the Preview area.<br />

Click OK. The rule displays in the Relevance panel.<br />

5 Click OK to save the relevance rule(s).<br />

Setting Field Editability<br />

You can define the conditions that give users permission to edit a field. If you create a<br />

dynamic group related to a specific project, you can also choose to make a field editable only<br />

by members of that group.<br />

Key Considerations<br />

Editability rules are evaluated on the <strong>MKS</strong> <strong>Integrity</strong> Client’s time zone.<br />

Editability does not apply for fields ID, Created Date, Created By, Modified Date, Modified By,<br />

and Type. It also does not apply for phase, range, item backed picklist, query backed<br />

relationship, and computed fields.<br />

Editability rules cannot include a computed expression that requires an external<br />

information function. For more information on computed expressions, see “Computed<br />

Expressions” on page 291.<br />

To define field editability in the GUI<br />

CLI EQUIVALENT im createfield or im editfield<br />

1 From the Create Field or Edit Field dialog box, click the Editability tab. For more<br />

information on the dialog box, see “Creating Fields” on page 127 or “Editing Fields” on<br />

page 140. The Editability panel displays.<br />

135


Chapter 4: Workflow Management<br />

136<br />

To prevent the field from being edited, enable Never Editable. This option is useful for<br />

fields that are updated by event triggers and are not meant to be edited by users. For<br />

example, you could create a date field where the date is automatically specified when the<br />

item enters a certain state. If you enable this option, proceed directly to the final step of<br />

this procedure.<br />

NOTE By default, this option is enabled for read-only custom fields (that is, phase,<br />

range, field value attribute (FVA), computed) and cannot be disabled.<br />

2 Under Condition, define the conditions this field should be editable under. For more<br />

information, see “Defining Rules” on page 43.<br />

3 Under Copy, do one of the following:<br />

Click Add to copy editability rules from another field. The copied rules are<br />

appended to any existing rules.<br />

If the field you are copying has a false editability rule (never editable), the rule<br />

does not appear. This means that a false editability rule cannot be copied.<br />

Click Replace to copy editability rules from another field to replace any existing<br />

rules. The Rule Selection dialog box displays.<br />

In the Objects with Rules list, select the field that you want to copy a rule from. If the<br />

field has a rule, that field displays in the Preview area.


Click OK. The rule displays in the Editability panel.<br />

NOTE If the field type is a phase, range, item backed picklist, query backed<br />

relationship, or computed field, a false rule automatically displays in the<br />

Editability panel. These field types display read-only values and cannot be edited.<br />

4 Click OK to save the editability rule(s).<br />

Setting Field Rules<br />

You can select and configure rules that control how a field works. You can select multiple<br />

rules for one field. Currently, rules are only available for relationship fields.<br />

To define a field rule in the GUI<br />

CLI EQUIVALENT im createfield or im editfield<br />

Fields<br />

1 From the Create Field or Edit Field dialog box, click the Rules tab. For more information<br />

on the dialog box, see “Creating Fields” on page 127 or “Editing Fields” on page 140. The<br />

Rules panel displays.<br />

2 Click New. The Rules Wizard dialog box displays.<br />

3 Type a name for the rule.<br />

4 Select a template to use for the rule. The rule description displays in the field below.<br />

5 Click a rule parameter (with links shown in blue) in the rule description. A dialog box<br />

displays, allowing you to set the value(s) for the parameter.<br />

Repeat this step until there are values set for all the required parameters in the rule.<br />

6 Click OK. The rule displays in the Rules tab.<br />

Setting Field Description<br />

You can specify a text description of a field. This description displays as a tooltip when users<br />

point to the field name in the GUI or Web interface.<br />

To specify a field description in the GUI<br />

CLI EQUIVALENT im createfield or im editfield<br />

1 From the Create Field or Edit Field dialog box, click the Description tab. For more<br />

information on the dialog box, see “Creating Fields” on page 127 or “Editing Fields” on<br />

page 140. The Description panel displays.<br />

2 Type a text description of the specified field.<br />

3 Click OK to save your changes.<br />

137


Chapter 4: Workflow Management<br />

138<br />

Using Parameters and Parameter Values Fields<br />

Parameters are a special type of long text field. You can make the default fields visible on<br />

item types, but you cannot create new Parameters or Parameter Values fields.<br />

You use these fields to specify valid parameters and parameter values for an item type. Users<br />

can then specify the appropriate parameters for individual items. For more information on<br />

how users work with Parameters and Parameter Values fields, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong><br />

User <strong>Guide</strong>.<br />

Parameters allow you to reuse an item in different contexts by being able to specify unique<br />

item values for each context. Parameters are typically used in the requirements management<br />

and test management domains. For example, you could have a test case item with parameters<br />

that display different values for different test sessions.<br />

Example<br />

The ABC watch company produces a number of waterproof watch models. Each watch is<br />

tested underwater, but the depth requirement is different for each model. If the waterproof<br />

depth is a parameter value, then the same test can be used for each model, but the value of<br />

the depth parameter will change based on the model being tested. If there are multiple tests<br />

for the different amounts of time the watch should work underwater, making the depth a<br />

parameter also ensures that if the depth requirement for a model changes, all the tests for that<br />

model would use the new value.<br />

<strong>MKS</strong> <strong>Integrity</strong> determines what parameters can be specified and what parameter values are<br />

substituted in text fields based on items that are related to the item being edited or viewed.<br />

How <strong>MKS</strong> <strong>Integrity</strong> Determines Parameters and Parameter Values for an Item<br />

<strong>MKS</strong> <strong>Integrity</strong> uses the following process to determine the parameters and parameter values<br />

that display in a Parameter Values field when viewing an item, and that are substituted for<br />

parameter names in short and long text fields when viewing an item.<br />

<strong>MKS</strong> <strong>Integrity</strong> searches a hierarchy of items that are related to the current item. It searches for<br />

parameters and parameter values that are defined in the related item, or that are shared with<br />

the related item through a Field Value Attribute (FVA) field backed by a parameters or<br />

parameter values field.<br />

The following hierarchy of related items is considered when determining parameters and<br />

parameter values for an item:<br />

1 Shared parameters from a related project item. For example, the related project item has<br />

an FVA field that displays a parameter value from the application item.<br />

2 Parameters defined in the related project item.<br />

3 Shared parameters from a related test session item.<br />

4 Parameters defined in the related test session item.


5 Shared parameters from a related document content item linked through a Shares<br />

relationship.<br />

6 Parameters defined in a related document content item linked through a Shares<br />

relationship.<br />

Fields<br />

7 Shared parameters from the closest related document root item, for example, a test suite.<br />

8 Parameters defined in the closest related document root item.<br />

The next two steps only apply when substituting parameters in FVA fields backed by a<br />

text field with parameter substitution, or when substituting parameters in text fields for<br />

items in a relationship table field.<br />

9 Shared parameters from the item containing the backing field or from the item<br />

represented by the table row.<br />

10 Parameters defined in the item containing the backing field for an FVA field or in the<br />

item represented by the table row.<br />

11 Shared parameters on the current item.<br />

12 Parameters defined in the current item.<br />

Parameter values higher in the hierarchy are overridden by parameter values lower in the<br />

hierarchy, unless the parameter value is locked, in which case the value locked at the highest<br />

point in the hierarchy is used. If the relationship does not exist, <strong>MKS</strong> <strong>Integrity</strong> skips that step<br />

and continues down the hierarchy.<br />

Example<br />

NOTE If you change a parameter value in an item, and you have an item that is<br />

lower in the hierarchy open, you must refresh the view of the lower level item in<br />

order to see the updates.<br />

The ABC watch company produces a number of waterproof watch models. Each watch is<br />

tested underwater, but the depth requirement is different for each model. The waterproof<br />

depth is a parameter.<br />

If the following parameters and parameter values are defined:<br />

The project item for the new waterproof watches has a Depth parameter with a value of<br />

25 metres.<br />

The test suite for watch model A has a Depth parameter value with a value of 25<br />

metres.<br />

The test suite for watch model B had a value of of 10 metres.<br />

The test cases, which are shared across the test suites for watch models A and B, specify<br />

the depth parameter in a text field: {{Depth}}.<br />

139


Chapter 4: Workflow Management<br />

Editing Fields<br />

140<br />

When viewing the test cases for the model A test suite, a value of 25 metres displays in the<br />

text field.<br />

When viewing the test cases for the model B test suite, a value of 10 metres displays in the<br />

text field.<br />

You can edit field details, including editability, relevance, description, and position.<br />

To edit a field in the GUI<br />

CLI EQUIVALENT im editfield<br />

1 From the Fields view (see “Fields” on page 121), select the field you want to edit.<br />

2 Select Field > Edit. The Edit Field dialog box displays.<br />

3 Edit the field information as needed.<br />

For more information about the fields and tabbed panels in this dialog box, see “To<br />

create a field in the GUI” on page 131.<br />

NOTE<br />

When editing the maximum length of a short text or long text field, decreasing<br />

the value does not truncate existing data or affect how data is displayed in the<br />

Items view.<br />

If you specify an inactive value for a user, group, or project field with a default<br />

value, the existing value is cleared when you relaunch the Edit Field dialog box.<br />

For multi-valued user and group fields, the entire field value is cleared even if<br />

you specify one inactive value.<br />

To view a history of administrative changes for the selected field, click the History<br />

tab. The record of changes displays.<br />

To determine which fields are referenced by any given type, click the Usage tab. The<br />

Usage panel shows what types refer to the field and what attributes have been<br />

overridden for that type. For types used in document model, the Usage panel shows<br />

which fields are significant and which ones are copied when a document is<br />

branched. To learn about document branching and significant fields, see “Setting<br />

Up Documents” on page 97.<br />

To determine all objects that reference the field, click the References tab. For<br />

information on the contents of the tab, see “To manage admin provided objects in<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client” on page 244.<br />

4 Click OK to save your changes.


Viewing Fields<br />

You can view detailed information for existing fields. You can only view the details for one<br />

field at a time.<br />

To view a field in the GUI<br />

CLI EQUIVALENT im viewfield<br />

1 From the Fields view (see “Fields” on page 121), select the field you want to view.<br />

2 Select Field > View. The View Field dialog box displays. For more information about the<br />

fields and tabbed panels in this dialog box, see “To create a field in the GUI” on<br />

page 131, and “To edit a field in the GUI” on page 140.<br />

NOTE You cannot change information that displays in a view mode.<br />

3 When you are finished viewing, click Close.<br />

Deactivating Picklist Values<br />

Setting a picklist value to inactive means that in the GUI it is not displayed in any filtered<br />

picklists, such as Severity; however, an inactive picklist value can still be selected using the<br />

Select button in the Web interface and is denoted with the [Inactive] tag.<br />

Fields<br />

By deactivating picklist values, the picklist is filtered to display only those picklist values that<br />

are currently active in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Key Considerations<br />

Inactive picklist values continue to display in fields, history, query filters, relevance and<br />

editability rules, field relationship filters, charts, and reports.<br />

Inactive picklist values can be selected in query filters, relevance and editability rules,<br />

field relationships, charts, and reports.<br />

Inactive picklist values cannot be selected in fields; however, fields retain inactive<br />

picklist values. If a user edits a multi-valued picklist, inactive picklist values are no<br />

longer valid selections, even if only one of the values was previously inactive.<br />

If one or more active picklist values are referenced in a trigger field assignment and you<br />

attempt to make one of those values inactive, an error message displays the picklist<br />

values and the trigger(s) where the assignment occurs. The references in the event<br />

trigger(s) must be removed before making a picklist value inactive.<br />

141


Chapter 4: Workflow Management<br />

Deleting Fields<br />

142<br />

To deactivate a picklist value in the GUI<br />

CLI EQUIVALENT im editfield<br />

1 From the Fields view (see “Working in Fields View” on page 125), select the pick field<br />

you want to edit.<br />

2 Select Fields > Edit. The Edit Field dialog box displays.<br />

3 Select the picklist value you want to deactivate, and click Edit. The Edit Pick dialog box<br />

displays.<br />

4 To deactivate the picklist value, clear the Active check box.<br />

5 To save the changes, click OK. The changes take effect immediately in the <strong>MKS</strong> <strong>Integrity</strong><br />

database. Inactive picklist values are denoted by the [Inactive] tag.<br />

6 To save the pick field, click OK.<br />

You can delete fields, even if items have already been created that use that field. However, to<br />

delete a field, all objects must be edited so that they no longer contain references to that field.<br />

You can view references from the References tab when viewing a field (see “Viewing Fields”<br />

on page 141). For a list of objects that can reference a field, see “To manage admin provided<br />

objects in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client” on page 244.<br />

You cannot delete a field that has historical references to that field in the history of one or<br />

more items. You must first delete the items that have entries for the field in their histories.<br />

CAUTION Deleting a field is permanent. That data cannot be restored after command<br />

completion. Ensure that you back up your database before deleting a field.<br />

IMPORTANT Deleting a field of the Relationship data type also deletes its partner<br />

field. By default, you are asked to confirm that the server delete the partner field. For<br />

more information on such fields, see “Managing Field Relationships” on page 143.<br />

To delete a field in the GUI<br />

CLI EQUIVALENT im deletefield<br />

1 From the Fields view (see “Working in Fields View” on page 125), select the field you<br />

want to delete.<br />

2 View the field (see “Viewing Fields” on page 141), and examine the References tab to<br />

ensure that there are no references to the field.


Moving Fields<br />

3 Return to the Fields view, and with the field you are deleting selected, select Field ><br />

Delete. The Confirm Delete Field dialog box displays.<br />

4 To confirm field deletion, click Yes.<br />

You can customize the order fields display in. The order in the Fields dialog box is the order<br />

in <strong>MKS</strong> <strong>Integrity</strong>.<br />

To change the order of the fields in the GUI<br />

CLI EQUIVALENT im editfield<br />

1 From the Fields view (see “Working in Fields View” on page 125), select Field ><br />

Reposition. The Reposition Fields dialog box displays.<br />

2 Select the field you want to move, and click Move Up or Move Down.<br />

3 Click OK.<br />

Managing Field Relationships<br />

Fields<br />

Once you have types and corresponding fields for your types, you can use field relationships<br />

to customize the display of data in an item further. Field relationships allow for a finer level<br />

of control by making the available selections in a given field dependent on the values selected<br />

in another field. Field relationships can be used to subset data for specific groups in your<br />

organization and minimize long lists of selections.<br />

NOTE You cannot create a relationship to a field value attribute data type.<br />

When creating a field relationship, you select a Source Field that controls what displays in the<br />

Target Field. The source field and target field are also assigned a corresponding value. Before<br />

reading about how field relationships work, you should note the following rules apply:<br />

Field relationships are subject to visibility rules. Visibility rules restrict access to specific<br />

information based on project or item type. For more information, see “Setting Field<br />

Visibility for Types” on page 120 and “Setting Workflow and Document Project<br />

Visibility” on page 250.<br />

Field relationships are based on Type, which means that you can only create<br />

relationships between fields that exist within a single Type in your workflow.<br />

143


Chapter 4: Workflow Management<br />

144<br />

You can only use Type, State, Project, Assigned User, Assigned Group, custom User,<br />

custom Group, Boolean, or Picklist fields as source or target fields in a field relationship.<br />

NOTE If you are copying a type, Type is not available as a source or target field in a<br />

field relationship because the copied type has not been created yet.<br />

Field relationships can only be created on a one-to-one basis; one field is related to<br />

another field. However, you can select multiple values for a source or target field. You<br />

may also create many field relationships for the same source field to different target<br />

fields.<br />

When the target field is an item backed picklist (IBPL) field, the value selected in the<br />

source field controls which picklist values are displayed from the backing items. For<br />

these types of relationships, the source value is defined as a rule that compares the<br />

values between the value in the source field and the value for the same field in the items<br />

backing the IBPL target field.<br />

The following examples show how field relationships can be used in an organization:<br />

Source Field Target Field Function<br />

Project Assigned User or<br />

custom User<br />

State Assigned User or<br />

custom User<br />

Selection in Project field determines subset of user names in<br />

Assigned User or custom User field. Only users that work on<br />

selected project are available for selection.<br />

Selection in State field determines subset of user names in<br />

Assigned User, or custom User field. For example, a State -<br />

Assigned User field relationship ensures only users who are<br />

developers can be assigned item in state In Development.<br />

Assigned Group State Selection in Assigned Group field determines subset of states in<br />

State field. For example, if Assigned Group value is QA, only states<br />

that QA group members use are available for selection, such as In<br />

QA, Verified, and Failed QA.<br />

Assigned Group Assigned User or<br />

custom User<br />

Selection in Assigned Group field determines subset of user<br />

names in Assigned User or custom User field. Only users that are<br />

members of selected group are available for selection. If changes<br />

are made to membership of group, changes are dynamically<br />

updated throughout <strong>MKS</strong> <strong>Integrity</strong>.


Source Field Target Field Function<br />

Assigned Group Assigned User and<br />

State<br />

Access to field relationship functionality occurs in the Field Relationships view, which is<br />

contained in the Edit Type and Create Type dialog boxes.<br />

NOTE Because field relationships are based on Type, data must be sent to the server<br />

before any changes take effect. This means that once you have created, edited, or<br />

deleted field relationships, you must click OK on the Edit Type dialog box to send<br />

this information to the server. If you cancel the Edit Type dialog box, changes made<br />

to field relationships are lost.<br />

Fields<br />

In this view, you can customize the columns and sort order to organize the field relationships<br />

to suit your needs. For more information on customizing columns, see the <strong>MKS</strong> <strong>Integrity</strong><br />

Client <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

To open the Field Relationships view in the GUI<br />

CLI EQUIVALENT im edittype<br />

In this example, same source field (Assigned Group) has field<br />

relationship to two different targets. Selection in Assigned Group<br />

field determines subset of user names in Assigned User or custom<br />

User field, and also determines subset of states in State field. For<br />

example, if Assigned group is QA, then Assigned User must be<br />

member of group QA, and State can only be one that users in that<br />

group can use, such as In QA.<br />

Product Component In this example, the Component field is an item backed picklist field<br />

backed by the Component item type. You want the picklist values<br />

that come from the backing Component items to be filtered based<br />

on the value selected in the Product field. When you select a value<br />

in the Product field, only components items that have the same<br />

value in the product field are displayed. For example, if Product is<br />

Financial Toolkit then you could have Component picklist<br />

values such as Savings Manager and Amortization<br />

Calculator.<br />

1 From the Types view, select a type. The type you select here is the type the field<br />

relationship is based on. For more information on the Types view, see “Types” on<br />

page 82.<br />

2 Edit the selected type. The Edit Type dialog box displays. For information on editing<br />

types, see “Editing Types” on page 91.<br />

3 In the tree pane, select Field Relationships. The Field Relationships view displays.<br />

4 Use the Create, Edit, and Delete buttons to perform related tasks.<br />

145


Chapter 4: Workflow Management<br />

146<br />

Creating Field Relationships<br />

To create a field relationship, you must have a type with fields already defined. You can only<br />

create one field relationship at a time.<br />

NOTE You cannot create or edit fields while creating a field relationship.<br />

To create a field relationship in the GUI<br />

CLI EQUIVALENT im edittype<br />

1 From the Edit Type dialog box, in the tree pane select Field Relationships. For more<br />

information on the Edit Type dialog box, see “Editing Types” on page 91.<br />

2 Click Create. The Create a Field Relationship dialog box displays.<br />

3 From the Source Field list, select the field you want to control the other field.<br />

NOTE If you select Type as your source field, the only type available in the Source<br />

Values list is the one you selected when entering into the Edit Type dialog box. For<br />

more information, see “Editing Types” on page 91.<br />

4 From the Source Values list, select the corresponding value(s) for the Source Field. For<br />

example, if your source field is State, you can select one or more different state values,<br />

such as Unspecified, and Submit. If you select multiple values, then at least one of the<br />

values must be selected in the item field for the relationship to apply.<br />

If you select a user field from the Source Field list, a selection panel displays. For<br />

information on selecting users, see “Filtering Data” on page 18.<br />

5 From the Target Field list, select the field you want to specify values in.<br />

NOTE You cannot create a field relationship to a field value attribute (FVA).


6 Depending on your target field, do one of the following:<br />

Fields<br />

If you select Assigned User or any custom user field as the target field, proceed to<br />

step 7.<br />

If you select a field other than Assigned User or any custom user field as the target<br />

field, proceed directly to step 9.<br />

7 When you select Assigned User or any custom user field as the target field, a selection<br />

panel displays in the Static Values panel. For information on selecting users, see<br />

“Filtering Data” on page 18. You have the option to assign the value of this field to be<br />

populated based on a group (within the same realm), or select static values.<br />

To select a non-user value, see step 8.<br />

8 To assign the value based on a group, in the Dynamic Values panel do one of the<br />

following and proceed directly to step 9:<br />

Select Value Of, and the pane is populated with all visible group fields for the<br />

specified type. Select the Assigned Group or a custom group field from the active<br />

list. This selection populates the Assigned User or custom user field in the type<br />

definition with all users. However, when creating or editing an item, the values in a<br />

user field based on a group field are determined based on the users in the specified<br />

group.<br />

Select Member Of, and the pane is populated with all the valid groups. Select one or<br />

more groups from the active list. This selection populates the Assigned User or<br />

custom user field with all members in the specified group(s).<br />

NOTE If you select a dynamic group, it populates the Assigned User or custom<br />

user field in the type definition with all users. However, when creating or editing an<br />

item, the values in a user field based on a dynamic group are determined based on<br />

the current project for that item.<br />

147


Chapter 4: Workflow Management<br />

148<br />

9 In the Static Values list, select the corresponding value(s) for the target field. For<br />

example, if your target field is Project, you can select one or more different project<br />

values.<br />

10 Click OK. The field relationship displays in the Field Relationships view.<br />

11 To save the field relationship, click OK on the Edit Type dialog box.<br />

To create a rule-based field relationship in the GUI<br />

You can only create a rule-based field relationship for item backed picklist (IBPL) fields. This<br />

rule determines which values appear in the picklist.<br />

NOTE For general information on rule nodes and conditions, see “Rule Format” on<br />

page 43.<br />

1 From the Edit Type dialog box, in the tree pane select Field Relationships. For more<br />

information on the Edit Type dialog box, see “Editing Types” on page 91.<br />

2 Click Create (Rule Based). The Create Rule Based Field Relationship dialog box displays.


NOTE The only IBPL fields that display in the Target Field are those that are made<br />

visible in the type. If none are made visible in visible fields, then none display in the<br />

Target Field.<br />

Fields<br />

3 In the Target Field section, select a field from the list of IBPL fields for the type. The rule<br />

you define controls the items that appear as picklist values in this field.<br />

4 Select And or Or, depending on the type of logical connector you want to use between<br />

conditions.<br />

NOTE If you are creating a rule with only one condition, you do not need to select<br />

And or Or.<br />

Swap replaces the selected node with the opposite node. For example, swapping an Or<br />

node replaces it with an And node.<br />

Remove deletes the selected node.<br />

5 Under Condition, select the type of comparison used for the condition:<br />

Compare the value of a field with a constant<br />

This option filters IBPL values based on a comparison between a field in the backing<br />

items and a specific value.<br />

Compare the value of a field with the value of another field<br />

This option filters IBPL values based on a comparison between a field in the item<br />

being edited and a field in the backing items.<br />

Check a pre-condition associated with a document<br />

This option filters IBPL values based on conditions associated with components in<br />

the document model.<br />

149


Chapter 4: Workflow Management<br />

150<br />

For more information, see the ALM section of the <strong>MKS</strong> Customer Community<br />

Knowledge Base found at http://www.mks.com/community.<br />

6 Define the condition by specifying fields, operators and values.<br />

The following types of fields cannot be used in conditions: attachment fields, text fields,<br />

relationship fields, or dynamic computation fields.<br />

If you select a date field, you must compare it to another date field. Refer to step 7 if you<br />

are comparing a date field to a constant.<br />

When defining a condition, you specify whether the field or value applies to the item<br />

containing the item backed picklist field (Editing Item Value) or to the items backing the<br />

item backed picklist field (Target Field).<br />

For example, if you are comparing the value of a field with a constant, and you want the<br />

IBPL field values filtered based on a specific value in the Project field of the backing<br />

items, you would do the following:<br />

Select Project as the first part of the rule and specify it as the Target Field<br />

Select = as the operator<br />

Select Financial Toolkit 2.0 from the list of product values<br />

Only backing items with a Project field containing Financial Toolkit 2.0 display as<br />

values in the IBPL field.<br />

For example, if you are comparing the value of a field with the value of another field,<br />

and you want the IBPL field values filtered based on matching the value in the Project<br />

field of the item containing the IBPL and the items backing the IBPL, you would do the<br />

following:<br />

Select Project as the first part of the rule and specify it as an Editing Item Value<br />

Select = as the operator<br />

Select Project as the second part of the rule and specify it as the Target Field<br />

Only backing items with a Project field containing the same value as the Project field on<br />

the item being edited display as values in the IBPL field.<br />

NOTE<br />

For more information on using the data filter to select fields, see “Filtering Data”<br />

on page 18.<br />

For more information on operators, see “When working with conditions, the<br />

meaning of the operator depends on whether the field you are using in the rule is<br />

single or multi valued.” on page 44.<br />

7 If you are comparing the value of a date field with a constant, click Change. The Specify<br />

Date or Time dialog box displays. Do one of the following:


Fields<br />

Select a date from the calendar. If the date field is configured to display the time and<br />

you want to include it, select the Show time option (if not already enabled) and<br />

include a time from the calendar. The Show time option is enabled by default.<br />

Select now to specify the current date and time. This option displays only if the date<br />

field is configured to display the date and time.<br />

Select today to specify the current date and a time of 00:00:00 (midnight). This<br />

option can be specified for a date field or a date field configured to display the date<br />

and time.<br />

Select none to specify an empty value for the date field.<br />

To save the specified value, click OK.<br />

8 When you are finished constructing the condition, click Add. The condition displays<br />

under the selected node.<br />

9 When you have defined all your rules, click OK. The field relationship displays in the<br />

Field Relationships view.<br />

10 To save the field relationship, click OK on the Edit Type dialog box.<br />

Editing Field Relationships<br />

To change the source and target fields or their values, you can edit a field relationship. You<br />

can only edit one field relationship at a time.<br />

NOTE You cannot create or edit fields while editing a field relationship.<br />

To edit a field relationship in the GUI<br />

CLI EQUIVALENT im edittype<br />

1 From the Field Relationships view, select the field relationship you want to edit. For<br />

more information on the Field Relationships view, see “Managing Field Relationships”<br />

on page 143.<br />

2 Click Edit. The Edit a Field Relationship dialog box displays. The current field<br />

relationship settings display highlighted.<br />

3 Edit the field relationship as required. For more information on the lists in this dialog<br />

box, see “Creating Field Relationships” on page 146.<br />

4 Click OK. The field relationship displays in the Field Relationships view.<br />

5 To save the field relationship, click OK on the Edit Type dialog box.<br />

151


Chapter 4: Workflow Management<br />

Workflows<br />

152<br />

Deleting Field Relationships<br />

If a field relationship is no longer necessary, you can delete it.<br />

To delete a field relationship in the GUI<br />

CLI EQUIVALENT im edittype<br />

1 From the Field Relationships view, select the field relationship you want to delete. For<br />

more information on the Field Relationships view, see “Managing Field Relationships”<br />

on page 143.<br />

2 Click Delete. The Delete Field Relationship dialog box confirms the operation.<br />

3 Click Yes to continue. The field relationship no longer displays in the Field Relationship<br />

view.<br />

4 To delete the field relationship, click OK on the Edit Type dialog box.<br />

Each item follows a workflow, the process established by your administrator to capture and<br />

track information during your software development cycle. Each item type can have its own<br />

set of states to advance through the development cycle. For example, a change request may<br />

go through states such as submitted, work started, tested, reviewed, and closed. Items and<br />

their current states provide change management information necessary to support business<br />

decisions.<br />

The Workflow view is a graphical depiction. You also use it to create a workflow for an item<br />

type. The Workflow view cannot be used to import users and groups or to create projects,<br />

types, and fields. Only one workflow for one type can be opened in the Workflow view.<br />

Access to workflow functionality occurs in the Workflow view, which is contained in both<br />

the Create Type and Edit Type dialog boxes.<br />

NOTE Because workflows are based on Type, data must be sent to the server before<br />

any changes take effect. This means that once you have created or edited workflows,<br />

you must click OK on the Edit Type (or Create Type) dialog box to send this<br />

information to the server. If you cancel the Edit Type (or Create Type) dialog box,<br />

you will lose your changes to the workflow.<br />

To open the Workflow view in the GUI<br />

1 From the Types view, select a type. The type you select here is the type that uses the new<br />

workflow. For more information on the Types view, see “Types” on page 82.


Workflow View<br />

Title Bar<br />

Menu Bar<br />

Tree Pane<br />

Workflows<br />

2 Edit the selected type. For information on editing types, see “Editing Types” on page 91.<br />

The Edit Type dialog box displays with the Workflow view in focus.<br />

The Workflow view allows you to edit the selected workflow in graphical mode using drag<br />

and drop gestures, and menu options.<br />

Title Bar<br />

The title bar displays the name of the type whose workflow is opened, and the server and<br />

port number for the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> it resides on.<br />

Menu Bar<br />

The menu bar is located directly below the title bar and contains the menus: View, Edit, State,<br />

and Transition.<br />

Workflow<br />

Workflow Pane Groups/Mandatory Fields Box<br />

Available States Box<br />

The workflow is a graphical representation of the type’s workflow. The following items may<br />

be included in the workflow:<br />

153


Chapter 4: Workflow Management<br />

154<br />

A filled box denotes the Unspecified state. The Unspecified state always displays in<br />

the workflow and cannot be deleted.<br />

A clear box denotes a named state in the workflow. The name of the state is centered<br />

within the box. You cannot manually control the position of states in the workflow. The<br />

position of states is determined by the direction of the layout and the state transitions to<br />

and from the state.<br />

Underneath the name of a state, a name in brackets denotes a named phase in the<br />

workflow. Phases are optional read-only fields that specify categorized groups of states<br />

in a workflow, essentially creating states (represented by phases) and sub-states<br />

(represented by states) for an item type. Phases are useful for organizing an item type’s<br />

workflow if it contains a large number of states and provide users with a broad overview<br />

of an item’s status independent of the workflow.<br />

An arrow denotes a state transition moving in a direction of the layout (see “Viewing<br />

Workflow” on page 157).<br />

A blue outline denotes the currently selected state(s) or state transition(s). You can only<br />

multi select states together or state transitions together.<br />

Available States Box<br />

In the Available states box, the State column lists all states that are not currently in the type’s<br />

workflow, but that can be dragged or inserted into the workflow. The Phase column lists all<br />

phases that correspond to states, if any.<br />

Groups/Mandatory Fields Box<br />

The contents of this box change based on what is selected in the workflow. Selecting at least<br />

one state transition displays the Groups box, which contains a list of the groups of users who<br />

are permitted to make state transitions for the item type. The checkmarked boxes denote<br />

groups of users who are able to make the transition(s) selected in the workflow. When<br />

multiple state transitions are selected, gray checkmarks denote that the group is allowed in at<br />

least one selected state transition, not all.<br />

Selecting at least one state displays the Mandatory Fields dialog box, which contains a list of<br />

the fields for the item type. The checkmarked boxes denote fields that must contain values<br />

before the user is permitted to advance to that state in the workflow. When multiple states<br />

are selected, gray checkmarks denote that the field is mandatory for at least one selected state<br />

but not all.<br />

User Preferences<br />

User preferences that are automatically saved for each user when closing the Workflow view<br />

include:<br />

zoom factor<br />

layout direction


window size and location<br />

Creating Workflow<br />

Workflows<br />

Before using the Workflow view to create a workflow, you must first set up the following<br />

items:<br />

users (see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>)<br />

groups (see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>)<br />

projects (see “Creating Workflow and Document Projects” on page 252)<br />

states (see “Creating States” on page 78)<br />

types (see “Creating Types” on page 84)<br />

fields (see “Creating Fields” on page 127)<br />

To create a workflow in the GUI<br />

CLI EQUIVALENT im createtype<br />

1 Open the Workflow view (see “To open the Workflow view in the GUI” on page 152). If<br />

this is a workflow for a type that has no states inserted, only the default state<br />

Unspecified displays in the workflow.<br />

2 Insert a state into the workflow by doing one of the following:<br />

From the Available states box, drag a state onto the workflow.<br />

From the Available states box, right click the state you want to add, and select Insert.<br />

Select State > Insert > State Name, where State Name is the state you want to insert.<br />

The state displays in the workflow. By default, everyone can edit an item without<br />

advancing the state in the workflow. To change from the default, see “Configuring Self<br />

Transitions” on page 156).<br />

NOTE You cannot define a field or group in the Workflow view. If another<br />

administrator creates a new group or field while you have a Workflow view open,<br />

they are not available from the view until it is re-initiated.<br />

155


Chapter 4: Workflow Management<br />

156<br />

3 In the Workflow pane, select the state that you just added to the workflow. Then from<br />

the Mandatory fields dialog box, select the fields that the user is required to fill out before<br />

advancing to that state in the workflow.<br />

IMPORTANT If you set field visibility for groups or define a relevance rule for a<br />

mandatory field, you must ensure that it is both visible to users and relevant for all<br />

states for which it is mandatory (see “Creating Fields” on page 127).<br />

4 Create a state transition from a state in the workflow to the newly added state by doing<br />

one of the following:<br />

Drag the existing state in the workflow to the state added.<br />

Select the existing state in the workflow, and select State > Create Transition to ><br />

State Name, for example, submit.<br />

Right click the existing state in the workflow, and select Create Transition to > State<br />

Name.<br />

An arrow displays in the workflow from the existing state to the state added. The<br />

color of the arrow is determined by the layout direction of the workflow (see<br />

“Workflow View” on page 153 and “Viewing Workflow” on page 157).<br />

NOTE A state must have at least one state transition to be saved in the workflow.<br />

Every state transition must have at least one group assigned to it.<br />

5 Specify groups of users who are permitted to make the state transition. First select the<br />

state transition(s), then from Groups box select the groups. You must assign at least one<br />

group to each state transition in the workflow or you cannot save the workflow.<br />

6 Repeat this procedure to add additional states and state transitions to the workflow.<br />

When you complete the workflow, do one of the following:<br />

To save the workflow, click OK.<br />

To print the workflow, click Print (see “Printing Workflow” on page 161).<br />

To save the workflow as an image file, click Save Diagram, then follow the prompts<br />

(see “Saving Workflow as Image” on page 161).<br />

Configuring Self Transitions<br />

Self transitions allow users to edit the item without being required to advance it to another<br />

state in the workflow. By default, each state has a state transition to itself shared to the


everyone group. The self transition does not display in the workflow, but it can be<br />

configured as follows:<br />

1 In the Workflow pane (see “Workflow View” on page 153), do one of the following:<br />

Select the state you want to configure the self transition for, and select State ><br />

Configure Self Transition. The Configure Self Transition dialog box displays.<br />

Right click the state, then select Configure Self Transition.<br />

Workflows<br />

2 Select the groups that can edit the item in that state. Groups that are not selected can only<br />

edit the item by advancing the state in the workflow.<br />

3 Click OK.<br />

Viewing Workflow<br />

You can customize the appearance of the workflow.<br />

To view a workflow in the GUI<br />

CLI EQUIVALENT im viewtype<br />

1 From the Workflow view (see “To open the Workflow view in the GUI” on page 152),<br />

you can modify the appearance of the workflow in the following ways:<br />

To change the size of the workflow, select a zoom level from the View menu. The<br />

options are Zoom 100%, Zoom 75%, Zoom 50%, and Zoom to Fit. The zoom size<br />

determines the size of the workflow when it is printed or saved as an image.<br />

To change the layout of the workflow, select View > Layout and a layout option as<br />

follows:<br />

Up, the green arrows point from down to up<br />

Down, the green arrows point from up to down<br />

Right, the green arrows point from right to left<br />

Left, the green arrows point from left to right<br />

For example, if you perceive the workflow as climbing through the states to<br />

completion, use the Up layout option.<br />

157


Chapter 4: Workflow Management<br />

Managing Workflow<br />

158<br />

2 The following information is available using tooltips:<br />

Point to a state transition arrow in the workflow to view a tooltip of the groups<br />

permitted to make that transition.<br />

Point to a state box in the workflow to view a tooltip of the mandatory fields<br />

assigned to that state and the groups permitted to edit the type without being<br />

required to advance it in the workflow.<br />

You can edit the information in a workflow as part of its management.<br />

To manage a workflow in the GUI<br />

CLI EQUIVALENT im edittype<br />

1 Open the Workflow view (see “To open the Workflow view in the GUI” on page 152).<br />

2 To add additional states and state transitions, see “Creating Workflow” on page 155.<br />

3 To remove state transitions from the workflow, do one of the following:<br />

Select the transition(s) then Transition > Remove Delete.<br />

Right click the transition, and select Remove.<br />

NOTE You cannot save the workflow unless at least one group is assigned to each<br />

state transition in the workflow.<br />

4 To remove states from the workflow, do one of the following:<br />

Select the state(s) then State > Remove.<br />

Right click the state, and select Remove.<br />

In addition to the state, the state transitions to and from that state are removed. The<br />

Unspecified state cannot be deleted and must always exist in the workflow.


5 From the Edit menu, you can perform the following:<br />

To undo the last operation, select Edit > Undo.<br />

To redo the operation that undo was last performed on, select Edit > Redo.<br />

You can undo or redo up to 10 operations when performing the following:<br />

adding states<br />

removing states<br />

adding state transitions<br />

removing state transitions<br />

adding groups to selected state transitions<br />

removing groups from selected state transitions<br />

adding mandatory fields to selected states<br />

removing mandatory fields from selected states<br />

To create multiple state transitions to a single state in the GUI<br />

CLI EQUIVALENT im edittype<br />

Workflows<br />

1 Select the states from the workflow. For more information, see “Workflow View” on<br />

page 153.<br />

2 Select State > Create Transition to, and select a state name from the list. Arrows appear<br />

from the states you multi selected to the state you created selected from the State menu.<br />

To multi-edit state transitions in the GUI<br />

CLI EQUIVALENT im edittype<br />

1 Select the transitions you want to edit. For more information, see “Workflow View” on<br />

page 153.<br />

2 In the Groups box, groups that are assigned to all of the selected state transitions display<br />

a black checkmark. Groups that are assigned to some but not all of the selected state<br />

transitions display a gray checkmark. Clicking a check box either displays a black<br />

checkmark or clears an existing checkmark.<br />

3 Right click the group name you want to edit states transitions for. A context menu<br />

displays listing the state transitions you multi selected. State transitions for that group<br />

are checkmarked in the list.<br />

159


Chapter 4: Workflow Management<br />

160<br />

4 Select a state transition from the list to either assign it for the group or clear it from the<br />

assigned group. Repeat as necessary until the group is assigned to the desired state<br />

transitions.<br />

5 Repeat steps 3 and 4 for all groups you want to assign to state transitions.<br />

To multi-edit states in the GUI<br />

CLI EQUIVALENT im edittype<br />

1 Select the states you want to edit. For more information, see “Workflow View” on<br />

page 153.<br />

2 In the Mandatory fields box, fields that are mandatory for some but not for all of the<br />

selected states display a gray checkmark.<br />

3 Right click the field name you want to edit states for. A context menu displays listing the<br />

states you have multi selected. If the field is mandatory for that state, it is checkmarked<br />

in the list.<br />

4 Select a state from the list to assign it a mandatory field. Repeat as necessary until the<br />

field is mandatory for the desired states.<br />

5 Repeat steps 3 and 4 for all mandatory fields you want to assign to the states.


Printing Workflow<br />

Workflows<br />

You can print out the workflow in a variety of sizes, depending on the zoom factor (for more<br />

information, see “Viewing Workflow” on page 157).<br />

To fit the workflow on a single printed page, select View > Zoom to Fit before printing.<br />

To print a workflow in the GUI<br />

1 From the Workflow view (see “To open the Workflow view in the GUI” on page 152),<br />

click Print. A print dialog box displays.<br />

2 Select the print options you want.<br />

3 Click OK.<br />

Saving Workflow as Image<br />

You can save a copy of the workflow in an image format for use in documents or on Web<br />

pages. The zoom factor determines the size of the workflow in the saved image. For more<br />

information, see “Viewing Workflow” on page 157.<br />

To save a workflow as an image in the GUI<br />

1 From the Workflow view (see “To open the Workflow view in the GUI” on page 152),<br />

click Save Diagram. The Save Diagram dialog box displays.<br />

2 Enter the location where you want to save the image.<br />

3 Click Save.<br />

Testing Workflow With Admin Migration Wizard<br />

As part of the procedure for setting up workflows and documents, you can use the<br />

<strong>MKS</strong> <strong>Integrity</strong> Admin Migration Wizard (migration wizard) to test your workflows and<br />

documents configuration on a separate server before ultimately migrating a final<br />

configuration to your production <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

For the purpose of migrating workflow and document admin provided objects, the separate<br />

server for testing your configuration is called the staging server and the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

that users connect to is known as the production server. By default the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is<br />

always installed as a production server. The production server manages all aspects of<br />

<strong>MKS</strong> <strong>Integrity</strong>: workflows and documents, requirements, configuration management,<br />

testing, and deployment. The migration wizard allows you to test proposed changes<br />

thoroughly on the staging server before migrating those changes to the production server,<br />

avoiding the situation where live changes must be made in your production environment.<br />

161


Chapter 4: Workflow Management<br />

162<br />

The process helps you to work with the required admin provided objects to create a<br />

workflow that functions for your environment.<br />

Staging<br />

<strong>Server</strong><br />

Holds Lock on<br />

Production<br />

Admin Migration <strong>Server</strong> Configuration<br />

1<br />

Copy Database<br />

Migrate Objects<br />

2<br />

Production<br />

<strong>Server</strong><br />

Locked by Staging<br />

IMPORTANT Production and staging servers must be installed on separate machines.<br />

Both servers must be from the current release.<br />

To create a staging server, you must install a second <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> on a separate<br />

machine and then configure specified properties on that server.<br />

The staging server starts by using a copy of the <strong>MKS</strong> <strong>Integrity</strong> database from the production<br />

server. The two servers must have identical copies of the database or you cannot begin the<br />

initial migration configuration setup (later, changes to imported users and converted admin<br />

provided objects are automatically detected and can be imported from the production<br />

server). The database copy is created manually, based on the recommended procedures for<br />

the type of database you are using for your system. If assistance is required for managing the<br />

database, you should contact your database administrator.<br />

In starting up, the staging server automatically obtains a binding administrative lock on the<br />

production server. The administrative lock means that no changes can be made to workflow<br />

and document admin provided objects on the production server. The binding establishes an<br />

association between the two servers: the staging server is the server you want to test your<br />

workflow changes on, and the production server is the server you want to ultimately migrate<br />

the changes to. At any time, you may also lock the staging server to prevent changes from<br />

being made in your test environment.<br />

When you have made your desired changes on the staging server, the migration wizard<br />

allows you to transfer those changes to the production server. After a successful migration,<br />

the production server then has the same administrative configuration in <strong>MKS</strong> <strong>Integrity</strong> that<br />

existed on the staging server. You can also elect to transfer only specific changes to the<br />

production server. States, fields, workflows, and other admin provided objects migrated


Workflows<br />

from the staging server function in the same way on the production server. You can migrate<br />

admin provided objects repeatedly until all the desired changes are migrated.<br />

IMPORTANT Releasing the lock on the production server means that the binding link<br />

between the staging server and production server is lost and the two servers are no<br />

longer synchronized. Further staging work therefore requires a new copy of the<br />

database from the production server, including items outside of the database such as<br />

trigger scripts and workflow and document report templates.<br />

Admin provided objects and components that are migrated include the following:<br />

administrative charts<br />

administrative dashboards<br />

administrative queries<br />

administrative report resources<br />

administrative reports<br />

change package attributes<br />

change package entry attributes<br />

change package types<br />

dynamic groups<br />

fields<br />

files under the data/public_html directory<br />

groups<br />

item presentation templates (including image files in the public_html directory)<br />

projects<br />

states<br />

document items<br />

time entries<br />

trigger scripts<br />

triggers<br />

types<br />

users<br />

ViewSets<br />

test verdicts<br />

163


Chapter 4: Workflow Management<br />

164<br />

The basic steps for completing a workflow migration include:<br />

1 Install and start the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> you intend to use for production purposes (the<br />

production server). For more information, see “Installing and Starting Production<br />

<strong>Server</strong>” on page 166.<br />

2 On a separate machine (the staging server), install the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> you intend<br />

to use for testing and migrating your workflow and document admin provided objects.<br />

For more information, see “Installing and Configuring Staging <strong>Server</strong>” on page 166.<br />

3 Place an administrative lock on the production server before copying the database. For<br />

more information, see “Managing Administrative Locks” on page 169.<br />

4 Copy the database (and other necessary objects) from the production server to the<br />

staging server. For more information, see “Copying <strong>MKS</strong> <strong>Integrity</strong> Database” on<br />

page 168.<br />

5 Start the staging server, which automatically creates a lock binding between the staging<br />

server and the target production server. For more information, see “Starting Staging<br />

<strong>Server</strong>” on page 168.<br />

6 Configure workflow and document admin provided objects on the staging server and<br />

test your configuration. For more information, see “Testing Workflow and Document<br />

Configuration” on page 169.<br />

7 As required, manage administrative locks on the staging and production servers to keep<br />

the two databases synchronized. For more information, see “Managing Administrative<br />

Locks” on page 169.<br />

8 Migrate your configuration from the staging server to the production server. For more<br />

information, see “Using Admin Migration Wizard” on page 171.<br />

Two Stage <strong>Server</strong> Configuration<br />

<strong>MKS</strong> <strong>Integrity</strong> supports a two-stage migration whereby two staging servers are used with a<br />

single production server. For example, the two staging servers in the following diagram are<br />

named Development and Test. In this configuration, all changes are made on the<br />

Development server and migrated to the Test server for testing. Only if the changes test<br />

successfully are they migrated to the Production server.<br />

Development<br />

Test<br />

<strong>Server</strong><br />

<strong>Server</strong><br />

Holds Lock on<br />

Holds Lock<br />

on Test <strong>Server</strong> Migrate Objects<br />

Production<br />

Locked by<br />

Development<br />

Migrate Objects<br />

3 4<br />

Two Stage <strong>Server</strong> Configuration<br />

2<br />

Copy Database<br />

1<br />

Copy Database<br />

Production<br />

<strong>Server</strong><br />

Locked by Test


The basic steps for completing two stage workflow migration include:<br />

Workflows<br />

1 Install and start the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> you intend to use for production purposes (the<br />

production server). For more information, see “Installing and Starting Production<br />

<strong>Server</strong>” on page 166.<br />

2 On a separate machine (a staging server), install the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> you intend to<br />

use for development of your workflow and document admin provided objects. For more<br />

information, see “Installing and Configuring Staging <strong>Server</strong>” on page 166.<br />

3 On a separate machine (a staging server), install the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> you intend to<br />

use for testing of your workflow and document admin provided objects. For more<br />

information, see “Installing and Configuring Staging <strong>Server</strong>” on page 166.<br />

4 Create administrative locks, and then copy databases as follows:<br />

a) Copy the database from the production server to the staging server you want to use<br />

for testing. For more information, see “Copying <strong>MKS</strong> <strong>Integrity</strong> Database” on<br />

page 168.<br />

b) Copy the database from the production server to the staging server you want to use<br />

for development. For more information, see “Copying <strong>MKS</strong> <strong>Integrity</strong> Database” on<br />

page 168.<br />

NOTE Ensure that the production server (in step 1) has been started before starting<br />

the servers in steps c) and d) next.<br />

c) Start the test staging server, which automatically creates a lock binding between that<br />

staging server and the target production server. For more information, see “Starting<br />

Staging <strong>Server</strong>” on page 168.<br />

d) Start the development staging server, which automatically creates a lock binding<br />

between that staging server and the test staging server. For more information, see<br />

“Starting Staging <strong>Server</strong>” on page 168.<br />

IMPORTANT Place an administrative lock on the production server before copying<br />

the database. To place an administrative lock manually, see “Managing<br />

Administrative Locks” on page 169.<br />

5 Configure workflow and document admin provided objects on the development staging<br />

server, then test the configuration of those objects on the test server until you have a final<br />

configuration. For more information, see “Testing Workflow and Document<br />

Configuration” on page 169.<br />

6 As required, manage administrative locks on the staging and production servers to keep<br />

the databases synchronized. For more information, see “Managing Administrative<br />

Locks” on page 169.<br />

165


Chapter 4: Workflow Management<br />

166<br />

Installing and Starting Production <strong>Server</strong><br />

The production server is the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> that users connect to when using<br />

<strong>MKS</strong> <strong>Integrity</strong>. By default, all <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>s are installed as production servers. For<br />

detailed procedures on installing and starting the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

Installing and Configuring Staging <strong>Server</strong><br />

By default, all <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>s are installed as production servers. To create a staging<br />

server, you install another <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> on a separate machine. For more<br />

information on installing an <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

After installing the second <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, configure additional properties to have it<br />

operate as a staging server. Configure the following properties in the installdir/config/<br />

properties/is.properties file:<br />

Properties To Be Modified Defined Values<br />

mksis.adminStaging<strong>Server</strong>= If <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is to function as production server or<br />

staging server. Valid options are true or false. If false,<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> functions as standard production server. If<br />

true, <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> functions as staging server that can<br />

be used to test workflow configuration and migrate it to<br />

production server.<br />

By default, mksis.staging<strong>Server</strong>=false (that is,<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> operates as standard production server).<br />

mksis.adminStaging<strong>Server</strong>DisplayName= Display name of staging server. For example, if you are using<br />

two stage staging server configuration, two staging servers can<br />

be named Development <strong>Server</strong> and Test <strong>Server</strong>. If no<br />

value specified, display name is Staging <strong>Server</strong>.<br />

In the title bar of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, the<br />

name of the staging server displays. For example, if you specify<br />

the staging server name as My <strong>Server</strong>, the following displays:<br />

<strong>Administration</strong> jriley@abcFinancial:7001 (My<br />

<strong>Server</strong> - Locked)<br />

If you do not specify a name, the following displays:<br />

<strong>Administration</strong> jriley@abcFinancial:7001<br />

(Staging <strong>Server</strong> - Locked)<br />

Note: On a production server, Locked appears only if the<br />

staging server is manually locked.<br />

NOTE The names of the staging server properties are case sensitive. For example,<br />

you must use mksis.im.prod<strong>Server</strong> rather than mksis.im.prodserver.<br />

To configure the staging server, configure the following properties in the installdir/config/<br />

properties/im.properties file:


Properties To Be Modified Defined Values<br />

mksis.im.prod<strong>Server</strong>= Host name of production <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

mksis.im.prodPort= Port number to connect to on production server.<br />

E-mail Notification Upon Lock Break<br />

Workflows<br />

mksis.im.prodUser= Login ID of administrator used when the staging server<br />

performs verifications and comparisons between the staging<br />

and production servers.<br />

Note: The Admin Migration Wizard allows you to specify a login<br />

ID and password for the administrator migrating workflow and<br />

document admin provided objects.<br />

mksis.im.prodPassword= Password of administrator used when the staging server<br />

performs verifications and comparisons between the staging<br />

and production servers.<br />

Note: Password encryption is enabled for this password if you<br />

have encryption enabled on <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

mksis.im.allowPartialAdminMigration= If true, permits ability to migrate individually specified objects<br />

from staging server to production server.<br />

Note: This property is modified under Workflows and<br />

Documents > Configuration > Properties in the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

mksis.im.allowAdminDeletionWithAdmin<br />

Migration<br />

As administrator, you can ensure that you are notified whenever an administrative lock is<br />

broken by editing the following property under Workflows and Documents ><br />

Configuration > Properties in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client:<br />

mksis.im.notificationsOnAdminLockBreak==value<br />

where value is a comma separated list of e-mail addresses for the administrators to be notified<br />

whenever an administrative lock is released<br />

Configuring SMTP <strong>Server</strong><br />

To configure an SMTP server for handling e-mail notifications, edit the following property<br />

under Configuration > Properties in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client:<br />

mksis.mailserver=hostname<br />

If true, permits you to delete admin objects on a staging<br />

server, even if that object has been migrated to the production<br />

server. By default, you may only delete admin objects if they<br />

have not been migrated to the production server. This prevents<br />

deadlock situations from occurring during an admin migration.<br />

Note: This property is modified under Workflows and<br />

Documents > Configuration > Properties in the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

where hostname is the host name or TCP/IP address of the SMTP server to send e-mail<br />

notifications through.<br />

167


Chapter 4: Workflow Management<br />

168<br />

Copying <strong>MKS</strong> <strong>Integrity</strong> Database<br />

Before creating a copy of your database, you should back up the existing production database<br />

and then restore a copy for use by the staging server. Follow the copying procedures<br />

recommended for the specific database you are using.<br />

CAUTION To ensure that you do not lose any data, follow the manufacturer’s<br />

recommended back up procedures for the specific database you are using.<br />

Starting Staging <strong>Server</strong><br />

You start the staging server using the standard procedure for starting any <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>. For more information on starting the server, see “Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>” on<br />

page 283<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

Starting the staging server automatically creates a lock binding between the staging server<br />

and the production server. You can confirm the status of the lock binding by connecting to<br />

the production server, right clicking the Workflows and Documents directory node, and<br />

then selecting View Admin Lock from the shortcut menu. The View Admin Lock dialog box<br />

displays information on the production server (hostname:port number) that is locked,<br />

when the lock was obtained, and the staging server (hostname:port number) it is bound to.<br />

For more information on lock binding, see “Managing Administrative Locks” on page 169.<br />

IMPORTANT When starting the staging server for the first time, it will not start if<br />

differences are detected between it and the production server.<br />

When the staging server starts, it first tests to see if its database contains the same workflow<br />

and document admin provided objects as the production server's database. If they are<br />

identical, the production server creates a binding lock to that staging server. The server also<br />

tests to see if the <strong>Integrity</strong> Presentation Templates (IPTs), trigger scripts, reports, ViewSets,<br />

and the public_html directory are identical. If differences are detected, the staging server<br />

does not start.<br />

NOTE Exceptions to the database content include auto imported users/groups.<br />

If the production server is not running when the staging server attempts to initialize, the<br />

staging server does not start. If the production server is running, the staging server creates a<br />

lock binding.<br />

If the production server already has a lock as a result of a super administrator manually<br />

obtaining the lock, then the staging server still creates a lock binding between the two<br />

servers. A check is then carried out to ensure that the admin provided objects on the staging<br />

server match exactly with those on the production server. If they are not the same, the staging<br />

server does not start and the lock binding is dropped. An error message is posted to the<br />

installdir/log/server.log file on the staging server.


Workflows<br />

A lock binding cannot be directly created by an administrator. It is created automatically<br />

when the staging server has initialized and successfully verified that it is synchronized with<br />

the production server. Once the staging server is started and the binding lock is set, you can<br />

then modify the required workflow and document admin provided objects on the staging<br />

server.<br />

Testing Workflow and Document Configuration<br />

Once the staging server is started and creates a lock binding to the production server, you can<br />

work with the required admin provided objects to create a workflow that functions for your<br />

environment. Admin provided objects cannot be modified when the production server is<br />

locked.<br />

For detailed information on working with the various admin provided objects in<br />

<strong>MKS</strong> <strong>Integrity</strong>, see the following sections:<br />

For Managing Users, Groups, and Dynamic Groups, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

“Workflow and Document Projects” on page 248<br />

“States” on page 77<br />

“Types” on page 82<br />

“Fields” on page 121<br />

“Managing Field Relationships” on page 143<br />

“Workflows” on page 152<br />

“ViewSets” on page 49<br />

Managing Administrative Locks<br />

Locking a server means that the server is no longer editable directly through the standard<br />

command set. The migration wizard requires that the production server be locked before it<br />

can start any migration operation. Locking ensures that no changes can be made during the<br />

migration or at any time while the staging server is bound to the production server.<br />

IMPORTANT As administrator, you can also manually lock either the staging or<br />

production servers, or both, to prevent administrative changes from taking place.<br />

Locking both servers means that no one can make any administrative changes to the<br />

workflow and document system unless they are using the Admin Migration<br />

Wizard.<br />

It is important to understand that an administrative lock cannot be used to prevent<br />

other administrators from making changes so that you (the owner of the lock) can<br />

make changes.<br />

169


Chapter 4: Workflow Management<br />

170<br />

Creating a lock binding is the act of linking one server to a lock on another server. When a<br />

lock binding is created, the production server records the host name and port of the staging<br />

server.<br />

IMPORTANT<br />

You cannot bind two different staging servers to the same production server.<br />

Do not break a lock when a migration operation is in progress.<br />

A lock binding cannot be directly created by an administrator. It is created automatically<br />

when the staging server has initialized and successfully verified that it is synchronized with<br />

the production server.<br />

If the connection between the staging and production servers is lost for any reason, such as a<br />

hardware or network failure, the lock remains on the production server and the staging<br />

server continues to act as if the lock binding relationship is in place. If the migration wizard is<br />

started while the communication between the two servers is still broken, then the system<br />

posts an error. You cannot then run the migration wizard until the problem has been<br />

resolved.<br />

To avoid the possibility of any administrative changes occurring while the staging server is<br />

being brought on line, you can also manually lock the production server before setting up the<br />

staging server. If the production server is locked when the staging server initializes, a lock<br />

binding is still created.<br />

IMPORTANT When the production server is locked, users and groups can be<br />

automatically imported.<br />

In the GUI, locking and unlocking are available through the shortcut menu. For more<br />

information, see “To work with administrative locks in <strong>MKS</strong> <strong>Integrity</strong>” on page 171.<br />

If a super administrator attempts to break a lock on the production server, a warning<br />

message indicates that breaking the lock invalidates any work that is currently being done on<br />

the staging server and that the staging server must be re-initialized. E-mail notifications are<br />

also sent, provided the appropriate properties have been configured. For more information,<br />

see “E-mail Notification Upon Lock Break” on page 167.<br />

CAUTION Releasing the lock on the production server means that the lock binding<br />

between the staging server and production server is lost and the two servers are no<br />

longer synchronized. Further staging work, therefore, requires a new copy of the<br />

database from the production server.<br />

You can also control server locks through the CLI using the commands for<br />

im obtainadminlock, im releaseadminlock, and im viewadminlock. For more<br />

information on using these commands, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> <strong>Administration</strong> CLI<br />

Reference <strong>Guide</strong>.


To work with administrative locks in <strong>MKS</strong> <strong>Integrity</strong><br />

1 Open the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client and connect to the selected<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, whether a staging server or production server.<br />

Workflows<br />

2 Right click the Workflows and Documents node on the tree pane. From the shortcut<br />

menu, select one of the following commands:<br />

Obtain Admin Lock to place an administrative lock on the server. If you have the<br />

required permissions, the lock is placed immediately. If you do not have the<br />

required permissions, an error message displays.<br />

Release Admin Lock to release an administrative lock on the selected server. If you<br />

are releasing the lock on a production server, a message cautions you that releasing<br />

the lock means an inability to migrate any existing changes from the staging server<br />

to the production server. The message includes the user ID of the person who set the<br />

lock, the lock timestamp, and the host name and port of the server the lock is bound<br />

to. If the lock is not bound to any staging server, the message indicates that.<br />

View Admin Lock to view the status of an existing lock on the production server.<br />

Anyone using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client can view the status of an<br />

administrative lock. The View Admin Lock dialog box displays the user ID of the<br />

person who set the lock and the lock timestamp. After reviewing the status of the<br />

target lock, click Close to exit.<br />

3 In the title bar of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, an administrative lock is<br />

indicated by Locked, for example:<br />

On a locked production server:<br />

<strong>Administration</strong> jriley@abcFinancial:7001 (Locked)<br />

On a locked staging server:<br />

<strong>Administration</strong> jriley@abcFinancial:7001 (Staging <strong>Server</strong> - Locked)<br />

On a locked staging server with stagings<strong>Server</strong>DisplayName=My <strong>Server</strong><br />

specified in is.properties:<br />

<strong>Administration</strong> jriley@abcFinancial:7001 (My <strong>Server</strong> - Locked)<br />

If there is no administrative lock, lock status is not appended to the title bar. For<br />

example, an unlocked staging server displays:<br />

<strong>Administration</strong> jriley@abcFinancial:7001 (Staging <strong>Server</strong>)<br />

Using Admin Migration Wizard<br />

Once you are ready to migrate your final changes to the production server, you can launch<br />

the migration wizard. You can also run the wizard to view the existing state of<br />

synchronization between the production and staging servers. Only an <strong>MKS</strong> <strong>Integrity</strong> super<br />

administrator can perform the final operation to migrate changes. Type administrators are<br />

only permitted to view migration details using the wizard.<br />

171


Chapter 4: Workflow Management<br />

172<br />

You launch the migration wizard from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client by right<br />

clicking the Workflows and Documents node and selecting Launch Admin Migration Wizard<br />

from the shortcut menu. The Launch Admin Migration Wizard menu item appears only when<br />

the server is configured as a staging server and for users who are assigned as super<br />

administrators or type administrators.<br />

Only the super administrator can actually perform a migration. Type administrators may<br />

access the migration wizard only to view the information but cannot complete the migration<br />

operation. Type administrators can view all admin provided objects but can only edit the<br />

ones that they have permissions for.<br />

Changes made by the migration wizard are shown as being carried out by the super<br />

administrator user who ran the migration operation. All changes are viewable in the history<br />

for the object and in the audit log.<br />

If the staging server or the production server is disconnected, or if the whole system is put<br />

into a state where the migration cannot be completed, then the operation is rolled back to put<br />

the production server (or staging server) into a usable state. You can also cancel a migration<br />

that is in progress. The operation is then rolled back to put the production server into a<br />

usable state.<br />

Migrating admin provided objects from the staging server to the production server involves<br />

updating the configuration for the entire object being modified. When you perform the<br />

migration, all overrides are transferred to production. Therefore, you should only start a<br />

migration when all changes are finalized on the staging server. Since this may affect the work<br />

of multiple type administrators, you may want to consult with all type administrator before<br />

starting a migration. Once the migration is complete, a migration report displays.<br />

Note the following:<br />

The super administrator who performs the migration must also be a super administrator<br />

on the target production server (that is, he or she must have the Admin ACL permission<br />

under mks:im).<br />

<strong>MKS</strong> recommends that all locks be maintained while the migration is running. If the lock<br />

on the production server is broken during a migration, an error message displays and<br />

the migration stops.<br />

To prevent deadlock situations from occurring during an admin migration, you cannot<br />

delete admin objects on a staging server if they have been migrated to a production<br />

server. Admin objects that have not been migrated to a production server may be<br />

deleted.<br />

To migrate a shared field or state that has an override, without migrating the overrides<br />

of the new types that refer to it, see “Migrating a Shared Field or State Override” on<br />

page 177.


Workflows<br />

To migrate workflow and document admin provided objects to the production server<br />

NOTE Settings chosen from a previous migration session are not retained.<br />

1 On the staging server, open the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

2 Right click the Workflows and Documents node on the tree pane and select Admin<br />

Migration Wizard. The wizard displays, confirming the server you are migrating data<br />

from and the server you are migrating data to. The wizard also confirms the type of<br />

migration your server is configured to perform, for example, a partial admin migration.<br />

In addition to migrating user objects, you can also choose to migrate user notification<br />

rules by enabling Include user notification rules. By default this option is disabled.<br />

Enabling this option overwrites individual user notification rules configured by users.<br />

IMPORTANT Enabling Include user notification rules may significantly increase the<br />

time required to migrate your data.<br />

To continue, click Next.<br />

3 If the wizard detects admin provided objects or users/groups with identical names on<br />

both the test and production servers, the objects or users/groups are listed in the<br />

Identical Objects panel of the wizard.<br />

If this occurs, the migration wizard asks you to confirm that the two admin provided<br />

objects are to be mapped together. Do one of the following:<br />

If the object names can be mapped together, click Next to continue the migration.<br />

The migration wizard then links the two counterparts and any differences between<br />

the objects display as edits.<br />

If the two object names are not to be mapped together, click Cancel to stop the<br />

migration. Then either rename or delete the object on the staging server to avoid an<br />

error.<br />

If there are no duplicate named admin provided objects, the Identical Objects panel does<br />

not display. Instead, advance to the next step.<br />

4 If the wizard detects changes to the staging server (or test server depending on your<br />

configuration), the import panel displays the new admin provided objects (or users and<br />

groups) that must be imported into the production server database. To import the admin<br />

provided objects, click Next. You cannot advance through the wizard without first<br />

importing the admin provided objects.<br />

NOTE Differences between servers for LDAP realm users appear on this panel.<br />

If there are no new admin provided objects on the production server, the import panel<br />

does not display. Instead, advance to the next step.<br />

173


Chapter 4: Workflow Management<br />

174<br />

5 The migration wizard displays the options for migrating unused objects. To continue,<br />

click Next. The summary panel displays the available changes to be migrated from the<br />

staging server to the production server.<br />

By default, the Show objects containing data filter displays all objects on the staging<br />

server. Use the data filter to display objects you want to migrate to the production<br />

server. For more information on using the data filter, see “Filtering Data” on page 18.<br />

When you select an object in the Show objects containing data filter, its metadata<br />

displays in the bottom pane.<br />

IMPORTANT You can only select individual candidates for migration if the<br />

mksis.im.allowPartialAdminMigration property is set to true in file<br />

im.properties. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

If there are mandatory objects for the selected object, they are highlighted in light blue.<br />

Mandatory objects always move with the selected object. Objects are only highlighted<br />

when selecting another object that either is an object with a reference to or from it or if<br />

there is some relationship that requires the actions to be performed in the same


Workflows<br />

migration. If there are objects referenced by the selected object, those referenced objects<br />

display an icon in the Ref Info column, indicating the relationship.<br />

The following details are provided for admin provided objects in each list:<br />

Position indicates the order objects are migrated in.<br />

Type indicates the type of admin provided object affected by the change, for<br />

example, State.<br />

Name indicates the name of specific admin provided object, for example, state<br />

Published.<br />

Action lists the type of change that occurred, for example, Create.<br />

Modified Date indicates the date the object was modified (not always available).<br />

Modified User indicates the user name of the user who modified the object (not<br />

always available).<br />

Ref Info indicates the relationship to and from the selected object.<br />

indicates that the object refers to at least one of the selected objects.<br />

indicates that the object is referenced by at least one of the selected objects.<br />

indicates that the object refers to at least one of the selected objects and that<br />

at least one of the selected objects refers to this object.<br />

Selected indicates the object is currently selected (explicitly or implicitly). This<br />

allows you to sort by the selected objects if they are spread out among a large list of<br />

objects. Once you make a new selection, the column must be resorted if the new<br />

selection is sorted by selection.<br />

Grouping indicates a number given to selections of objects added to the Objects to<br />

be migrated list. A grouping number allows you to move objects between the lists as<br />

groups.<br />

Explicit indicates that the selected object was explicitly added to the list. This<br />

column is hidden by default.<br />

Referred By indicates the number of objects that this object is referenced by. This<br />

column is hidden by default.<br />

Refers To indicates the number of objects that this object directly references. This<br />

column is hidden by default.<br />

To include one or more objects for migration, select the object(s) in the Show objects<br />

containing data filter and then click + to move the object(s) to the Objects to be migrated<br />

list. Similarly, to remove one or more objects from the Objects to be migrated list, select<br />

the object(s) and click x to return them to the Show objects containing data filter.<br />

175


Chapter 4: Workflow Management<br />

176<br />

To print migration candidates, click Print. The Print summary of admin migration to be<br />

performed dialog box displays. Select one of the following, and then click Print:<br />

Print filtered changes not to be migrated prints the contents of the top data filter.<br />

Print all changes being migrated prints the contents of the Objects to be migrated<br />

list.<br />

NOTE Availability of this option requires that the property mksis.im.<br />

allowPartialAdminMigration be true in file im.properties. For more<br />

information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

To select the migration policies you want applied for this migration, click Options. The<br />

available options include:<br />

Include References<br />

Select this option to automatically select all objects that the explicitly selected objects<br />

reference. If any of these additional objects force more objects to be implicitly<br />

selected, they are also selected.


Include References Recursively<br />

Select this option to recursively include the objects that the referenced objects<br />

reference.<br />

Include Referrers<br />

Workflows<br />

Select this option to automatically select all objects that have references to the<br />

explicitly selected objects. If any of these additional objects force more objects to be<br />

implicitly selected, they are also selected.<br />

Include Referrers Recursively<br />

Select this option to recursively include the objects that reference the objects<br />

referencing the selected objects.<br />

NOTE If you are a type administrator, you do not have permission to run the<br />

migration and the next panels are not available for viewing.<br />

6 To continue the migration, click Next. The migration wizard displays the description<br />

field. Enter a description for this migration request.<br />

7 To continue the migration, click Next. The migration wizard displays the credentials<br />

panel.<br />

To finish the migration, enter your credentials (user name and password) for logging<br />

into the production server, and click Finish.<br />

NOTE<br />

To cancel a migration after it has started, right click the status bar at the bottom of<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client window, and select Cancel from the<br />

shortcut menu. Once the migration operation is completed, it cannot be undone.<br />

Settings chosen from a previous migration session are not retained.<br />

After the migration is completed, the migration report displays the results of the<br />

migration, including the options and policies you selected.<br />

Click OK.<br />

You can also view a record of the staging server operations for the migration in the file<br />

installdir/log/server.log.<br />

Migrating a Shared Field or State Override<br />

If you override a shared field or state for an item type on the staging server, when you<br />

migrate the field with the override you must also migrate any new item types that refer to the<br />

override. This can make migration difficult to manage, especially if there are multiple<br />

administrators or groups developing workflows.<br />

The admin migration wizard contains a CLI command that allows you to migrate a shared<br />

field or state that has an override, without migrating the overrides of the new types that refer<br />

177


Chapter 4: Workflow Management<br />

178<br />

to it. This also removes the requirement of the new types to be migrated. To enable this<br />

feature, set the following property to true under Workflows and Documents ><br />

Configuration > Properties in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client:<br />

mksis.im.allowOverrideSuppression<br />

NOTE You must have the Admin<strong>Server</strong> permission.<br />

If this feature is enabled and if you have created at least one new type on the staging server<br />

that has at least one field or state override, a new type overrides panel displays after the<br />

welcome panel of the Admin Migration Wizard. The new panel lists each item type that has<br />

not been migrated. You can select the type(s) that you want to temporarily remove overrides<br />

for during the migration.<br />

In the summary panel of the Admin Migration Wizard, item types that referenced a field or<br />

state override that has been removed are no longer highlighted as mandatory. If you select an<br />

item type, the metadata displayed at the bottom of the screen indicates if its overrides have<br />

been removed.<br />

Field or state overrides remain on the staging server and can be migrated separately when<br />

required.<br />

Considerations When Modifying Visibility,<br />

Editability, and Types<br />

Workflow and document, and configuration management users may experience errors when<br />

trying to create change packages if visibility rules, editability rules, or type specifications are<br />

not properly set. The following modifications may result in user error:<br />

visibility of the Assigned User, Project, or Summary fields<br />

visibility of the SI Change Package project (used for configuration management<br />

standalone change packages), excluding the creator of the change package<br />

editability of the Assigned User, Project, or Summary fields<br />

specifications of the SI Change Package type (used for configuration management<br />

standalone change packages)<br />

For more information, see the following:<br />

“Setting Workflow and Document Project Visibility” on page 250<br />

“Setting Field Visibility for Types” on page 120<br />

“Editing Types” on page 91


Deleting Admin Provided Objects and Items<br />

Deleting Admin Provided Objects and Items<br />

As administrator, you may want to delete some of the building blocks that are used by<br />

<strong>MKS</strong> <strong>Integrity</strong>. A building block is any one of the fundamental pieces that your <strong>MKS</strong> <strong>Integrity</strong><br />

database is built on, such as users, groups, projects, and items.<br />

Deleting Admin Provided Objects<br />

Deleting Items<br />

You can delete a user, group, dynamic group, type, state, field, or project, if you have not<br />

used them to make a change to the database. You cannot delete any building block that has<br />

been recorded in the history. For example, if you create a user or group and want to delete it<br />

immediately, you can. However, if a user or a group member logs in as that user and creates<br />

an item, or if someone else assigns an item to that user or group, you can no longer delete that<br />

user or group.<br />

You can only delete a project if an item does not reference that project or any of its children.<br />

To delete an idle project that has children, you must first delete all of its children and then<br />

delete the project.<br />

You can delete admin provided objects that have references to other admin provided objects<br />

as long as the admin provided object you are deleting does not violate the restrictions<br />

mentioned earlier in this section. When deleting the admin provided object, a prompt<br />

displays stating if there are object references. You then have the opportunity to cancel and<br />

manually remove the references. Object references can be viewed on the References tab when<br />

editing or viewing an admin provided object. For information on identifying object<br />

references, see “To manage admin provided objects in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client” on page 244.<br />

IMPORTANT Contrary to other admin provided objects, you cannot delete a field if it<br />

has references to other admin provided objects, even if that field has not made a<br />

change to the database. You must remove the references before deleting the field.<br />

Deleting an item removes it from the database. Only a user with the DeleteItem permission<br />

can delete an item of any type; however, your administrator can assign the<br />

ModifyDeleteItemRule permission, allowing a type administrator to set a type rule that<br />

specifies which users can delete items of that type. Deleting an item removes the item history<br />

and any links to attachments, change packages (change package members associated with the<br />

item are not deleted from the database), relationships (including both forward and backward<br />

relationships), and some history records from related items. If you delete an item containing<br />

relationships, the history of each related items denotes the ID of the deleted items, the user<br />

that deleted the items, and the date of the deletion.<br />

179


Chapter 4: Workflow Management<br />

180<br />

Key Considerations<br />

Deleting an item is irreversible.<br />

The ID of a deleted item is never reused.<br />

<strong>MKS</strong> recommends that you do not delete requirements management items. With the<br />

release of the Requirements Management 2007 solution template and the associated<br />

node-item data model, these items are linked to configuration management baselines<br />

which means that these items, if deleted, change the recorded baseline as if the items<br />

never existed.<br />

If you are using both workflows and documents, and configuration management, do not<br />

confuse an item’s change package members with project or Sandbox members.<br />

To delete an Item in the GUI<br />

CLI EQUIVALENT im deleteissue<br />

You can delete an item by choosing the delete option from the Item menu in the GUI.<br />

Although this option is outside the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, the Delete Item<br />

command is not visible to users without administrative privileges. If the delete option is<br />

unavailable even though you have selected an item to delete and the item displays in the Item<br />

Details panel, this item cannot be deleted temporarily because it is being edited by another<br />

user.<br />

1 In the Query Results pane, select an item to delete, making sure it displays in the Item<br />

Details panel.<br />

2 Select Item > Delete. The Delete Item message warns you that deleting this item cannot be<br />

undone and that if you delete it all the history information for this item is lost.<br />

3 Click Yes to confirm the deletion of an item. After successful deletion, the item is<br />

removed from the Item Details pane.<br />

4 Run the query to remove the item from the Query Results view.<br />

Setting Up E-mail Notification<br />

Any <strong>MKS</strong> <strong>Integrity</strong> user can be notified through an e-mail message whenever a new item is<br />

submitted or item information changes. This is useful for users who need to review and<br />

approve state changes on new submissions or existing items and for users who need to work<br />

on items assigned to them. Notifications also keep users informed of project progress.


NOTE<br />

Setting Up E-mail Notification<br />

E-mail notification is subject to project, type, and field visibility rules. Only users<br />

that have visibility for a given project and type receive e-mail notification for<br />

items related to that project and type. In addition, e-mail notifications include<br />

only the fields they have permission to view. For more information, see “Setting<br />

Workflow and Document Project Visibility” on page 250, “Setting Type<br />

Visibility” on page 114, and “Setting Field Visibility for Types” on page 120.<br />

E-mail notifications are evaluated on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>’s time zone.<br />

You configure <strong>MKS</strong> <strong>Integrity</strong> to send you e-mail notification by creating rules. Rules are made<br />

up of conditions, which are logical expressions of specific item field changes that you want to<br />

be notified about. For example, you could create a simple rule containing one condition that<br />

sends you e-mail every time a new problem assigned to you is submitted. Similarly, you<br />

could create a complex rule containing two conditions that sends you e-mail every time a<br />

new problem assigned to you is submitted and when existing problems become assigned to<br />

you. Rules can contain as many conditions as you want.<br />

The e-mail message displays information on the item, for example, the item type, ID,<br />

summary, who edited the item and when, a hyperlink to the item, and the modified fields.<br />

Optionally, you can select additional notification fields for each type. These additional<br />

notification fields are included in the notification e-mail sent to users. Additional notification<br />

fields appear as a separate Notification Fields section between the default header<br />

section and the Modified Fields section.<br />

You can also select the character set that the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> uses when sending e-mail.<br />

The property controlling the character set is contained in file:<br />

installdir/config/properties/is.properties<br />

By default, the character set for internationalization support is:<br />

java.system.property.smtpencoding=UTF-8<br />

Permissions for E-mail Notification<br />

Depending on how <strong>MKS</strong> <strong>Integrity</strong> is configured, the administrator may be the only one who<br />

can create and edit e-mail notification rules for users and groups. If you want users to have<br />

access to the notification feature, you assign the following permissions to them:<br />

allow ViewMyNotification allows users to view e-mail notification settings, but not<br />

make any changes to them. If users do not have this permission, they see the options but<br />

cannot perform any edits in the GUI. In the Web interface, users who do not have<br />

ViewMyNotification may select Session > Notifications, but the notification settings<br />

do not display.<br />

allow ModifyMyNotification allows users to create and edit notification rules. If<br />

users do not have this permission, they cannot create or edit e-mail notification rules.<br />

181


Chapter 4: Workflow Management<br />

182<br />

For more information on setting permissions, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

To set e-mail notification in the GUI<br />

CLI EQUIVALENT im setnotification<br />

1 In the <strong>MKS</strong> <strong>Integrity</strong> Client, select Item > Set Notification. The Notifications dialog box<br />

displays.<br />

2 The e-mail address specified for you by your administrator is automatically entered in<br />

the Email Address field.<br />

3 If certain conditions are met, nodes specify if e-mail notification is sent. Select a node<br />

option by clicking a button:<br />

And specifies that all of the conditions specified must be true for an e-mail<br />

notification to be sent. For example, if an item’s assigned group =<br />

documentation and project = editor, then an e-mail notification is sent.<br />

Or specifies that one or more of the conditions must be true for an e-mail notification<br />

to be sent. For example, if an item’s state = submitted or the priority is not<br />

equal to high, an e-mail notification is sent.<br />

Swap replaces the selected node with the opposite node. For example, swapping an<br />

Or node replaces it with an And node.<br />

Remove deletes the selected node.<br />

NOTE You do not need to use the And and Or nodes if your rule contains only one<br />

condition. If your rule contains more than one condition, you must begin by<br />

entering and And or Or node.<br />

The following image shows a sample notification rule.


Setting Up E-mail Notification<br />

4 Under Condition, define the conditions that specify when an e-mail notification is sent.<br />

For more information, see “Defining Rules” on page 43.<br />

For example, you can configure <strong>MKS</strong> <strong>Integrity</strong> to send an e-mail notification every time<br />

the assigned user of an item is changed to the specified user, such as in the following<br />

example:<br />

Assigned UserAssigned User<br />

Assigned User=mchang<br />

You could also configure <strong>MKS</strong> <strong>Integrity</strong> to send an e-mail notification for all items that<br />

are currently assigned to the specified user (such as, Assigned User=mchang).<br />

5 To add the condition to the rule, click Add. To replace an existing rule with a new rule,<br />

select the rule in the rules list, and then click Replace.<br />

6 To accept the changes, click OK.<br />

183


Chapter 4: Workflow Management<br />

184<br />

To set e-mail notification in the Web interface<br />

The Web interface allows you to set simple e-mail notification rules, for example, receiving<br />

e-mail notification when new submitted items are assigned to you.<br />

NOTE To create advanced e-mail notification rules, you must create them in the GUI.<br />

1 Click My Profile on the right side of the title pane.<br />

NOTE When the view is maximized, click in the title pane and select My Profile.<br />

The My Profile dialog box displays. Your e-mail address displays on the Item<br />

Notifications tab.<br />

NOTE If you create a notification rule in the GUI that is too complex to view or edit<br />

in the Web interface, you are asked whether you want to delete the existing rule and<br />

create a new one in the Web interface.<br />

2 Click the button and select a pre-defined notification rule. The pre-defined rule<br />

displays in the list with a .<br />

3 Click specific type(s) in the rule and use the data filter to select one or more item types to<br />

be notified about when the condition described in the rule is satisfied. For example, if<br />

you set the notification rule Items of type(s) Defect are submitted you would be notified<br />

when a new Defect item type is submitted.<br />

If you select a rule that has an item state condition, click specific state(s) and use the data<br />

filter to select one or more states that the specified item type must be in for a notification<br />

to be sent. For example, if you set the notification rule Items of type(s) Docs are assigned


Setting Up E-mail Notification<br />

to state(s) Rejected you would be notified when a documentation item is rejected. The<br />

list of states you can select depends on the workflow implemented by your<br />

administrator.<br />

If you add more than one rule at a time without defining any values for them, all rules<br />

display with a . After defining the values for one of the rules, the changes to a .<br />

4 Repeat steps 2 and 3 for any additional notification rules. All rules are connected using<br />

the logical or, which indicates that one or more of the specified conditions must be true.<br />

To remove a notification rule, select it and click .<br />

5 When all the notification rules are set, click OK.<br />

Troubleshooting E-mail Notification<br />

In the event of problems with e-mail notification, you can also configure specific properties to<br />

increase the level of detail included in the error messages that are logged to the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. The relevant properties are included in the following file on the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>:<br />

installdir/config/properties/logger.properties<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Logging levels are set to a value between 0 and 10, with 10 providing the greatest level of<br />

detail. Increasing the logging level increases the level of detail returned in the error message.<br />

185


Chapter 4: Workflow Management<br />

186<br />

Logging for SMTP Operations<br />

The following property provides a category to log the SMTP conversation between the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> and the SMTP server:<br />

mksis.logger.message.includeCategory.SMTP=10<br />

Logging for <strong>MKS</strong> <strong>Integrity</strong> E-mail Notification<br />

The following properties provide categories to log rule evaluations, project visibility checks,<br />

error handling, and other information for the <strong>MKS</strong> <strong>Integrity</strong> notification dispatcher:<br />

message logging property<br />

mksis.logger.message.includeCategory.IM-NOTIFICATION=10<br />

exception logging property<br />

mksis.logger.exception.includeCategory.IM-NOTIFICATION=5


C HAPTER FIVE<br />

Customizing Workflow<br />

Item Presentation and Configuration<br />

5<br />

This chapter contains information on customizing the presentation of items to users, as<br />

well as configuring how they appear in reports. Information on customizing admin<br />

provided objects for workflows and documents is also provided.<br />

This chapter contains the following topics:<br />

“Customizing Item Presentation” on page 188<br />

“Customizing Rich Content Fields” on page 216<br />

“Customizing Report Presentation Templates” on page 219<br />

“Customizing Test Verdicts” on page 234<br />

“Configuring Attachment Size Limits” on page 237<br />

“Configuring Limits for Queries” on page 238<br />

“Configuring Context Based Text Searching” on page 240<br />

“Setting Up Electronic Signatures” on page 241<br />

“Admin Provided Objects” on page 242<br />

“Using Type Properties” on page 245<br />

“Using Type Properties” on page 245<br />

187


Chapter 5: Customizing Workflow<br />

Where to Go Next<br />

188<br />

The following table summarizes the available content for customizing items:<br />

To Do This … See …<br />

Use an item presentation template to customize<br />

how items appear to users.<br />

Customize how reports are rendered through the<br />

use of report presentation templates.<br />

Customizing Item Presentation<br />

<strong>MKS</strong> <strong>Integrity</strong>’s presentation template designer allows you to customize the layout and<br />

display of items in your <strong>MKS</strong> <strong>Integrity</strong> database. The template designer incorporates drag<br />

and drop functionality to help you create a custom layout for a selected item type. Using the<br />

template designer, you can:<br />

create unique templates for viewing, editing, and printing items<br />

control the field order and position for each item type<br />

apply labels, field labels, field values, and images to the contents of a cell<br />

create borders and colors to group similar information<br />

apply background color, logos, and field visibility conditions to the presentation<br />

template<br />

create and delete grids, changing the number of the rows or columns in any grid<br />

apply custom cell properties for individual cells and allow cells to span adjacent<br />

columns<br />

minimize the requirement for scrolling by placing short fields on the same line<br />

preview a graphical representation of the template’s layout<br />

“Customizing Item Presentation” on page 188<br />

“Customizing Report Presentation Templates” on<br />

page 219<br />

Configure how users use attachments for items. “Configuring Attachment Size Limits” on<br />

page 237<br />

Configure limits for how items appear in queries. “Configuring Limits for Queries” on page 238<br />

Configure how users search for items in<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

Ensure confidentiality of electronic records by<br />

using electronic signatures.<br />

Learn about and manage admin provided<br />

objects for workflows and documents.<br />

“Configuring Context Based Text Searching” on<br />

page 240<br />

“Setting Up Electronic Signatures” on page 241<br />

“Admin Provided Objects” on page 242


Customizing Item Presentation<br />

<strong>MKS</strong> <strong>Integrity</strong> saves your presentation template files in XML format in the database.<br />

<strong>MKS</strong> recommends creating and editing IPTs in the GUI; however, you can retrieve IPTs from<br />

the database for manual editing. Once you are finished editing these files, you can store them<br />

in the database.<br />

As an alternative to using the Admin Migration Wizard, you could also retrieve an IPT from<br />

a server, modify it, and place it in another server’s database for use.<br />

To retrieve IPTs from the database, use the integrity/im getdbfile command.<br />

To put IPTs in the database, use the integrity/im putdbfile command.<br />

NOTE The integrity putdbfile and getdbfile commands require the<br />

mks:Admin<strong>Server</strong> permission. The im putdbfile and getdbfile commands<br />

require the mks:im:Admin<strong>Server</strong> permission.<br />

For more information on using these commands, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

<strong>Administration</strong> CLI Reference <strong>Guide</strong>.<br />

Understanding Template Designer<br />

Presentation templates are customizable layouts for displaying items in <strong>MKS</strong> <strong>Integrity</strong>.<br />

<strong>MKS</strong> <strong>Integrity</strong>’s presentation template designer allows you to customize the layout and<br />

display of items in your <strong>MKS</strong> <strong>Integrity</strong> database. The template designer incorporates drag<br />

and drop functionality to help you create a custom layout for a selected item type.<br />

Certain tools also work in a modal fashion, that is, by clicking the tool on the toolbar you can<br />

operate in the selected mode on the design pane. Template properties and the preview<br />

function are also available on the toolbar. For more information on the available tools, see<br />

“Available Tools” on page 190.<br />

NOTE You can only work with presentation templates from the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client.<br />

The following shows the main features of the template designer interface.<br />

189


Chapter 5: Customizing Workflow<br />

190<br />

Name Field<br />

Fields Filter<br />

Fields View Pane<br />

Property Pane<br />

Available Tools<br />

Toolbar<br />

Design Pane<br />

The presentation template designer includes tools to help you create a customized<br />

presentation for your items. Certain tools can work in two modes:<br />

clicking the tool to operate in the selected mode, for example, clicking the text tool to<br />

insert a text label into a cell<br />

dragging the tool onto the design pane to add the selected component, for example, drag<br />

the image tool to insert an image into a cell<br />

The following table summarizes the available tools:<br />

Tool Function<br />

Preview custom template. Displays Set Item Number dialog box for previewing<br />

template.<br />

Modify template properties. Displays Layout Properties dialog box where you<br />

can modify general properties, and default styles for text, cells, and grids.<br />

Delete selected item from design pane.<br />

Note: To completely delete field and return it to fields view pane, you must<br />

delete both Field Label and Field Value.<br />

Select components of template, including grids, cells, and labels.<br />

Create a new tab in the layout.


Tool Function<br />

Modifying Template Properties<br />

Customizing Item Presentation<br />

Clone the selected tab and insert it into the layout at the last position.<br />

Add new grid to template. Works in modal fashion by selecting tool or by<br />

dragging it.<br />

Insert text label into cell. Works in a modal fashion by selecting tool or by<br />

clicking/dragging it.<br />

Insert image into cell. Works in modal fashion by selecting tool or by clicking/<br />

dragging it.<br />

Insert row above selected cell. To delete row, select cell in that row and then<br />

click .<br />

Insert row below selected row. To delete row, select cell in that row and then<br />

click .<br />

Delete row containing selected cell.<br />

Insert column to left of insertion point. To delete inserted column, first select cell<br />

in that column and then click .<br />

Insert column to right of insertion point. To delete inserted column, first select<br />

cell in that column and then click .<br />

Delete column containing selected cell.<br />

Join cell to right of selected cell. To join multiple cells across row, continue<br />

clicking until all target cells joined.<br />

Split cell. Only available if selected cell previously joined.<br />

Copy the selected grid.<br />

Paste the copied grid.<br />

Note: You cannot paste a grid that would result in a field appearing twice on the<br />

same tab.<br />

The Layout Properties dialog box allows you to configure styles and settings that can be<br />

applied globally to components of your template.<br />

191


Chapter 5: Customizing Workflow<br />

192<br />

By using the styles and settings in Layout Properties, you can avoid having to configure<br />

detailed settings for each individual element of your template, and instead have a consistent<br />

style that is applied to all instances of a text, cell, or grid element.<br />

Using the properties pane, you can also override a global style setting by modifying<br />

individual values for a selected item.<br />

General Properties<br />

General properties include settings for background color, logo URL and alignment, and the<br />

layout for any fields that are not referenced by the template.<br />

To access general properties, click on the toolbar to open the Layout Properties dialog box,<br />

and click the General tab. The available settings for general properties display in the dialog<br />

box.<br />

Once you have modified the necessary general properties, you can click the next tab to<br />

configure additional properties. If you have completed your changes, click OK to save them<br />

and close the dialog box.<br />

The following table summarizes the available general properties:<br />

General Properties Description<br />

Background Color Specifies preferred background color of entire template. Select<br />

preferred background color by selecting:<br />

available named HTML color<br />

option for Custom… and then a color from the selectors for<br />

Swatches, HSB (Hue, Saturation, Brightness), or RGB (Red,<br />

Green, Blue)<br />

By default, background color is default as determined by<br />

operating system.<br />

Logo URL Displays image, such as corporate logo, as part of customized<br />

template. By default, no logo displays.<br />

Note: Logo file stored in public HTML directory of server and<br />

referenced using an URL.<br />

For more information, see “To add a logo” on page 212.


General Properties Description<br />

Text Styles<br />

Customizing Item Presentation<br />

Logo Alignment Specifies alignment of logo, if one selected, at top of template.<br />

Options are Left or Right. Option not available if no logo<br />

selected. By default, logo alignment set to Right.<br />

Unreferenced Fields Layout Specifies default layout for any fields not referenced by template.<br />

Available fields from field view pane not inserted into cell. Options<br />

are:<br />

Single field per row allowing only one field on row of<br />

template<br />

Multiple fields per row allowing more than one field on<br />

row of template<br />

By default, unreferenced fields layout set to Single field per<br />

row.<br />

Default setting for defaultprint template is Multiple<br />

fields per row.<br />

You can configure text styles for field labels, field values, and labels. To access text styles,<br />

click on the toolbar to open the Layout Properties dialog box, and click the Text Styles tab.<br />

The available settings for defined text styles display in the Layout Properties dialog box.<br />

Once you have completed your changes, click Apply to save your settings. To cancel the<br />

changes, click Revert.<br />

To create a new text style, click New. A new text style has a name, default font, size (weight),<br />

and color. You can then apply the new text style as you would for any of the defined text<br />

styles.<br />

NOTE When creating a style for a mandatory field, consider using a unique font<br />

color so users can quickly identify mandatory fields when editing items. The color is<br />

also used as an indicator for the tab name of a tab that contains the mandatory field<br />

(see “Working With Tabs” on page 209).<br />

To delete a text style that is no longer required, click Delete.<br />

NOTE You do not need to assign text styles. If no text styles are assigned, the default<br />

styles are applied.<br />

193


Chapter 5: Customizing Workflow<br />

194<br />

The following table summarizes the available properties for text styles:<br />

Text Styles Properties Description<br />

Defined Text Styles By default, styles are defined for Heading, FieldLabel, and<br />

FieldValue.<br />

Heading style available to apply to any text you define as heading.<br />

FieldLabel and FieldValue styles available to apply to field<br />

labels and values.<br />

Name Display name of defined text style you select. By default, first one<br />

selected.<br />

Font Font for selected text style. Default font determined by operating<br />

system.<br />

Size Available font sizes from 8–72 points. Also font weight, such as Bold,<br />

or Italic, or both. Default font size determined by operating system.<br />

Color Font color from available system font colors. By default, color<br />

determined by operating system.<br />

Sample Sample of text, including font size, weight, and color.<br />

Default Text Styles Properties<br />

The default text styles provide the underlying style for labels, field labels, field values, and<br />

mandatory field labels.<br />

To access default text styles, click on the toolbar to open the Layout Properties dialog box,<br />

and click the Default Text Styles tab. The available settings for default text styles display.<br />

Use the default text styles to define how different text elements display by default in your<br />

template.<br />

Once you have modified the necessary default text style properties, click the next tab to<br />

configure additional properties. If you have completed your changes, click OK to save them<br />

and close the dialog box.<br />

The following table summarizes the available properties for default text styles:<br />

Default Text Styles Properties Description<br />

Default Label By default, label text style is system.<br />

Default Field Label By default, field label text style is system.<br />

Default Field Value By default, field value text style is system.<br />

Default Mandatory Field Label By default, mandatory field label text style is system.


Default Grid Properties<br />

Customizing Item Presentation<br />

Modifying the default grid properties affects the characteristics of all grids in the selected<br />

template. The available properties are background color, border, cell spacing, cell padding,<br />

pack, and fill.<br />

To access the default grid properties, click on the toolbar to open the Layout Properties<br />

dialog box, and click the Default Grid tab. The available settings for default grid properties<br />

display.<br />

Once you have modified the necessary default grid properties, click the next tab to configure<br />

additional properties. If you have completed your changes, click OK to save them and close<br />

the dialog box.<br />

The following table summarizes the available default grid properties:<br />

Default Grid Properties Description<br />

Background Color Background color of grid. Choose color by clicking list and<br />

selecting:<br />

available color<br />

custom option and then choosing a color from the selectors for<br />

Swatches, HSB (Hue, Saturation, Brightness), or RGB (Red,<br />

Green, Blue).<br />

By default, background color is default as determined by<br />

operating system.<br />

Border Thickness of border around grid from 0 to 99 pixels. By default,<br />

border is 0.<br />

Cell Spacing Distance between individual cells from 0 to 99 pixels. By default,<br />

cell spacing is 0.<br />

Cell Padding Distance between cell’s contents and cell margin from 0 to 99<br />

pixels. By default, cell padding is 0.<br />

Pack Specifies whether any extra horizontal space in grid is filled by last<br />

column (at far right). If pack is False, then extra horizontal space<br />

distributed across all columns. Extra horizontal space only occurs<br />

when Fill option set to True. By default, pack is True.<br />

Fill Specifies whether grid expands to fill available width in item<br />

display. If fill False, grid uses only space required to display its<br />

contents. By default, fill is True.<br />

Default Cell Properties<br />

Modifying the default cell properties affects the characteristics of all cells within the template.<br />

The available properties are background color, horizontal alignment, vertical alignment, and<br />

wrap.<br />

To access default cell properties, click on the toolbar to open the Layout Properties dialog<br />

box, and then click the Default Cell tab. The available settings for default cell properties<br />

display.<br />

195


Chapter 5: Customizing Workflow<br />

196<br />

Once you have modified the necessary default cell properties, click the next tab to configure<br />

additional properties. If you have completed your changes, click OK to save them and close<br />

the dialog box.<br />

The following table summarizes the available default cell properties:<br />

Default Cell Properties Description<br />

Background Color Preferred background color of cell. Select preferred background<br />

color by clicking list and selecting:<br />

available named HTML color<br />

custom option and then choosing a color from the selectors for<br />

Swatches, HSB (Hue, Saturation, Brightness), or RGB (Red,<br />

Green, Blue).<br />

By default, background color is default as determined by<br />

operating system.<br />

Horizontal Alignment Horizontal alignment of cell contents (Left, Center, or Right). By<br />

default, horizontal alignment is Left.<br />

Vertical Alignment Vertical alignment of cell contents (Top, Middle, or Bottom). By<br />

default, vertical alignment is Middle.<br />

Wrap Wrapping of text within cell. By default, Wrap enabled.<br />

Tips for Working With Template Designer<br />

Consider the following when using the presentation template designer to create and edit<br />

templates:<br />

To have a standard corporate presentation for your items, you can create a generic<br />

presentation template and use that template as the basis for all other templates. You can<br />

then copy the generic template and make modifications that are specific to an individual<br />

item type saving each modified template and applying it to the appropriate type.<br />

You can select any naming convention for saving your templates, but associating the<br />

template name with the item type can simplify the task of assigning templates.<br />

You can create and set individual templates for viewing, submitting/editing, and<br />

printing items. For more information, see “Templates for Viewing, Submitting, and<br />

Printing Items” on page 197.<br />

While designing your template you can save your work without closing the template<br />

designer. The template designer does not include an undo function. Once you are<br />

satisfied with your work, you can save it to avoid losing your design.<br />

If you have made changes and cannot correct them, immediately close the template<br />

designer without saving to discard those changes. You can then reopen the earlier version<br />

of the template with all your desired changes intact and continue editing.<br />

Instead of modifying individual cell, text, and grid elements in the template, you can<br />

define and use styles through the Layout Properties dialog box. Styles allow you to make


Customizing Item Presentation<br />

a change in one place that applies to every instance where the style is applied in the<br />

template.<br />

When formatting a mandatory field, choose a unique font color so users can quickly<br />

identify mandatory fields when editing items. The color is also used as an indicator for<br />

the tab name of a tab that contains the mandatory field (see “Working With Tabs” on<br />

page 209).<br />

When choosing background color, remember the color of an individual cell overrides the<br />

color of the grid, and the color of the grid overrides the background color of the<br />

template.<br />

You can preview all your changes before saving them by clicking on the toolbar. Once<br />

you are satisfied with the changes you have made, click Save to retain those changes.<br />

You can only preview the template for the type of item you are working on. For example,<br />

if you are working from the Edit Type window on the Feature Request type, you cannot<br />

preview the template for the Bug type.<br />

When previewing a template, you must also enter an item ID number for an item that is<br />

of the same type as the template you are working on. For example, if you are working on<br />

the Feature Request type and want to preview the template, you must enter an item<br />

number for an item that is also a Feature Request. If you enter a number for an item that<br />

is of the wrong type or does not exist, an error message displays.<br />

When working in the template designer, you can preview the template only in the GUI.<br />

When working from the Edit Type window, you can preview the template in either the<br />

GUI or Web interface.<br />

Templates for Viewing, Submitting, and Printing Items<br />

You can create unique templates for viewing, submitting/editing, and printing items.<br />

Templates for viewing and submitting/editing items are intended for on-screen displays,<br />

and they can be designed with features such as a controlled field width to minimize scrolling<br />

and larger font sizes to improve readability.<br />

Templates for printing items are intended for paper output, and they can be designed with<br />

smaller font sizes, or without color or backgrounds, to make printing more efficient.<br />

Previewing Presentation Template<br />

When working in the presentation template designer, you can preview all your changes<br />

before saving them by clicking on the toolbar. You can only preview the template for the<br />

type of item you are working on. For example, if you are working on the Feature Request<br />

type, you cannot preview a template for the Bug type.<br />

When working in the template designer under Select User Interface, you can preview<br />

templates only in the GUI. From the template designer under Select Command, you can<br />

select the command the template is previewed with, for example, whether the template is for<br />

viewing an item, or for submitting and editing items.<br />

197


Chapter 5: Customizing Workflow<br />

198<br />

When working from the Edit Type window, you can preview your presentation template by<br />

clicking Preview. You can choose to preview the template in either the GUI or Web interface.<br />

Whenever you want to preview a template, you must first set an item number ID through the<br />

Set Item ID dialog box.<br />

The item ID number must be for an item that is of the same type as the template you are<br />

working on. For example, if you are working on the Feature Request type and want to<br />

preview the template, you must enter an item number for an item that is also a Feature<br />

Request. If you enter a number for an item that is of the wrong type or does not exist, an error<br />

message displays.<br />

To preview a presentation template<br />

1 From the Set Item ID dialog box in the Item ID field, type an item ID number that<br />

corresponds with the type you are working on.<br />

IMPORTANT When previewing a template, you must enter an item ID number for an<br />

item that is of the same type as the template you want to preview. For example, if<br />

you are working on the Feature Request type and want to preview the template, you<br />

must enter an item number for an item that is also a Feature Request. If you enter a<br />

number for an item that is of the wrong type or does not exist, an error message<br />

displays.<br />

2 Under Select User Interface, select the interface for viewing (either the GUI or Web<br />

interface).<br />

3 Under Select Command, select the command you will use the template with, for<br />

example, will you use it for viewing an item, or for submitting and editing items. The<br />

available options are:<br />

View<br />

Submit/Edit<br />

Print<br />

NOTE Select Command options are only enabled when working from the<br />

presentation template designer.<br />

4 To preview the item in the selected template and user interface, click OK.<br />

Creating New Presentation Template<br />

You can create a new presentation template to provide a custom look for displaying,<br />

submitting, and printing items. Presentation templates are set according to the item type.<br />

You create a new presentation template through the Edit Type window using the New<br />

function.


To create a new presentation template<br />

Customizing Item Presentation<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the Workflows and Documents<br />

node, and select Types. The display pane shows the available item types.<br />

2 Highlight the item type you want to create the new presentation template for, and select<br />

Type > Edit. The Edit Type window displays.<br />

3 From the Edit Type directory tree, select Presentations. The display pane shows the<br />

presentation template options and available templates.<br />

4 To open the template designer and begin designing your template, click New under<br />

Available Presentation Templates. The Create Presentation Template window displays.<br />

5 In the Name field, type the name for the new presentation template. By default, the name<br />

is template. The name you choose should help you to associate the template with the<br />

item type it is intended for.<br />

To save an initial version of the new presentation template, click Save.<br />

6 There is a default two-by-two grid available on the tab. To add or modify a grid, see<br />

“Working With Grids” on page 204.<br />

7 Add fields to the template (see “Adding Fields” on page 211).<br />

199


Chapter 5: Customizing Workflow<br />

200<br />

8 Continue editing the template as required for your design. Depending on the design you<br />

create, you may need to carry out the following tasks:<br />

“Working With Cells” on page 205<br />

“Working With Labels” on page 206<br />

“Working With Images” on page 212<br />

“Working With Tabs” on page 209<br />

CAUTION The presentation template designer does not include an undo function.<br />

You can preview all your design changes before saving them. Once you are satisfied<br />

with the changes you have made, click Save to retain those changes.<br />

If you have made changes and cannot correct them, close the template immediately<br />

without saving it to discard those changes. You can then reopen the earlier version<br />

of the template with all your desired changes intact and continue editing.<br />

To preview your changes, click on the toolbar. You can only preview the template for<br />

the type of item you are working on.<br />

When previewing a template, you must also enter an item ID number for an item that is<br />

of the same type as the template you are working on. For example, if you are working on<br />

the Feature Request type and want to preview the template, you must enter an item<br />

number for an item that is also a Feature Request. If you enter a number for an item that<br />

is of the wrong type or does not exist, an error message displays.<br />

From the template designer under Select User Interface, you can preview templates only<br />

in the GUI. Under Select Command, you can select the command the template is<br />

previewed with. For example, whether the template is for viewing an item, or for<br />

submitting and editing items. For more information on previewing a template, see<br />

“Previewing Presentation Template” on page 197.<br />

To save your new template design, click Save.


A completed presentation template might look like the following:<br />

Customizing Item Presentation<br />

9 Once you have completed and saved all your changes, click Close. The template<br />

designer closes and the new template is added to the list of available presentation<br />

templates in the Edit Type window. You can open this template for further editing at any<br />

time.<br />

Keep the Edit Type window open for the next step. The next step sets the template for the<br />

item type you are editing.<br />

To set the new presentation template for the target type<br />

1 From the Edit Type window under Set Presentation Template, view the available<br />

templates:<br />

View Item is the presentation template that is used to display items on screen in<br />

<strong>MKS</strong> <strong>Integrity</strong>. By default, this is the default template.<br />

Submit/Edit Item is the presentation template that is used for submitting and editing<br />

items in <strong>MKS</strong> <strong>Integrity</strong>. By default, this is the default template.<br />

Print Item is the presentation template that is used for printing items. By default this<br />

is the defaultprint template.<br />

201


Chapter 5: Customizing Workflow<br />

202<br />

For more information on templates for viewing, submitting and printing items, see<br />

“Templates for Viewing, Submitting, and Printing Items” on page 197.<br />

2 To preview the layout of an item in the assigned template, click Preview. The Set Item ID<br />

dialog box displays.<br />

3 From the Set Item ID dialog box in the Item ID field, type an item ID number for the type<br />

you want to preview.<br />

IMPORTANT When previewing a template, you must enter an item ID number for an<br />

item that is of the same type as the template you want to preview. For example, if<br />

you are working on the Feature Request type and want to preview the template, you<br />

must enter an item number for an item that is also a Feature Request. If you enter a<br />

number for an item that is of the wrong type or does not exist, an error message<br />

displays.<br />

4 Under Select User Interface, select the interface for viewing (either the GUI or Web<br />

interface).<br />

5 To preview the item in the selected template and user interface, click OK. The target item<br />

displays in the template you selected.<br />

6 Once you have set and previewed the presentation template, click OK to save the settings<br />

and exit the Edit Type window.


Editing Presentation Template<br />

Customizing Item Presentation<br />

After you have created a presentation template, you can edit that template as required. You<br />

edit an existing presentation template through the Edit Type window using the Edit function.<br />

CAUTION The presentation template designer does not include an undo function.<br />

You can preview all your changes before saving them by clicking Preview. Once you<br />

are satisfied with the changes you have made, click Save to retain those changes. Try<br />

to save at frequent intervals to avoid losing your work.<br />

If you have made changes and cannot correct them, close the template immediately<br />

without saving it to discard those changes. You can then reopen the earlier version<br />

of the template with all your desired changes intact and continue editing.<br />

You can also edit the default template, though it is recommended that you edit a copy of the<br />

default template instead (see “Copying Presentation Template” on page 214). When editing<br />

the default template, you can modify or delete the Relationships and Attachments tabs (see<br />

“Working With Tabs” on page 209). However, other tabs, such as Change Packages and<br />

History, are not editable and are not viewable in the presentation template designer.<br />

To edit a presentation template<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the Workflows and Documents<br />

node.<br />

2 Highlight the item type you want to edit and do one of the following:<br />

Select Type > Edit.<br />

Right click, and select Edit from the shortcut menu.<br />

The Edit Type window displays.<br />

3 From the Edit Type directory tree, select Presentations. Presentation template options<br />

and available templates displays in the display pane.<br />

4 From the list, select the template you want to edit, and click Edit. The Edit Presentation<br />

Template window displays with the selected template in the editing pane.<br />

5 Perform your editing tasks as required:<br />

“Working With Grids” on page 204<br />

“Working With Cells” on page 205<br />

“Working With Labels” on page 206<br />

“Working With Tabs” on page 209<br />

“Filtering Fields” on page 210<br />

“Adding Fields” on page 211<br />

“Working With Images” on page 212<br />

203


Chapter 5: Customizing Workflow<br />

204<br />

6 Save your changes at frequent intervals. When you have completed your editing, click<br />

Save and then Close to close the template designer.<br />

Working With Grids<br />

You can set up new grids or modify the properties for an existing grid. The available<br />

properties are background, border, cell padding, cell spacing, fill, pack, and visibility.<br />

To set up a grid<br />

NOTE To modify an existing grid, highlight the target grid and go directly to step 4.<br />

1 From the presentation template designer, drag the grid tool onto the design pane to<br />

add a new grid to your template. The New Grid dialog box displays. By default, the<br />

template starts with a grid containing two rows and two columns.<br />

2 Set the size of the grid:<br />

In the Number of Rows field, select the number of rows required for the grid.<br />

In the Number of Columns field, select the number of columns required for the grid.<br />

3 Click OK to insert the new grid on the design pane.<br />

NOTE These procedures only describe how to modify selected grid components of<br />

the template. Through the Layout Properties dialog box, you can make global<br />

changes that apply by default to all grid components. For more information, see<br />

“Default Grid Properties” on page 195.


4 Modify the properties of the grid as required:<br />

Customizing Item Presentation<br />

For Background, specify the default background color of the grid. You can select a<br />

named color from the list, or click Custom and select from the Swatches, HSB, or<br />

RGB color selectors. Your systems determines the Default color.<br />

For Border, specify the width of the border around the outside edge of the grid.<br />

Values range from 0 to 99. By default, Border has the value 0.<br />

For Cell Padding, specify the distance between individual cells on the grid.<br />

Values range from 0 to 99. By default, Cell Padding has the value 0.<br />

For Cell Spacing, specify the distance between the cell contents and the cell<br />

margin. Values range from 0 to 99. By default, Cell Spacing has the value 0.<br />

For Fill, specify whether the grid expands to fill the available display space. If fill<br />

is set to True, the grid expands to fill the available width in the item display. If fill is<br />

set to False, the grid uses only the space required to display its contents. By<br />

default, Fill is enabled.<br />

NOTE Because it can result in an uneven border, it is preferable to use the<br />

Fill=False option only for grids at the bottom of the item display.<br />

For Pack, specify the horizontal space occupied by columns. If pack is set to True,<br />

then all columns are sized to fit their contents and the last column (at the far right)<br />

then occupies the remaining horizontal space in the grid. By default, Pack is<br />

enabled.<br />

For Visible When, specify a value to control the visibility of the selected grid. For<br />

example, if the grid is only visible when the assigned group is visible, select<br />

Assigned Group. The visibility of the grid takes priority over the visibility of an<br />

individual cell.<br />

The selected grid is immediately formatted according to your selections.<br />

5 To save your changes, click Save.<br />

Working With Cells<br />

You can modify the property for individual cells as required to customize your template<br />

design. The available properties include horizontal alignment, background, vertical<br />

alignment, visibility, and wrap.<br />

NOTE If you decide to leave empty cells in the template, empty space displays in the<br />

item presentation for both the GUI and Web interface.<br />

205


Chapter 5: Customizing Workflow<br />

206<br />

To format template cells<br />

1 From the presentation template designer, select the cell you want to modify. The<br />

available properties display.<br />

NOTE These procedures only describe how to modify selected cell components of<br />

the template. Through the Layout Properties dialog box, you can make global<br />

changes that apply by default to all cell components. For more information on<br />

default cell properties, see “Default Cell Properties” on page 195.<br />

2 In the Properties pane, configure the following properties as required:<br />

For Background, specify the preferred background color of the cell by choosing an<br />

available named color, or by selecting the Custom option and choosing a color from<br />

the selectors for Swatches, HSB, RGB, or Default.<br />

For Horz. Alignment, specify the horizontal alignment of the cell contents,<br />

whether Left, Center, Right, or Default.<br />

For Vert. Alignment, specify the vertical alignment of the cell contents, whether<br />

Top, Middle, Bottom, or Default.<br />

For Visible When, specify a value to control the visibility of the cell. For example,<br />

if the cell is only visible when the assigned group is visible, select Assigned Group.<br />

For Wrap, specify how text wraps within the selected cell. By default, wrapping is<br />

enabled (true). To disable wrapping, select false.<br />

NOTE The visibility of the grid takes priority over the visibility of an individual cell.<br />

3 To save your changes, click Save.<br />

Working With Labels<br />

You can modify individual text labels, field labels, and field values to create the emphasis,<br />

readability, and layout you want for your template. Text labels are simple text strings defined<br />

by you.


Customizing Item Presentation<br />

Field labels are assigned by <strong>MKS</strong> <strong>Integrity</strong> according to your field definitions. You can<br />

override the text presented as a field label for purposes of the item display.<br />

IMPORTANT For purposes of item display, a field label also overrides the display<br />

name for a field. For more information on display names, see “Using Display<br />

Names” on page 126.<br />

The field value is directly associated with the field label. The content for field values is<br />

supplied by <strong>MKS</strong> <strong>Integrity</strong> according to the information submitted by users over the item’s<br />

life. You can format the style of presentation for field values, but you cannot change their<br />

content.<br />

To modify text labels<br />

1 From the presentation template designer, select the label you want to modify.<br />

TIP These procedures only describe how to modify selected text labels of the<br />

template. You can make global changes that apply by default to all text labels using<br />

the Layout Properties dialog box. For more information, see “Modifying Template<br />

Properties” on page 191.<br />

207


Chapter 5: Customizing Workflow<br />

208<br />

2 In the Property pane, configure the following properties as required:<br />

For Text, type the text string you want to display as the label. For example, you<br />

could type Development Items to create a heading for your custom display. To<br />

restore the default text, delete the text string that you entered as an override and<br />

press ENTER; the default text string is restored on the label.<br />

For Text Style, specify the style you want applied to the label. By default, styles<br />

are pre-defined for Default, FieldLabel, FieldValue, and Heading. You can<br />

edit the pre-defined styles and create additional custom styles as needed. For<br />

example, you could apply the Heading style to set a label as a heading. For more<br />

information on text styles, see “Text Styles” on page 193.<br />

NOTE You can modify or delete the default styles or create new ones to suit your<br />

design.<br />

For Visible When, specify a value to control the visibility of the cell. For example,<br />

if the cell is only visible when the assigned group is visible, select Assigned Group.<br />

3 To save your changes, click Save.<br />

To modify field labels<br />

1 From the presentation template designer, select the field label you want to edit.<br />

TIP These procedures only describe how to modify selected field labels of the<br />

template. You can make global changes that apply by default to all field labels using<br />

the Layout Properties dialog box. For more information, see “Modifying Template<br />

Properties” on page 191.


2 In the Property pane, configure the properties as required:<br />

Customizing Item Presentation<br />

For Text Override, type the text string you want to display as the field label. For<br />

purposes of the presentation template, this text overrides the field label, that is the<br />

display name, as defined in <strong>MKS</strong> <strong>Integrity</strong>.<br />

For Text Style, specify the style you want to apply. By default, styles are predefined<br />

for Default, FieldLabel, FieldValue, and Heading. You can edit the<br />

pre-defined styles and create additional custom styles as needed. For more<br />

information on text styles, see “Text Styles” on page 193.<br />

3 To save your changes, click Save.<br />

To modify field values<br />

1 From the presentation template designer, select the field value you want to edit.<br />

TIP These procedures only describe how to modify selected field values of the<br />

template. You can make global changes that apply by default to all field values<br />

using the Layout Properties dialog box. For more information, see “Modifying<br />

Template Properties” on page 191.<br />

2 In the Property pane, modify the Text Style property as required. Select a style to<br />

apply to the field value. By default, styles are pre-defined for Default, FieldLabel,<br />

FieldValue, and Heading. You can edit the pre-defined styles and create additional<br />

custom styles as needed. For more information on text styles, see “Text Styles” on<br />

page 193.<br />

3 To save your changes, click Save.<br />

Working With Tabs<br />

In a presentation template, a tab provides a way for you to separate design elements onto<br />

different panels.<br />

Key Considerations<br />

You cannot add the same field more than once to the same tab.<br />

209


Chapter 5: Customizing Workflow<br />

210<br />

You can add the same field to different tabs in the same template.<br />

You can view a comma-separated list of the tabs a field has been added to by removing<br />

the not in any tab filter (see “Filtering Fields” on page 210). The tab name appears in<br />

parentheses after the field name in the Fields View pane, for example, Attachments<br />

[Fields].<br />

When there are mandatory fields on different tabs, the same visual indicator you have<br />

specified for mandatory fields is automatically used for the tab name to indicate to the<br />

user that the tab contains a mandatory field on a tab not currently displayed.<br />

Tab Operations<br />

The following table is a quick reference for performing tasks with tabs in presentation<br />

templates from the Presentation Template Designer (see “Creating New Presentation<br />

Template” on page 198 or “Editing Presentation Template” on page 203).<br />

Task Operation<br />

Create tab Click . The default name is new tab.<br />

Clone tab Select a tab, then click . The cloned tab is inserted into the<br />

last position in the layout (last tab). The source tab name is<br />

used for the default name, appended with clone.<br />

Rename tab Select the tab (click its name). Its properties display in the<br />

Property Pane. Change the value for the Name property.<br />

Reorder a tab Select the tab (click its name). Its properties display in the<br />

Property Pane. Change the value for the Position property.<br />

Use the same field on different tabs Ensure that not on any tab is not a restriction on the Fields<br />

Filter. That way the same field is available to drag to a cell on<br />

any tab.<br />

Enable tab check mark Indicators Select the tab (click its name). Its properties display in the<br />

Property Pane. Change the value for the Has Checkmark<br />

Icon property to True.<br />

Enabling this property causes users to see a check mark<br />

icon on the tab name if any field on a tab requires user input.<br />

Delete tab Select the tab (click its name). Click . The Delete Tab<br />

dialog displays to confirm before the delete operation is<br />

performed.<br />

Caution: You cannot undo deleting a tab.<br />

Filtering Fields<br />

The fields filter determines which fields are displayed in the Fields View pane of the<br />

presentation template designer. For more information on using the fields filter, see “Filtering<br />

Data” on page 18.


The following table describes the available field filters:<br />

Filter... Displays...<br />

not in any tab Fields not yet added to any tab.<br />

Adding Fields<br />

Customizing Item Presentation<br />

The Fields view pane displays the fields associated with the selection. The fields are available<br />

to be dragged onto the grid.<br />

To add a field to the template grid<br />

1 In the Fields view pane of the presentation template designer, select a field to add to the<br />

template, for example, Assigned Group. The available fields are determined by the<br />

selection you make in the fields filter list (see “Filtering Fields” on page 210).<br />

2 Drag the selected field into the target cell of the grid. The field displays as a Field<br />

Name{Field Value}. For example, if you select the Assigned Group field, the display<br />

appears as follows:<br />

By default, the field name shown by the template designer is the display name entered<br />

when the field was created. For more information on display names, see “Using Display<br />

Names” on page 126.<br />

3 Drag the field value to the adjacent cell.<br />

Note: Filter is on by default for each new template created.<br />

in tab Fields added to specified tab.<br />

visible in item type Fields visible in specified item type.<br />

mandatory in item type Fields mandatory in specified item type.<br />

visible in all types Fields visible in all types.<br />

of field type Specific field.<br />

4 Repeat this procedure until all desired fields are added to the grid.<br />

211


Chapter 5: Customizing Workflow<br />

212<br />

NOTE Fields that remain in the Fields view pane are not referenced by the template.<br />

<strong>MKS</strong> <strong>Integrity</strong> assigns these fields a layout according to the default setting for<br />

Unreferenced Fields under General template properties. For more information,<br />

see “General Properties” on page 192.<br />

To delete a field completely and return it to the Fields view pane, you must delete<br />

the Field Label and Field Value pair for the target field.<br />

If you decide to leave empty cells in the template, empty space displays in the item<br />

presentation for both the GUI and Web interface.<br />

Working With Images<br />

The presentation template designer allows you to add logos and images to customize your<br />

presentation template. Images are added by entering a URL or Web address. You can<br />

reference image files that are in GIF, JPEG, or PNG format.<br />

You add a logo by modifying the general properties for the template. Logos are always<br />

added at the top of the template and can be aligned to the right or left edge.<br />

Images can be added to any cell in the grid by dragging the image tool to the target cell.<br />

You then type the URL or Web address for the target image, and it displays in the<br />

presentation template.<br />

Storing Image Files<br />

If you use the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to store the required images, the image files are made<br />

available to your template from the following directory:<br />

installdir/data/public_html/images<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Using an URL address, you can also access images on any public HTML server.<br />

To add a logo<br />

IMPORTANT Image files copied to the web directory are not backed up and must be<br />

restored manually. Therefore, it is important to retain copies of your required image<br />

files.<br />

1 Copy the image to the following directory on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>:<br />

installdir/data/public_html/images/logo<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

The image is now available for use in your template.<br />

NOTE Using an URL address, you can also access images on any public HTML<br />

server.


Customizing Item Presentation<br />

2 To open the Layout Properties dialog box, click on the toolbar. The Layout Properties<br />

dialog box displays.<br />

3 Under the General tab in the Logo URL field, enter the case-sensitive URL for the image<br />

location using the following syntax:<br />

http:///images/logos/<br />

For example, an image file named corporate_logo.gif on the xyz-server would<br />

have the following URL:<br />

http://xyz-server:7001/images/logos/corporate_logo.gif<br />

4 In the Logo Alignment field, choose whether you want the logo to be aligned to the right<br />

or left edge of the template. Logos are always placed at the top edge of the template. The<br />

logo is placed at the top of the template.<br />

5 To save your changes, click Save.<br />

To add a new image<br />

1 Copy the image to the following directory on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>:<br />

installdir/data/public_html/images<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>,<br />

and images is a subdirectory to contain the images. The image is now available for use<br />

in your template.<br />

2 Click the image tool on the toolbar and insert the image placeholder in the target cell.<br />

3 In the Property pane, click the value field for Image URL, and enter the URL for the<br />

image location using the following syntax:<br />

http://images/<br />

For example, the image file named corporate_logo.gif on the xyz-server would<br />

have the following URL:<br />

http://xyz-server:7001/images/corporate_logo.gif<br />

213


Chapter 5: Customizing Workflow<br />

214<br />

4 If required for the Visible When property, specify a value to control the visibility of the<br />

image. To set a value, click the associated value field. For example, if the image should<br />

only be visible when the assigned group is visible, select Assigned Group. The image is<br />

placed into the target cell on the template.<br />

5 To save your changes, click Save.<br />

Copying Presentation Template<br />

You can copy a presentation template to use it as the basis for a new template. For example,<br />

you can create a generic presentation template to reflect your corporate standards, and use<br />

that template as the basis for all other templates. You can then copy the generic template and<br />

make modifications that are specific to an individual item type saving each modified<br />

template and applying it to the appropriate type. Copying a template is carried out from the<br />

Edit Type window using the Copy function.<br />

To copy a presentation template<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the Workflows and Documents<br />

node, and select Types. The display pane shows the available item types.<br />

2 Highlight the item type for the presentation template you want to copy, and select Type<br />

> Edit. The Edit Type window displays.<br />

3 From the Edit Type directory tree, select Presentations. The display pane shows the<br />

presentation template options and available templates.<br />

4 From the list, select the template you want to copy, and click Copy. The Create<br />

Presentation Template window displays the file name with the prefix Copy of.<br />

5 In the Name field, rename the template file as desired. The name you choose should help<br />

you to associate the template with the item type it is intended for.<br />

6 Make any design changes to the new presentation template as required. For more<br />

information, see “Editing Presentation Template” on page 203.<br />

7 When you have completed your changes, click Save and then Close. The new template is<br />

added to the list of available templates. You can now set the new template for the item<br />

type, or retain it for future use.<br />

Viewing Presentation Templates<br />

At any time, you can also view the presentation template settings for a given type. Viewing is<br />

carried out from the View Type window.


To view the presentation template settings for a type<br />

Customizing Item Presentation<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the Workflows and Documents<br />

node, and select Types. The display pane shows the available item types.<br />

2 Select the item type you want to create the new presentation template for, and select<br />

Type > View. The View Type window displays.<br />

3 From the View Type directory tree, select Presentations. The display pane shows the<br />

selected template options under Set Presentation Template.<br />

NOTE You cannot modify any presentation template options while in view mode.<br />

4 Once you have finished viewing the information, click Close to close the View Type<br />

window.<br />

Deleting Presentation Template<br />

If you no longer want to use a template for a given item type, you can delete that template.<br />

You cannot delete a presentation template that is still set for an item type. You must first set a<br />

new template for the type and then delete the presentation template. For more information<br />

on setting the presentation template for an item type, see “To set the new presentation<br />

template for the target type” on page 201.<br />

Deleting a template is carried out from the Edit Type window using the Delete function. Once<br />

a template is deleted for a given type, you must set a new template—either a default template<br />

or one created by you. If you do not set a new template, <strong>MKS</strong> <strong>Integrity</strong> notifies you with an<br />

error message and automatically applies the default templates.<br />

NOTE You cannot delete the default templates (default and defaultprint)<br />

stored with <strong>MKS</strong> <strong>Integrity</strong>.<br />

To delete a presentation template<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the Workflows and Documents<br />

node, and select Types. The display pane shows the available item types.<br />

2 Highlight the item type you want to delete the new presentation template for, and select<br />

Type > Edit. The Edit Type window displays.<br />

3 From the Edit Type directory tree, select Presentations. The display pane shows the<br />

presentation template options and available templates.<br />

4 Under Set Presentation Template, set a new template (either a default or one created by<br />

you) for the item type you are editing.<br />

215


Chapter 5: Customizing Workflow<br />

216<br />

5 From the list, select the presentation template you want to delete, and click Delete. The<br />

Confirm Delete Presentation Template dialog box displays and you are asked to confirm<br />

the deletion.<br />

IMPORTANT You cannot delete a presentation template that is still set for an item<br />

type. You must first set a new template for the type and then delete the presentation<br />

template. For more information on setting the presentation template for an item<br />

type, see “To set the new presentation template for the target type” on page 201.<br />

6 To delete the selected template, click Yes. The template is deleted and the name is<br />

removed from the list of available presentation templates.<br />

If no custom presentation template is assigned for a type, items display and are printed<br />

using <strong>MKS</strong> <strong>Integrity</strong>’s default and defaultprint templates.<br />

Customizing Rich Content Fields<br />

Rich content allows users to enhance the display of text in long text fields by adding<br />

formatted text, tables, background colors, images, and hyperlinks. To ensure a consistent<br />

look when viewing and printing rich content field data in different Web browsers, you can<br />

define screen and printer Cascading Style Sheets (CSS).<br />

HTML Elements and Attributes<br />

Rich content is expressed using a limited set of HTML elements and attributes. In the GUI<br />

and Web interface, rich content is applied using commands and toolbar buttons; however,<br />

HTML source can be copied and pasted into rich content fields. In the CLI and CSS files, rich<br />

content is applied and styles are defined using the HTML elements and attributes. Detailed<br />

information about CSS and HTML is beyond the scope of this guide. For more information,<br />

browse to:<br />

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/<br />

CSS.html


http://www.w3.org/TR/CSS1<br />

Element Attributes<br />

Customizing Rich Content Fields<br />

Mandatory element that prefaces all elements in a rich content<br />

field. Other comments are removed.<br />

to align<br />

style, align<br />

<br />

size, width<br />

, , style<br />


Chapter 5: Customizing Workflow<br />

218<br />

Element Attributes<br />

<br />

style<br />

style, rowspace, align, height, width, bgcolor, valign,<br />

background<br />

<br />

CSS Definitions<br />

NOTE For any elements that deal with size units, the attributes can only be specified<br />

as values in pixels or points. Values in inches cannot be specified.<br />

Each CSS file consists of a single HTML style element, which is a subset of the CSS 1.0<br />

specification. The element defines base styles to be applied to the rich content field;<br />

however, styles for supported HTML elements may also be defined. Regular or class styles<br />

cannot be defined, specifically:<br />

no generic (.foo { color: green; }) or regular classes (h1.foo {color:<br />

green;})<br />

no ID based selectors (#1234 { color: green; })<br />

no pseudo-classes (A:link { color: red}) or pseudo-elements (P:first-line {<br />

font-variant: small-caps})<br />

Location of CSS Files<br />

Screen and printer CSS files (default.css) are stored on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in the<br />

following directories:<br />

installdir/data/im/richcontent/styles/screen<br />

installdir/data/im/richcontent/styles/printer<br />

Removing and Transforming Style Definitions and Elements<br />

If any CSS selector or rich content field references an unsupported selector or element, the<br />

invalid style definition or element is silently discarded.<br />

In the Web interface and instances where rich content field data is displayed as a complete<br />

HTML page, such as the Items view, the definitions in the CSS file are transformed before the<br />

file is applied to the rich content field data.<br />

Key Considerations<br />

The screen and print CSS file are not applied to field data in reports.<br />

The printer CSS file is applied by the print item command.


Customizing Report Presentation Templates<br />

You cannot override a rich content field’s CSS using the type field override or report<br />

definition.<br />

Customizing Report Presentation Templates<br />

Workflow and document reports are summaries of the data in your project. Reports are based<br />

on the standard and custom fields of types. Reports can be customized to include images,<br />

fonts, and hyperlinks, and can be saved as HTML files for viewing on the Web. Configuration<br />

management reports provide an analysis of projects, members, or individual archives.<br />

Reports and graphs can be printed or viewed on screen.<br />

Report presentation templates control the organization of report data based on groupings<br />

and sortings. The report tags you specify in a report presentation template represent the<br />

panels that a user sees after they select a presentation template in the Report Wizard. For more<br />

information on creating a workflow and document report, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User<br />

<strong>Guide</strong>.<br />

<strong>MKS</strong> <strong>Integrity</strong> provides sample templates you can use as a base to create custom templates<br />

that include only the data you require. Templates are saved in HTML or XML format for<br />

rendering in a Web browser.<br />

Key Considerations<br />

Creating a custom template or modifying an existing template requires knowledge of<br />

HTML/XML. This guide does not offer assistance with HTML/XML coding. If you are<br />

not familiar with HTML/XML, you should not attempt to create or modify a<br />

presentation template.<br />

If you create a custom template that is not based on an existing workflow and document<br />

report template, and if you want that report to display UTF-8 characters, specify UTF-8<br />

as the character set (HTML), or encoding (XML) in the report header.<br />

Creating report styles requires knowledge of CSS. This guide does not offer assistance<br />

with CSS coding. If you are not familiar with HTML/XML, you should not attempt to<br />

create or modify a CSS file.<br />

Workflow and document report elements are not removed when the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> is uninstalled.<br />

You should not directly alter an existing presentation template or an example<br />

presentation template. Instead, you should create a copy of it and modify the copy to suit<br />

your needs.<br />

Report tags used in report presentation templates are case sensitive.<br />

If you create a custom template that is not based on an existing report template, review<br />

your HTML and report tags, and ensure that hyperlinks open in a new window.<br />

219


Chapter 5: Customizing Workflow<br />

220<br />

To create a custom report presentation template<br />

The following procedure details how to create a report presentation template by beginning<br />

with a copy of an existing template. You can, however, create a template simply using the<br />

available tags. For it to appear in the Report Wizard, the template, along with screen and<br />

printer CSS files, logo image, and report template preview image must be placed in the<br />

correct directories.<br />

NOTE Once you move the modified files to the correct locations, the changes are<br />

automatically detected when you run the Report Wizard. You do not need to restart<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

1 Browse to the following directory:<br />

installdir/data/reports/recipes<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

2 Select an example template to use, and make a copy of the file.<br />

3 Rename the copied example template to the name you want to appear in the Report<br />

Wizard.<br />

4 Open the template file in a text editor, and make the necessary modifications using the<br />

tags described in “Report Tags” on page 222.<br />

5 When you complete the necessary modifications to the template file, move it to:<br />

installdir/data/reports/recipes<br />

6 Create individual CSS files for the printer and screen styles. The sample names must<br />

match the report template name.<br />

a) Place the printer style in:<br />

installdir/data/reports/styles/printer<br />

b) Place the screen style in:<br />

installdir/data/reports/styles/screen<br />

c) Place the screen style sample in:<br />

installdir/data/reports/styles/screen/samples<br />

d) Place the printer style sample in:<br />

installdir/data/reports/styles/printer/samples<br />

7 Optionally, create an image in JPEG, GIF, or PNG format for a company logo to be used<br />

in the report. Place the image in:<br />

installdir/data/public_html/images/logos


Report Elements<br />

Customizing Report Presentation Templates<br />

8 Optionally, create an image in JPEG, GIF, or PNG format for the new template. The<br />

image name must match the report template name. Place the image in:<br />

installdir/data/reports/recipes/images<br />

The following customizable elements make up a report:<br />

Element Description Location<br />

template file Template file determines layout and format<br />

of report and includes parameters that<br />

determine what data is contained in report.<br />

Template file must be coded in either<br />

HTML or XML and saved without an<br />

extension.<br />

If you are creating or working with an XML<br />

report template, encoding must be<br />

adjusted if you are using a special<br />

character set of any kind.<br />

cascading style sheet CSS determines how reports appear when<br />

viewed in a browser window or when<br />

printed. A CSS file is required for both<br />

screen style and printer style.<br />

Important: Creating a CSS file or<br />

modifying an existing CSS file requires<br />

knowledge of CSS. This guide does not<br />

offer assistance with CSS coding. If you<br />

are not familiar with CSS, you should not<br />

attempt to create or modify a CSS file.<br />

images A small image of report template so that<br />

users have a graphic representation of<br />

report and how it displays data. This is<br />

optional, but is helpful to users when<br />

deciding on a template to use.<br />

Note: Image must have same name as<br />

corresponding template file.<br />

Template files are located in:<br />

/<br />

data/reports/recipes<br />

Screen style HTML samples are located in:<br />

/<br />

data/reports/styles/screen/<br />

samples<br />

Printer style HTML samples are located in:<br />

/<br />

data/reports/styles/printer/<br />

samples<br />

Style sheet samples are HTML files with<br />

same name as CSS and a .css.html<br />

extension.<br />

Screen style CSS files are located in:<br />

installdir/data/reports/<br />

styles/screen<br />

Printer style CSS files are located in:<br />

installdir/data/reports/<br />

styles/printer<br />

CSS files must be in CSS format with a .css<br />

extension.<br />

installdir/data/reports/<br />

recipes/images<br />

Note: Supported image types are GIF, JPEG,<br />

and PNG.<br />

logos A logo image to display in report. installdir/data/public_html/<br />

images/logos<br />

Note: Supported image types are GIF, JPEG,<br />

and PNG.<br />

221


Chapter 5: Customizing Workflow<br />

Report Tags<br />

222<br />

The following tables show the available report tags and what they do.<br />

Report Tag Description<br />

Basic Tags<br />

Presentation template version. Allows future releases of report wizard to<br />

interpret and process older templates. Information is on first line in template<br />

and does not display in Report Wizard or generated report.<br />

Templates created in <strong>MKS</strong> <strong>Integrity</strong> 2006 use , templates<br />

created in <strong>MKS</strong> <strong>Integrity</strong> 2007 (or later) use , and so on.<br />

Presentation template description. Typically second line in presentation<br />

template. Displays with report name and image in Type panel of Report<br />

Wizard.<br />

You can include HTML tags in description. For example, to add bolding,<br />

specify:<br />

Project Description<br />

If you do not include tags, literal string displays in report, for<br />

example, Project Description.<br />

/<br />

<br />

/<br />

<br />

/<br />

<br />

Everything between tags repeated for each item returned by specified query.<br />

Tag required for all templates.<br />

Everything between tags repeated by number of fields selected in Item Fields<br />

panel of Report Wizard.<br />

Use to prevent grouping fields<br />

from being reported (if using grouping tag).<br />

&fielddisplayname displays field name.<br />

&fieldname displays field value.<br />

&#fields displays number of fields iterated.<br />

Everything between tags is used to filter report contents. You can specify<br />

multiple filter criteria. For example:<br />

((field[Type] = "Defect") and (field[Project]<br />

= "Release 2.1"))<br />

filters for items with a type of Defect that are assigned to project Release 2.1.


Report Tag Description<br />

Parameter Tags<br />

Customizing Report Presentation Templates<br />

Displays user entered values, such as name and description of report in<br />

Parameters panel of Report Wizard. Instances of &name tag are replaced with<br />

value, for example:<br />

<br />

Use ampersand and parameter name (that is &reporttitle) to display<br />

value in template.<br />

type can be String for single line or MultiString for multiple lines.<br />

Special values:<br />

{fieldname} displays value of field in template<br />

{fieldname.name} displays field name in template<br />

Specifies keyword user can substitute with parameter value when running<br />

report (im runreport --param=value). Keywords and parameter values<br />

allow user to configure report content at runtime.<br />

For example, if report template includes:<br />

<br />

:%><br />

<br />

and user specifies:<br />

im runreport --param=segmentname=SegmentA BugReport<br />

replaced with , which is then<br />

substituted during normal pre-item substitution.<br />

Displays name of <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> that items in report reside on.<br />

Displays port number of <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> that items in report reside on.<br />

Displays name and port number of <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> that items in report<br />

reside on. Tag builds http://hostname:hostport/ as part of<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> URL.<br />

Tag useful in HTML tags for displaying images or linking to other reports.<br />

<br />

<br />

<br />

<br />

Displays an item ID number as hyperlink.<br />

Displays header and footer on each report page.<br />

Achieved through use of and HTML table tags and CSS.<br />

Required CSS:<br />

thead {display: table-header-group}<br />

tfoot {display: table-footer-group}<br />

and tags must be placed before tag.<br />

A pre-processing tag that replaces itself with the current name of the builtin<br />

fields used in solutions, where FILENAME is the one of the English field names<br />

for the builtin field. Because it is a pre-processing tag, it must be enclosed<br />

within a tag itself<br />

223


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

224<br />

Attribute Tags<br />

Displays Date Format field in Attributes panel of Report Wizard, for example:<br />

<br />

MM/dd/yy expands to 01/30/09.<br />

MMM dd yyyy expands to Jan 30 <strong>2009</strong>.<br />

MMMM dd, yyyy expands to January 30, <strong>2009</strong>.<br />

Displays Date Time Format field in Attributes panel of Report Wizard, for<br />

example:<br />

MM/dd/yy expands to 01/30/09.<br />

MMM dd yyyy expands to Jan 30 <strong>2009</strong>.<br />

MMMM dd, yyyy expands to January 30, <strong>2009</strong>.<br />

hh:mm:ss expands to hour, minute, and second using 2


Report Tag Description<br />

/<br />

<br />

Segment Tags<br />

Customizing Report Presentation Templates<br />

Displays Segment panel in Report wizard, for example:<br />

<br />

<br />

Can add any other tag between segment tags (i.e. ,<br />

, etc.) and you can nest segment tags.<br />

Setting type=regular to type=relationship enables Relationship Field<br />

panel in Report Wizard, for example:<br />


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

226<br />

<br />

/<br />

<br />

<br />

/ <br />

/<br />

<br />

/<br />

<br />

Report Tag Description<br />

<br />

/ <br />

<br />

/ <br />

/ <br />

<br />

/<br />

<br />

Attachment Tags<br />

Required to report on attachment information, with attachment tags placed<br />

between tags.<br />

Adding &attachmentFilter to attachment tag enables Attachment Filter<br />

section in Report Wizard to filter by file extension.<br />

Displays Attachment Fields panel in Report Wizard, allowing selection of<br />

attachment information.<br />

Adding &attachmentfielddisplayname displays name of attachment<br />

fields in report.<br />

Adding &attachmentfieldname displays value of attachment fields in<br />

report.<br />

Everything between tags displays when no attachments exist.<br />

Required to report on relationship attachment information, with attachment<br />

tags placed between tags.<br />

Time Entry Tags<br />

Required to report on time entry information, with time entry tags placed<br />

between tags.<br />

Displays Time Entry Fields panel in report wizard, allowing selection of time<br />

entry information.<br />

Everything between tags displays when no time entries exist.<br />

Adding &timeentryfielddisplayname displays name of time entry fields<br />

in report.<br />

Adding &timeentryfieldname displays value of time entry fields in report.<br />

Required to report on relationship time entry information, with time entry tags<br />

placed between tags.


Report Tags Description<br />

<br />

<br />

<br />

&verdictfilter<br />

&verdictfiltertype<br />

/<br />

<br />

/<br />

<br />

<br />

<br />

<br />

/<br />

<br />

/<br />

<br />

<br />

<br />

<br />

/<br />

<br />

/<br />

<br />

Test Result Tags<br />

Customizing Report Presentation Templates<br />

Reports on test result information, with test result field tags placed between<br />

tags.<br />

The field tag can be one of the following: Session ID, Test ID, Annotation,<br />

Verdict, Modified By, Modified Date.<br />

Allows test results to be filtered by verdict or verdict type.<br />

Everything between tags displays above test results when test results exist.<br />

Everything between the tags displays when no test results exist.<br />

Reports on test step information for a test result, with test step field tags<br />

placed between tags.<br />

The field tag can be one of the following: Step ID, Annotation, Result, Modified<br />

By, Modified Date.<br />

Everything between tags displays above test steps when test steps exist.<br />

Everything between the tags displays when no test steps exist.<br />

Reports on attachment information for a test result, with attachment field tags<br />

placed between tags.<br />

The field tag can be one of the following: Name, Size, HTML Link, Created By,<br />

Date Added, Summary.<br />

Everything between tags displays above attachments when attachments exist.<br />

Everything between the tags displays when no attachments exist.<br />

227


Chapter 5: Customizing Workflow<br />

Report Tags Description<br />

228<br />

<br />

<br />

<br />

/<br />

<br />

/<br />

<br />

Report Tag Description<br />

<br />

/<br />

<br />

<br />

/<br />

<br />

<br />

Reports on item information for a test result, with item field tags between tags.<br />

The field tag can be any regular item field.<br />

Everything between tags displays above items when items exist.<br />

Everything between the tags displays when no items exist.<br />

Relationship Tags<br />

Displays Relationship Fields panel in Report Wizard.<br />

Tag functions same as but for<br />

relationships. Required for each relationship segment.<br />

Must specify L# for each relationship level, except for first level, for example:<br />

First level would be: .<br />

Second level would be: .<br />

Displays Item Fields panel in Report Wizard for relationship section.<br />

Tag functions same as , but<br />

for relationships.<br />

Adding &relationshipfielddisplayname displays related field name.<br />

Adding &relationshipfieldname displays related field value.<br />

Displays Sort By panel in Report Wizard for relationship section, allowing<br />

sorting of related items.<br />

Displays Relationship Filter panel in Report Wizard, allowing filtering of related<br />

items.<br />

Is same type of filtering available for field editablility and relevance rules.<br />

<br />

/<br />

<br />

Test Result Tags<br />

Displays relationship flag in report. Replace flagname with name of flag.<br />

<strong>MKS</strong> recommends setting up flag name as parameter rather than be hardcoded<br />

in template.<br />

Everything between tags displays above related items when relationships<br />

exist.


Report Tag Description<br />

/<br />

<br />

/<br />

<br />

/<br />

<br />

/<br />

<br />

/<br />

<br />

<br />

<br />

<br />

<br />

<br />

header_and_or_footer_bl<br />

ocks<br />

<br />

Relationship Tags<br />

Customizing Report Presentation Templates<br />

Everything between tags displays below related items when relationships<br />

exist.<br />

Everything between tags displays when no relationships exist.<br />

Displays Group By in Report Wizard, allowing grouping of related items.<br />

For more than one level, include L# tag.<br />

Everything between tags displays above related items.<br />

Everything between tags displays below related items.<br />

To display specific relationship fields.<br />

Filter relationships within specified relationship field by flags, for example:<br />

<br />

Specify headers and footers for relationship details. Possible values for param<br />

are:<br />

header<br />

footer<br />

none<br />

Group items returned by specified relationship fields of specified item, where:<br />

Relationship level groupby tag prefixed with relationship to<br />

differentiate it from top-level groupby tag.<br />

L# tag specifies relationship level. L# tag not specified for level 1<br />

relationship.<br />

groupby_fieldname tag specifies field name in list of items. items are<br />

grouped by field values. Only one field can be specified per tag; allows<br />

header and footer per grouping.<br />

+ or - specify sort order of groups based on value of groupby field. +<br />

(default) indicates ascending, and - indicates descending.<br />

Multiple sets of relationshipgroupby tags can be specified within<br />

relationshipsdetail tag for multi-level grouping. For example, second<br />

set nested within first set and third set nested within second set.<br />

229


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

230<br />

<br />

<br />

<br />

<br />

group_computation_strin<br />

g<br />

<br />

<br />

computation_string<br />

<br />

<br />

/<br />

<br />

<br />

/<br />

<br />

Relationship Tags<br />

Specify headers and footers for relationship level groups. Valid values for<br />

param are:<br />

header<br />

footer<br />

Following grouping related tags used at top-level may also be used as part of<br />

header and footer at relationship level:<br />

specifies name of groupby field. Valid in header and<br />

footer.<br />

specifies value of groupby field. Valid in header and<br />

footer.<br />

specifies total number of items in group. Valid in footer<br />

only.<br />

Specify calculation against relationships fields in group of items, where<br />

group_computation_string specifies group computed expression.<br />

These tags are within context of specific relationship level. Do not specify L#<br />

relationship level tag.<br />

Specify calculation against relationship fields within item, where:<br />

computedValueDisplayPattern specifies display pattern for computed<br />

value.<br />

computation_string specifies computed expression.<br />

L# tag specifies relationship level. L# tag not specified for level 1<br />

relationship.<br />

Required to report on relationship time entry information, with time entry tags<br />

placed between tags.<br />

Required to report on label information for related items, with label tags placed<br />

between tags.<br />

For more than one relationship level, include L# tag. For example, for label<br />

information on a second level relationship use:<br />


Report Tag Description<br />

/<br />

<br />

<br />

/<br />

<br />

<br />

/<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Change Package Tags<br />

Customizing Report Presentation Templates<br />

Displays Change Package Type panel in Report Wizard, allowing selection of<br />

change package type to report on.<br />

Displays Change Package Attributes panel in Report Wizard to allow selection<br />

of CP attribute information in report.<br />

Attributes available depend on CP type chosen.<br />

Adding &genericcpfielddisplayname displays cp attribute name in<br />

report.<br />

Adding &genericcpfieldname displays cp attribute value in report.<br />

No tags to get relationship CP information.<br />

Displays Change Package Entry Attributes panel in Report Wizard.<br />

Used between /<br />

tags.<br />

Entry attributes available depend on CP type chosen.<br />

Adding &genericcpentryfielddisplayname displays cp entry attribute<br />

name in report.<br />

Adding &genericcpentryfieldname displays cp entry value in report.<br />

Display change package details for items included in report.<br />

These tags provide details for workflow and document management, and<br />

configuration management change packages.<br />

Display change package entry details for items included in report.<br />

These tags provide details for workflow and document management, and<br />

configuration management change packages.<br />

Display change package details for items included in report. These tags<br />

provide details for Implementer change packages.<br />

Display change package entry details for items included in report. These tags<br />

provide details for Implementer change packages.<br />

231


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

232<br />

Computed Expression Tags<br />

Performs calculation between fields in single item. For information on creating<br />

computed expressions, see “Computed Expression Types” on page 292.<br />

<br />

computation<br />

<br />

computation<br />

<br />

Report Tag Description<br />

/<br />

<br />

Performs calculation between fields in group of items. For information on<br />

creating computed expressions, see “Computed Expression Types” on<br />

page 292.<br />

Note: Group calculation must be aggregate expression.<br />

Specifies display pattern with computation against fields in single item, for<br />

example:<br />

22.0/7.0<br />

For more information on display patterns, see “Display Patterns” on page 28.<br />

Specifies display pattern with computation against fields in group of items.<br />

Grouping and Sorting Tags<br />

Displays Group By panel, allowing item grouping. Everything between tags<br />

grouped. You can nest grouping tags for any number of groupings.<br />

You can further detail grouping by specifying group names, values, and counts.<br />

groupby tag allows user to choose field to group by.<br />

To group data for multiple fields, include multiple groupby tags, for example:<br />

<br />

...<br />

<br />

...<br />

<br />

...<br />

<br />

...<br />

<br />

...<br />

<br />

Displays name of grouping field in report.<br />

Displays value of grouping field in report.


Report Tag Description<br />

Displays count of grouped items in report.<br />

Customizing Report Presentation Templates<br />

Displays Sort By panel in Report Wizard, allowing users to sort by selected<br />

item fields.<br />

Sort data for specific field, for example, report organizes data by sorting on ID<br />

field, starting from lowest ID to highest ID. sortby tag allows user to choose<br />

field to sort by.<br />

You may sort by multiple fields, separated by comma (,). Default sort order<br />

ascending (+); however, if necessary you can specify descending (-), for<br />

example:<br />

<br />

Report Tag Description<br />

/<br />

<br />

/<br />

<br />

/ <br />

/ <br />

<br />

<br />

Report Tag Description<br />

/<br />

<br />

/<br />

<br />

Grouping and Sorting Tags<br />

Label Tags<br />

Required to report on label information, with label tags placed between tags.<br />

The following label tags may be used:<br />

specifies the name of label.<br />

specifies the time the label was applied.<br />

Everything between the tags displays when no labels exist.<br />

Everything between the tags displays above labels when labels exist.<br />

Everything between the tags displays below labels when labels exist.<br />

Specify headers and footers for label details. Possible values for param are:<br />

header<br />

footer<br />

none<br />

Label Tags<br />

Required to report on label information, with label tags placed between tags.<br />

The following label tags may be used:<br />

specifies the name of label.<br />

specifies the time the label was applied.<br />

Everything between the tags displays when no labels exist.<br />

233


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

Customizing Test Verdicts<br />

234<br />

/ <br />

/ <br />

<br />

<br />

Report Tag Description<br />

<br />

or<br />

%<br />

Test verdicts are used to indicate the outcome of a test, for example, passed or failed.<br />

You can add new test verdicts or change the standard verdicts that are shipped with<br />

<strong>MKS</strong> <strong>Integrity</strong>. The default verdicts are: passed, failed, and skipped.<br />

You must have the Admin permission to work with test verdicts.<br />

Working in the Test Verdicts View<br />

Everything between the tags displays above labels when labels exist.<br />

Everything between the tags displays below labels when labels exist.<br />

Specify headers and footers for label details. Possible values for param are:<br />

header<br />

footer<br />

none<br />

You customize test verdicts in the Test Verdicts view. To open the Test Verdicts view from<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the Workflows and Documents node, and<br />

select Test Verdicts.<br />

CLI EQUIVALENT tm verdicts<br />

Label Tags<br />

Solution Tags<br />

Required to report on item type properties. Possible values for<br />

solutionproperty are:<br />

CategoryFieldName


Through the Test Verdicts view, you can perform the following actions.<br />

Operation Procedure<br />

Create a test verdict See “To create a test verdict in the GUI” on page 235<br />

Edit a test verdict See “To edit a test verdict in the GUI” on page 236<br />

Creating a Test Verdict<br />

Customizing Test Verdicts<br />

View test verdict details Select the test verdict in the Test Verdict view and select Test<br />

Verdict > View Definition<br />

Reposition a test verdict Select the test verdict in the Test Verdict view and select Test<br />

Verdict > Reposition. The Reposition Fields dialog box displays.<br />

Select the field you want to move, and click Move Up or Move<br />

Down.<br />

Deactivate a test verdict See “Deactivating Test Verdicts” on page 237.<br />

Delete a test verdict Select the test verdict in the Test Verdict view and selected Test<br />

Verdict > Reposition.<br />

Note: You cannot delete the default test verdicts shipped with<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

You can create your own test verdicts to use in addition to the default verdicts shipped with<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

CLI EQUIVALENT tm createverdict<br />

To create a test verdict in the GUI<br />

1 From the Test Verdicts view, select Test Verdict > Create. The Create Test Verdict dialog<br />

box displays.<br />

2 In the Name field, type a new name for the test verdict. This is the name you use to refer<br />

to the field in <strong>MKS</strong> <strong>Integrity</strong>. The Name field allows 100 alphanumeric characters.<br />

In the Display Name field, <strong>MKS</strong> <strong>Integrity</strong> automatically enters the same selected name.<br />

Display names display in the pick list field for test verdicts.<br />

You can choose a different name to use as the display name. Display names are useful<br />

for clarifying the terminology presented to users on the interface. For more information,<br />

see “Using Display Names” on page 126.<br />

3 In the Description field, type a more detailed textual description of the test verdict, such<br />

as when it should be used.<br />

4 To customize the order the test verdicts display in a picklist field, click the Position tab to<br />

display the Position panel, and use the Move Up and Move Down buttons to change the<br />

order in the list. This order is used throughout <strong>MKS</strong> <strong>Integrity</strong>.<br />

235


Chapter 5: Customizing Workflow<br />

236<br />

5 On the Image tab, associate an image with a test verdict. To associate an image with the<br />

test verdict, you have three options:<br />

To use your own icon image, select Use Custom Image, and click Select to browse<br />

for the image file.<br />

To use the predefined icon image, select Default Image.<br />

To associate no icon image with the user, select No Image.<br />

If you choose to use your own custom icon image, the image must be in GIF or JPEG<br />

format and no larger than 16 x 24 pixels.<br />

6 On the Verdict Type tab, select the appropriate type for the test verdict. You can have<br />

multiple verdicts for each type. For example, you could create different verdicts for<br />

different types of failures.<br />

Editing a Test Verdict<br />

You can edit the details of the default verdicts shipped with <strong>MKS</strong> <strong>Integrity</strong> or of any custom<br />

verdicts you have added.<br />

CLI EQUIVALENT tm editverdict<br />

To edit a test verdict in the GUI<br />

1 From the Test Verdicts view, select the test verdict you want to edit.<br />

2 Select Test Verdict > Edit. The Edit Test Verdict dialog box displays.<br />

3 Edit the information as required. For details about the fields in this dialog box, see “To<br />

create a test verdict in the GUI” on page 235.<br />

NOTE To deactivate a test verdict, disable the Active check box. Deactivated verdicts<br />

do not display in picklist fields. You cannot deactivate the default test verdicts<br />

shipped with <strong>MKS</strong> <strong>Integrity</strong>. For more information, see “Deactivating Test Verdicts”<br />

on page 237<br />

4 To view a history of administrative changes for the test verdict, click the History tab. The<br />

record of changes displays.<br />

NOTE You cannot edit the verdict type for the default test verdicts shipped with<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

5 To save your changes, click OK.


Deactivating Test Verdicts<br />

Configuring Attachment Size Limits<br />

Setting a test verdict to inactive means that in the GUI it is not displayed in any filtered<br />

picklists. By deactivating test verdicts, the picklist is filtered to display only those test verdict<br />

values that are currently active in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Key Considerations<br />

Inactive test verdicts continue to display in fields, history, query filters, relevance and<br />

editability rules, field relationship filters, charts, and reports.<br />

Inactive test verdicts can be selected in query filters, relevance and editability rules, field<br />

relationships, charts, and reports.<br />

Inactive test verdicts cannot be selected in fields; however, fields retain inactive picklist<br />

values.<br />

If one or more active test verdicts are referenced in a trigger field assignment and you<br />

attempt to make one of those test verdicts inactive, an error message displays the test<br />

verdicts and the trigger(s) where the assignment occurs. The references in the event<br />

trigger(s) must be removed before making a test verdict inactive.<br />

Configuring Attachment Size Limits<br />

As administrator, you can control the maximum size of file that users can attach to any item<br />

in <strong>MKS</strong> <strong>Integrity</strong>. You can set a higher or lower limit by modifying the value for<br />

mksis.im.maxAttachmentSizeMB in the following file:<br />

installdir/config/properties/im.properties<br />

For example, the following setting limits the maximum size of an attached file to 4 MB:<br />

mksis.im.maxAttachmentSizeMB=4<br />

The minimum value for the attachment size is a limit of 1 MB, while the maximum value is a<br />

limit of 250 MB. By default, the limit for attachment file size is 4 MB.<br />

NOTE For Microsoft SQL <strong>Server</strong>, the attachment size should not exceed 25 MB.<br />

For more information on configuring the property for mksis.im.maxAttachmentSizeMB,<br />

see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

237


Chapter 5: Customizing Workflow<br />

Configuring Limits for Queries<br />

238<br />

A query is a request to select and list the items that meet specific selection criteria. The<br />

selection criteria are a logical expression of specific values, or ranges of values, of the<br />

standard and custom fields of the item type.<br />

Charts are graphs that present trends over time or distributions of the data in your project.<br />

Charts are based on the standard and custom fields of item types. You can display trend<br />

charts as line or bar graphs, and distribution charts as pie or bar graphs. You can also display<br />

data in tabular form.<br />

<strong>MKS</strong> <strong>Integrity</strong> users have the ability to create complex queries that can demand significant<br />

system resources when run against a large database of items. Queries, reports, or charts that<br />

return a large result count can also demand significant memory resources from both the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> and client.<br />

To address the item of complex queries, <strong>MKS</strong> <strong>Integrity</strong> also includes two further options:<br />

query timeout setting for groups configured through the Groups view in the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

maximum query item count setting configured through Workflows and Document ><br />

Configuration > Properties in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

If you have specified query limits and a user runs a query exceeding those limits,<br />

<strong>MKS</strong> <strong>Integrity</strong> displays an error message to the user advising that the set limit has been<br />

exceeded. If the specified limits are relatively low and many of your users have large,<br />

complex queries, it may become necessary to modify the settings.<br />

As administrator, you can also stop a query that is actively running on the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>. For more information on viewing and stopping query processes, contact<br />

<strong>MKS</strong> Customer Care.<br />

System Query Timeout<br />

By default, the system query timeout value is 15 seconds. This means that if no other options<br />

are set for group query timeouts or maximum query item count, individual queries are<br />

allowed to run for 15 seconds before the system stops them.<br />

Values assigned for query timeout represent the total time the query is allowed to run—the<br />

higher the value, the longer the query is allowed to run. For example, a system query timeout<br />

value of 20 seconds allows the query to run for 20 seconds, which is higher than the default<br />

value of 15 seconds.<br />

IMPORTANT A system timeout value of 0 means there is no limit on the time allowed<br />

for the query and queries are allowed to run until all results are returned.


Configuring Limits for Queries<br />

The system query timeout is modified using the im diag command. For more information<br />

on the im diag command and modifying the system query timeout value, contact<br />

<strong>MKS</strong> Customer Care.<br />

Query Timeouts for Groups<br />

In addition to the system timeout value, you can limit the total time allowed for queries<br />

performed by members of any group. You can use group query timeouts to lower the system<br />

value by setting the group timeout value to a value lower than the system timeout value. By<br />

default, the query timeout value for groups is 0 allowing queries to run until all results are<br />

returned or until the system query timeout limit is met.<br />

IMPORTANT All users belong to the everyone group and the highest value of 0 (no<br />

limit) applies for all users. Therefore, to set effective query timeout limits for groups,<br />

you must first modify the query timeout value for the everyone group.<br />

The group query timeout option sets the time (in seconds) that any query can run for a<br />

member of the selected group.<br />

If a user belongs to multiple groups, the highest timeout setting is applied for that user. For<br />

example, if a user is in two groups, the Development group (with a 5 second query timeout<br />

value) and the everyone group (with a 10 second query timeout value), the 10 second limit is<br />

applied for that user. Therefore, any queries performed by that user are permitted to run for<br />

10 seconds before they are stopped.<br />

The group query timeout option is set through the Groups view in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client. For procedures on setting the query timeout option for groups, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>. You can also modify the group<br />

query timeout setting while editing a group.<br />

Maximum Query Item Count<br />

Extremely large queries can demand significant memory resources from both server and<br />

client. To assist in the management of memory resources, you can set higher or lower limits<br />

for the number of results returned by a query. The maximum query item count sets a value<br />

based on the total number of results rather than on the time it takes the query to run.<br />

The maximum query item count is configured by modifying the value for<br />

mksis.im.queryGovernor through Workflows and Document > Configuration > Properties in<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

The mksis.im.queryGovernor property governs the computation and return of queries run<br />

by <strong>MKS</strong> <strong>Integrity</strong>, and displays an error message if the number of items returned exceeds the<br />

specified limit. The setting applies to queries, reports, and charts. The minimum value is 100,<br />

and the maximum value is unlimited. By default, mksis.im.queryGovernor=10000. For<br />

239


Chapter 5: Customizing Workflow<br />

240<br />

more information on configuring the property for mksis.im.queryGovernor, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

NOTE Setting the mksis.im.queryGovernor property controls the total of all<br />

pages independent of the client’s page size.<br />

Configuring Context Based Text Searching<br />

The text searching feature enables the use of context search indexes. Context search indexes<br />

are automatically built for text searches, if the underlying database supports it; however, the<br />

text search queries perform differently using a context search.<br />

The Search function allows users to carry out simple text searches of the <strong>MKS</strong> <strong>Integrity</strong> item<br />

database. The text search uses a search syntax similar to many common Web search engines.<br />

The search is carried out by the underlying database and the results are passed back to<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

Text searches are available to users through both the GUI and the Web interface using the<br />

Search field on the toolbar. Text searches look only for information that is in short or long<br />

text fields. The search does not capture information in other types of fields, such as integer,<br />

pick, floating point, logical, date, user, or group fields. For more information on the text<br />

search feature, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

The property for configuring context based text searches is mksis.im.contextSearchOn set<br />

through Workflows and Document > Configuration > Properties in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client. By default, mksis.im.contextSearchOn is set to true.<br />

IMPORTANT For information on the databases that support the text search feature,<br />

see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

If you are migrating an <strong>MKS</strong> <strong>Integrity</strong> database from a previous release, certain<br />

additional steps are required. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

<strong>2009</strong> Installation and Configuration <strong>Guide</strong> and the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Upgrading<br />

<strong>Guide</strong>.<br />

If your users have <strong>MKS</strong> <strong>Integrity</strong> queries from a previous release that rely on the old<br />

text searching behavior, you may want to disable the use of the context search<br />

indexes temporarily. Otherwise, you can leave context searching enabled if the<br />

underlying database supports it.<br />

Synchronizing Database<br />

If your database does not support the automatic tracking of text field updates in the context<br />

search indexes, you can set a property to specify an interval for synchronizing that database.<br />

The property is configured through Workflows and Document > Configuration > Properties in<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client as follows:


mksis.im.contextSearchSync=30<br />

Setting Up Electronic Signatures<br />

NOTE This property is ignored for databases that do not require it. Currently only<br />

the Oracle database uses it.<br />

Setting the mksis.im.contextSearchSync property forces an update within the time interval<br />

(in seconds) that you specify. By default, this value is set to 30 seconds—that is, a<br />

synchronization every 30 seconds. The minimum value is 10 seconds.<br />

Setting Up Electronic Signatures<br />

Electronic signatures are required by certain regulatory bodies to ensure the authenticity,<br />

integrity, and, when appropriate, the confidentiality of electronic records. <strong>MKS</strong> provides<br />

electronic signature support for <strong>MKS</strong> <strong>Integrity</strong> items by allowing you to require users to<br />

specify a user name and password when making certain changes to an item. For example,<br />

you could require a user to provide an electronic signature when they change an item’s state<br />

to Completed.<br />

CAUTION If a batch edit causes an item change that requires an electronic signature,<br />

the batch edit fails.<br />

Electronic signatures are set up using event triggers for workflows and documents. For<br />

general information on event triggers and how to use them, see “Overview of Workflow and<br />

Document Triggers” on page 355. The electronic signature trigger must be set up as a rulebased<br />

pre-event trigger. When a change to an item matches the rule, the user must enter user<br />

name, password, and any comments in the Signature Required dialog box. The server<br />

validates the user’s signature and records it in the item’s delta.<br />

NOTE<br />

If a scheduled trigger or a change to a relationship field in a related item causes<br />

an item change that would normally require an electronic signature, the<br />

signature requirement is bypassed.<br />

NTSS-only schemes are not supported for electronic signatures in <strong>MKS</strong> <strong>Integrity</strong>.<br />

In such cases, an error message informs the user and the error is logged.<br />

Customizing Electronic Signature Trigger<br />

<strong>MKS</strong> provides a pre-created script (signatureRequired.js) for the electronic signature<br />

event trigger. You may need to modify this script to use some advanced features of electronic<br />

signatures. The script is broken into separate functions that you can modify. Full<br />

documentation is available in the comments for those functions.<br />

241


Chapter 5: Customizing Workflow<br />

242<br />

The pre-created script does the following:<br />

Requires a signature when an item is modified in a way that matches the trigger rule.<br />

You can restrict your signature requirements further through the isSigningRequired<br />

method.<br />

If the signature is valid, stores the signature information in the item history. You can set<br />

up additional logging using the signatureSuccess method.<br />

Allows all authenticated users to sign an item modification. You can restrict the users<br />

allowed to sign for an item modification using the signerRestriction method.<br />

Logs any signature failures. You can change what happens when an invalid signature is<br />

used, for example, sending an e-mail to an administrator. Use the signatureFailed<br />

method.<br />

Displays a message if no signature is provided. You can customize the message by<br />

changing the string used by the setSignatureRequired method.<br />

Displays a message if an invalid signature is provided. You can customize the message<br />

by changing the string used by the setRetrySignatureRequired method.<br />

Specific methods are available on the imIssueDeltaBean for signature authentication. For<br />

details on these methods, refer to the installed Javadocs under:<br />

installdir/data/documentation/javadocs/triggers/index.html<br />

However, you should not have to change any of the calls to these methods.<br />

Admin Provided Objects<br />

Admin provided objects are objects within the workflow and document object model that<br />

support solution definition and management, as well as workflow migration.<br />

Converting a user object to an admin provided object provides a number of benefits:<br />

it identifies the object as part of a solution, allowing users to distinguish between<br />

corporate standard user objects and those that other users have created (which may not<br />

be intended for general use)<br />

it allows <strong>MKS</strong> <strong>Integrity</strong> administrators, in addition to the creator of the original user<br />

object, to manage and update the object as needed<br />

admin provided objects are visible to all users, regardless of sharing permissions,<br />

avoiding potential issues with visibility<br />

Any object that is a component of a solution must be an admin provided object. The objects<br />

that can be converted to admin provided objects include: queries, charts, reports, and<br />

dashboards. Objects are specified as admin provided objects by setting the Admin Provided<br />

attribute when you create or edit the objects. If an object, such as a query, is required by a


Admin Provided Objects<br />

dependant component in the solution, such as a scheduled trigger, it is automatically<br />

registered as an admin provided object. Since triggers can only be defined and managed by<br />

<strong>MKS</strong> <strong>Integrity</strong> administrators and apply to all users, they are by nature part of a solution.<br />

Converting User Objects to Admin Provided Objects<br />

You may want to convert some user objects to admin provided objects to control access to<br />

them by users or so that they can be migrated. Access to admin provided objects is controlled<br />

by the CreateSharedAdmin permission. Admin provided objects are migrated using the<br />

Admin Migration Wizard (see “Testing Workflow With Admin Migration Wizard” on<br />

page 161).<br />

Note the following about converting user objects to admin provided objects:<br />

Converting a user object to an admin provided object is an irreversible operation based<br />

on the assumption that once converted, it is part of a solution and therefore should no<br />

longer be a privately controlled object that only the creator can manage.<br />

The creator of the original user object does not retain any special rights to that object<br />

after it is converted to an admin provided object.<br />

The creator of the original user object can still edit the admin provided object (if the<br />

server that hosts that object is not locked by an Admin Staging server) and delete the<br />

object if it is not referenced by other objects. These privileges are extended to <strong>MKS</strong><br />

<strong>Integrity</strong> administrators.<br />

You can migrate admin provided objects as part of the admin migration process.<br />

Admin provided objects are subject to the lock when the production server is locked.<br />

Admin provided objects display in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

You can share admin provided objects with users who are not administrators to view or<br />

edit.<br />

You can convert user objects queries, charts, reports, and dashboards to admin provided<br />

objects. When those objects are created from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, they<br />

are always admin provided objects. However, objects created from the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

can be converted to admin provided objects by editing them in the <strong>MKS</strong> <strong>Integrity</strong> Client, and<br />

then selecting the Admin Provided option. For details on editing queries, charts, reports, and<br />

dashboards, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Once the object has been converted to an admin provided object, it appears in the<br />

corresponding subview in the Workflows and Documents view of the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client (see “Tree Pane” on page 14). For example, admin queries appear in<br />

243


Chapter 5: Customizing Workflow<br />

244<br />

the Queries view that is a subview of the Workflows and Documents view (see “Tree Pane”<br />

on page 14).<br />

NOTE If you copy an admin provided object such as an admin query from the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, the Admin Provided option is selected and<br />

cannot be changed. If you copy an admin provided object from the <strong>MKS</strong> <strong>Integrity</strong><br />

Client, the Admin Provided option is cleared by default in the copy. You must select<br />

that option for the copied object to be an admin provided object.<br />

To manage admin provided objects in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

1 Expand the Workflows and Documents node, and select the type of object you want to<br />

manage (Queries, Reports, Charts or Dashboards). The object view displays.<br />

By default, the data filter in the object view displays all admin provided objects of that<br />

type. You can search for a specific chart by typing in the text filter. For more information,<br />

see “Filtering Data” on page 18.<br />

2 From the object menu, select Run, Create, Copy, Delete, Edit, or View Definition. For<br />

information on performing those tasks, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

3 When editing an object or viewing an object’s definition, you can view all the objects that<br />

refer to it by clicking the References tab. You can then use that information to minimize<br />

the impact of editing or deleting that object.<br />

The References panel displays the following information:<br />

Object Type displays the type of object referencing the viewed object. Possible<br />

objects include:<br />

Admin Change Package Type<br />

Admin Chart<br />

Admin Dynamic Group<br />

Admin Project<br />

Admin Query<br />

Admin Report<br />

Admin Type (item)<br />

Chart (user charts)<br />

Column Set<br />

Field (includes computed fields, as well as editability and relevance rules)<br />

Group Notification Rule<br />

Item Presentation Template<br />

Query (user queries)<br />

Report


Trigger (includes trigger rules and assignments)<br />

User Notification Rule<br />

User Name<br />

Name displays the actual name of the object referencing the viewed object.<br />

Using Type Properties<br />

Creator displays the user ID that was logged as creating the object reference.<br />

Using Type Properties<br />

Type properties provide custom code (such as triggers and API) with attributes to read and<br />

to act on based on their values in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Viewing Type Properties<br />

You can view type properties from the Type dialog box (see “Viewing Types” on page 93) in<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client. To view type properties, click the Type<br />

Properties node and use the data filter to search for the properties you want to view.<br />

If you have a solution installed on your <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, there are likely several type<br />

properties with values that you can choose to modify as part of your customization of<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

Defining Type Properties<br />

You can define type properties from the Edit Type (or Create Type) dialog box (see “Editing<br />

Types” on page 91 or “Creating Types” on page 84) in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client GUI. To define type properties, click the Type Properties node and use the data<br />

filter to search for the properties you want to define.<br />

Type properties can be any name=value pairing. For example, a type property can be<br />

something that solutions or custom configured triggers can look for as a switch in the custom<br />

code.<br />

Type Property Fields<br />

Type properties contain the following fields:<br />

Name contains the name of the type property.<br />

Value contains the definition of the type property (see “Defining Type Properties” on<br />

page 245).<br />

Description contains an optional description for the type property.<br />

245


Chapter 5: Customizing Workflow<br />

246<br />

You can perform the following operations on type properties from the type properties pane<br />

(see “Defining Type Properties” on page 245):<br />

Operation Procedure<br />

Operations for Type Properties<br />

Create type property Click Create. The Create a type property dialog box displays.<br />

For information on fields, see “Type Property Fields” on page 245.<br />

Edit type property Select the type property, and click Edit. The Edit a type property<br />

dialog box displays.<br />

For information on fields, see “Type Property Fields” on page 245.<br />

Copy type property Select the type property, and click Copy. The Copy a property<br />

dialog box displays. The default name is Copy of <br />

where is the name of the property copied.<br />

For information on fields, see “Type Property Fields” on page 245.<br />

Delete a type property Caution: You cannot undo deletion of a type property.<br />

Select the type property, and click Delete. Click Yes to the<br />

confirmation dialog box.


C HAPTER SIX<br />

Projects<br />

Using Projects to Manage Change and Source<br />

6<br />

This chapter contains information on using projects with items and members. It is<br />

important to understand that projects used for managing workflows and documents<br />

behave differently from projects used for managing configuration management, and that<br />

the two kinds of projects do not interact with each other.<br />

This chapter contains the following topics:<br />

“Workflow and Document Projects” on page 248<br />

“Configuration Management Projects” on page 262<br />

247


Chapter 6: Projects<br />

Where to Go Next<br />

248<br />

The following table contains a summary of what workflow and document project<br />

information is available to you:<br />

To Do This … See …<br />

Manage workflow and document projects,<br />

including creating and editing.<br />

Learn how to work with workflow and document<br />

projects in the Projects view.<br />

The following table contains a summary of what configuration management project<br />

information is available to you:<br />

Workflow and Document Projects<br />

“Workflow and Document Projects” on page 248<br />

“Projects View” on page 249<br />

Use workflow and document project metrics. “Managing Metadata for Workflow and<br />

Document Projects” on page 257<br />

Deactivate workflow and document projects that<br />

are no longer needed or in use.<br />

Assign an <strong>MKS</strong> <strong>Integrity</strong> administrator for a<br />

workflow and document project.<br />

To Do This … See …<br />

Learn what interfaces are available to you for<br />

working with and administering configuration<br />

management projects.<br />

Organize your configuration management<br />

projects.<br />

Work with configuration management projects,<br />

such as creating, importing, importing members,<br />

dropping, restoring to a checkpoint, deleting, and<br />

restoring deleted projects.<br />

“Deactivating Workflow and Document Projects”<br />

on page 259<br />

“Assigning <strong>MKS</strong> <strong>Integrity</strong> Project Administrator”<br />

on page 260<br />

“Configuration Management Interfaces” on<br />

page 263<br />

“Organizing Your Projects” on page 263<br />

“Working With Projects” on page 265<br />

Use configuration management project metrics. “Using Configuration Management Project<br />

Metrics” on page 280<br />

Use configuration management subprojects. “Working With Subprojects” on page 282<br />

Share configuration management archives with<br />

configuration management projects.<br />

“Sharing Archives With Other Projects” on<br />

page 287<br />

When <strong>MKS</strong> <strong>Integrity</strong> is used for managing workflows and documents, a project is known as a<br />

workflow and document project. Workflow and document projects allow you to group items


Projects View<br />

Workflow and Document Projects<br />

according to undertakings that are defined in your organization. The projects created by you<br />

then become available for selection in the Project field—a default field in <strong>MKS</strong> <strong>Integrity</strong>. You<br />

can create projects and subprojects (or child projects) as needed.<br />

Once a project is created, you can edit it or add a subproject. You can also add a subproject to<br />

a subproject. If a project has subprojects, it has a plus sign (+) symbol to the left of it. To<br />

expand the project so you can see its subprojects, click + or double click the project name.<br />

Through the Project view, you can also designate users or groups as project administrators<br />

for a specified project. For more information on project administrators, see “Assigning <strong>MKS</strong><br />

<strong>Integrity</strong> Project Administrator” on page 260.<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage workflow and document<br />

projects from one convenient location: the Projects view.<br />

CLI EQUIVALENT im projects<br />

To open the Projects view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

Workflows and Documents node, and select Projects. The Projects view displays. For<br />

general information on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, see “Introduction” on<br />

page 10.<br />

The data filter (see “Filtering Data” on page 18) in the Projects view displays the names and<br />

descriptions of active projects by default; however, you can also configure the view to display<br />

the backing item ID (if specified), open image, and closed image. For more information, see<br />

“Creating Workflow and Document Projects” on page 252.<br />

With <strong>MKS</strong> <strong>Integrity</strong>, you can create projects and subprojects, as needed. You can even add a<br />

subproject to a subproject, as well as edit projects. If a project has subprojects, a + displays to<br />

the left. To expand the project so you can see its subprojects, click +. To launch a detailed<br />

view of the project, double click the name itself.<br />

NOTE To display entries in user and group fields when submitting items, at least<br />

one project must be shared with each available group, and the users and groups<br />

must have visibility into that project.<br />

If you double click a project, the Project dialog box displays for the selected project<br />

allowing you to view the properties. For more information on viewing projects, see “Viewing<br />

Workflow and Document Projects” on page 256.<br />

When you create a project, you can add additional information in a description field. For<br />

example, you can enter the project objective, start and end dates, name of the project<br />

manager, resources—anything that pertains to the project.<br />

249


Chapter 6: Projects<br />

250<br />

When creating a project, you can also designate users or groups as <strong>MKS</strong> <strong>Integrity</strong> project<br />

administrators for that project. For more information on project administrators, see<br />

“Assigning <strong>MKS</strong> <strong>Integrity</strong> Project Administrator” on page 260.<br />

Any changes you make in the Projects view have an immediate effect on your <strong>MKS</strong> <strong>Integrity</strong><br />

database. The project list is sorted alphabetically.<br />

Available Menu Commands for Workflow and Document Projects<br />

Through the Projects view, you can:<br />

edit the details for existing projects<br />

view the details for existing projects<br />

delete projects<br />

create new projects<br />

create a child project<br />

reparent an existing project<br />

create a backing item<br />

edit the backing item<br />

view backing item details<br />

Setting Workflow and Document Project Visibility<br />

Project visibility allows you to control access to information throughout your organization.<br />

Through <strong>MKS</strong> <strong>Integrity</strong>, you can manage workflow and document projects that reflect your<br />

product development. You can use project visibility to ensure that sensitive information from<br />

one group is not viewed or modified by another group. All items and e-mail notification are<br />

subject to project visibility rules.<br />

When you create a project, you can select which user groups can see the project and all items<br />

assigned to the project. You can also define which user groups can see all projects in the<br />

database and which ones are restricted to see only certain projects.<br />

If a user is not a member of at least one group allowed to view the project, that user cannot<br />

view any items belonging to the project and its subprojects. For users to see a given<br />

subproject, they must have permission to see the associated parent project. Not all user<br />

groups with visibility to the project must see all the subprojects under the project. You can<br />

restrict the subproject visibility to fewer groups than you have chosen to be able to view the<br />

project.<br />

Based on project visibility, users are allowed to query the database only for items within<br />

projects that are visible to them. Projects not visible to users are not displayed in the query<br />

results. If users try to view an item within a project that is not visible to them, an error<br />

message displays.


Workflow and Document Projects<br />

If an item in one project is related to an item in a project not visible to the user, only the item<br />

ID of the related item displays in the Relationship view. In the History view, the user can see<br />

only that an edit occurred (Modified by on ). Users cannot see<br />

if the edit was an addition or removal of a related item.<br />

If an item previously invisible to users is reassigned to a project that is visible to users, they<br />

cannot see the previous project name in the History view. Instead, a symbolic Restricted<br />

Project value displays.<br />

Example<br />

Look at an example of three users: one is a member of the Word Processor R&D group, the<br />

second one is a member of the Spreadsheet R&D group, and the third one is a member of the<br />

Product Managers group. The assigned workflow and document project permissions are<br />

recursive and apply to subprojects as follows:<br />

Word Processor R&D<br />

Product Managers<br />

Spreadsheet R&D<br />

Product Managers<br />

According to project permissions, the member of the Word Processor R&D group can see<br />

only the Word Processor project and its subprojects, and all items associated with this project.<br />

According to project permissions, the member of the Spreadsheet R&D group can see only<br />

the Spreadsheet project and its subprojects, and all items associated with this project.<br />

According to project permissions, the member of the Product Managers group can see both<br />

the Word Processor project, the Spreadsheet project, their subprojects, and all items<br />

associated with both projects.<br />

251


Chapter 6: Projects<br />

252<br />

Key Considerations<br />

To display entries in user and group fields when submitting items, at least one workflow<br />

and document project must be shared with each available group, and the users and<br />

groups must have visibility into that project.<br />

When creating a new project as a root project, the Inherit Permissions from Parent option<br />

is unavailable. If you are creating a new project as a child project, you can select the<br />

Inherit Permissions from Parent option, if you want the permissions of the parent project<br />

to apply to your new project.<br />

Items that are not part of any project (the project field is blank) are visible to all users. To<br />

enforce project permissions, you must make the project field mandatory.<br />

If a user is not a member of at least one group allowed to view the project, that user<br />

cannot view any items belonging to the project and its subprojects.<br />

Based on project visibility, users are allowed to query the database only for items within<br />

projects that are visible to them.<br />

When creating a project, you can also designate users or groups as project administrators<br />

for that project.<br />

Creating Workflow and Document Projects<br />

You can create workflow and document projects to manage workflows and documents in<br />

<strong>MKS</strong> <strong>Integrity</strong>. Workflow and document projects allow you to group items according to<br />

undertakings that are defined in your organization. Projects created by you then become<br />

available for selection in the Project field—a default field in <strong>MKS</strong> <strong>Integrity</strong>.<br />

When creating a project, you can also designate users or groups as project administrators for<br />

that project. For more information on project administrators, see “Assigning <strong>MKS</strong> <strong>Integrity</strong><br />

Project Administrator” on page 260.<br />

To create a workflow and document project in the GUI<br />

CLI EQUIVALENT im createproject<br />

1 From the Projects view (see “Projects View” on page 249), select Project > Create. The<br />

Create Project dialog box displays.


Workflow and Document Projects<br />

2 In the Name field, type a name for the new workflow and document project. This is the<br />

name the project is known by in <strong>MKS</strong> <strong>Integrity</strong>. This field allows up to 100 alphanumeric<br />

characters.<br />

NOTE The qualified project name in <strong>MKS</strong> <strong>Integrity</strong> uses a forward slash (/)<br />

delimiter for all operating systems.<br />

Underneath the Name field, the following message displays: Project is currently not<br />

backed by an item. Backing a project with an item allows you to link the current project<br />

to a specific item that stores project metadata and metrics. For more information, see<br />

“Managing Metadata for Workflow and Document Projects” on page 257.<br />

3 Using the Active option, specify whether a project is considered active or inactive in<br />

<strong>MKS</strong> <strong>Integrity</strong>. By default, the project is created active. To deactivate the project, clear<br />

the Active check box. For more information on deactivating projects, see “Deactivating<br />

Workflow and Document Projects” on page 259.<br />

4 To add a descriptive statement for the project, click the Description tab, and type your<br />

description.<br />

5 To set the parentage of the project, click the Parentage tab. The Parentage panel displays.<br />

The parentage of a project determines whether the new project is a parent or child<br />

project. By default, the new project displays as a parent or top-level project. If you want<br />

the new project to be a parent project, you can maintain the defaults. If you want the new<br />

project to be a child project, you can drag it to the parent project you want to add it to.<br />

6 To associate an icon image with the project field, click the Images tab. The Images panel<br />

displays the default options for open and closed project folders.<br />

To use the predefined icon images for either open or closed project folders, select<br />

Use Default Image.<br />

To use your own icon image that exists somewhere in your file system, select Use<br />

Custom Image, and browse for the image file.<br />

To associate no icon image with the project field, select No Image.<br />

If you choose to use a custom icon image, the image must be in GIF or JPEG format, and<br />

no larger than 24 (width) by 16 (height) pixels.<br />

253


Chapter 6: Projects<br />

254<br />

7 You can now set the project permissions, including which groups can view the project.<br />

To set the project permissions, click the Permissions tab. The Permissions panel<br />

displays.<br />

Only groups you add to the Permitted Groups pane can see the project.<br />

To allow all user groups access to the project, click


Workflow and Document Projects<br />

child project. In this case, the Inherit Permissions from Parent option on the Permissions<br />

panel is unavailable.<br />

7 To associate an icon image with the project field, click the Images tab. The Images panel<br />

displays the default options for open and closed project folders.<br />

To use the predefined icon images for either open or closed project folders, select<br />

Use Default Image.<br />

To use your own icon image that exists somewhere in your file system, select Use<br />

Custom Image, and browse for the image file.<br />

To associate no icon image with the project field, select No Image.<br />

If you choose to use your own custom icon image, the image must be in GIF or JPEG<br />

format and no larger than 24 (width) by 16 (height) pixels.<br />

8 You can now set the project permissions, including which groups can view the project.<br />

To set the project permissions, click the Permissions tab. The Permissions panel<br />

displays.<br />

9 Select one of the following options:<br />

Inherit permissions from parent applies the same project permissions to the project’s<br />

children.<br />

Restrict access to these groups lets you limit the number of user groups that can see<br />

a subproject by eliminating selected groups from the groups authorized to see the<br />

project.<br />

If you select this option, you must manually choose which user groups can view the<br />

new project by moving them from the Available Groups pane and adding them to<br />

the Permitted Groups pane:<br />

To allow all user groups access to the project, click


Chapter 6: Projects<br />

256<br />

Editing Workflow and Document Projects<br />

You can edit the details of one workflow and document project at a time.<br />

To edit a workflow and document project in the GUI<br />

CLI EQUIVALENT im editproject<br />

1 From the Projects view (see “Projects View” on page 249), select the workflow and<br />

document project you want to edit.<br />

2 Select Project > Edit. The Edit Project dialog box displays.<br />

If the project is backed by an item, the item ID displays under the Name field. Backing a<br />

project with an item allows you link the project to a specific item that stores project<br />

metadata and metrics. For more information, see “Managing Metadata for Workflow<br />

and Document Projects” on page 257.<br />

3 Edit the project as necessary. For more information on the fields in this dialog box, see<br />

“To create a workflow and document project in the GUI” on page 252.<br />

4 To determine all objects that reference the project, click the References tab. For<br />

information on the contents of the tab, see “To manage admin provided objects in the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client” on page 244.<br />

5 To view a history of administrative changes for the project, click the History tab. The<br />

record of changes displays.<br />

6 Click OK to save your changes.<br />

Viewing Workflow and Document Projects<br />

You can view workflow and document project details. The details are not editable, and you<br />

can only view the details for one project at a time.<br />

To view workflow and document project information in the GUI<br />

CLI EQUIVALENT im viewproject<br />

1 From the Projects view (see “Projects View” on page 249), select the workflow and<br />

document project you want to view.<br />

2 Select Project > View Definition for a selected project. The Project dialog box<br />

displays. For more information on the fields in this dialog box, see “To create a workflow<br />

and document project in the GUI” on page 252.<br />

TIP You can double click a project in the Projects view to view it.


Workflow and Document Projects<br />

3 To determine all objects that reference the project, click the References tab. For<br />

information on the contents of the tab, see “To manage admin provided objects in the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client” on page 244.<br />

4 To view a history of administrative changes for the project, click the History tab. The<br />

record of changes displays.<br />

5 When you are finished viewing, click Close.<br />

Deleting Workflow and Document Projects<br />

You can delete a workflow and document project only if the project and its subprojects have<br />

not been referenced in any item. To delete an idle project that has subprojects, delete its<br />

subprojects first.<br />

To delete a workflow and document project in the GUI<br />

CLI EQUIVALENT im deleteproject<br />

1 From the Projects view (see “Projects View” on page 249), select the workflow and<br />

document project you want to delete.<br />

2 Select Project > Delete. A confirmation dialog box displays.<br />

3 To confirm the deletion, click Yes.<br />

Reparenting Workflow and Document Projects<br />

After creating a workflow and document project, you can move it from one location within<br />

your project hierarchy to another by reparenting it.<br />

To reparent a workflow and document project in the GUI<br />

CLI EQUIVALENT im editproject<br />

1 From the Projects view (see “Projects View” on page 249), select Project > Reparent. The<br />

Reparent Projects dialog box displays.<br />

2 Drag the workflow and document project you want to move to the target folder.<br />

3 Click OK to save your changes.<br />

Managing Metadata for Workflow and Document Projects<br />

Workflow and document projects enable you to organize and manage items by the projects in<br />

your organization; however, these projects do not capture in-depth metadata or metrics. By<br />

creating a Project item type then creating a Project item and linking it to a specific project, the<br />

257


Chapter 6: Projects<br />

258<br />

power and workflow of projects as items becomes available. Important metadata and metrics<br />

can be recorded in the Project item, for example, the assigned project manager, estimated and<br />

actual budgets (using computed fields), and important milestone dates. Linking a Project<br />

item to a project also reduces possible confusion about the details of projects in your<br />

database.<br />

Key Considerations<br />

A link between a Project item and a workflow and document project is optional.<br />

Projects and Project items can be used independent of one another; you do not have to<br />

create a Project type to use the Project field.<br />

Multiple types can back projects; however, only one item may back a given project.<br />

To enable the Items of this type back Projects option, you must be an administrator for<br />

the selected type. The Items of this type back Projects option can be disabled at any time.<br />

To create the item that backs a project, you must be an administrator for the selected<br />

project and belong to a group that has permission to create items of that type.<br />

For Admin Staging, you cannot stage items. Items that back projects created on a staging<br />

server will not be staged; you must recreate the items that back projects on the<br />

production server. Rules, queries, or computed fields that explicitly mention the item<br />

number that backs a project will not work after they have been transferred from the<br />

staging server to the production server.<br />

Example<br />

David, a project manager, manages several projects; however, the current workflow and<br />

document projects in <strong>MKS</strong> <strong>Integrity</strong> only allow him to organize and manage related items,<br />

such as Features and Defects, by project. David needs a way to capture important<br />

information about each project, such as milestone dates, and measure project success, for<br />

example, calculating whether his actual budget is higher or lower than his estimated budget.<br />

David creates a Project type and defines relevant fields that will allow him to capture<br />

relevant data and metrics. Next, David creates Project items for the projects he is managing<br />

and links them to the relevant projects in the Project field.<br />

David can now more effectively manage his assigned projects. The Project items he created<br />

allow him to capture project metadata in the available fields and calculate project metrics<br />

using computed fields. Using queries, charts, reports, and dashboards, David can<br />

communicate project status to his superiors and teams working under him.


To back a workflow and document project with an Item<br />

CLI EQUIVALENT im createtype and im edittype<br />

Workflow and Document Projects<br />

1 Create a Project type (see “Creating Types” on page 84), and enable the Items of this type<br />

back Projects option in the Attributes view.<br />

NOTE To make this option available, the Project field must be selected as a visible<br />

field for the type.<br />

2 Add relevant fields to the Project type to capture the metadata you want, for example, a<br />

user field that identifies the assigned project manager, date fields that record important<br />

milestones (Feature Freeze, Code Freeze, Project Completion), or computed fields that<br />

calculate budget information. For information on creating fields, see “Creating Fields”<br />

on page 127.<br />

3 Create a workflow and document project that you want to link to a Project item (see<br />

“Creating Workflow and Document Projects” on page 252).<br />

4 With the new project selected in the Projects view, select Item > Create Backing Item. The<br />

Create Item dialog box displays.<br />

NOTE<br />

If there is more than one type that can back a project, a Type Selection dialog box<br />

displays a list of types that have the backs a project option enabled and that you<br />

have view and modify permissions for. Select the type you want to back the<br />

project for, and click OK.<br />

From the Projects view, you can view or edit a project’s existing backing item by<br />

selecting the project, and selecting Project > View Backing Item Details or Edit<br />

Backing Item.<br />

5 Enter the information for the Project item in the fields provided (see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>2009</strong> User <strong>Guide</strong>).<br />

6 Save the item. The item now holds the project metadata for the specified project in the<br />

Project field.<br />

7 Record information in the Project item as you would any other item. Use queries, charts,<br />

reports, and dashboards to monitor and communicate project status to others.<br />

Deactivating Workflow and Document Projects<br />

Setting a workflow and document project to inactive means that it is not displayed in filtered<br />

project lists, such as Project; however, an inactive project’s name can still be displayed using<br />

the inactive filter, if available. Inactive projects are denoted with the [Inactive] tag.<br />

259


Chapter 6: Projects<br />

260<br />

By deactivating projects, default project lists are filtered to display only those projects that are<br />

currently active in <strong>MKS</strong> <strong>Integrity</strong>.<br />

IMPORTANT Inactive values are not accepted in trigger assignments or as field<br />

values. If the project is referenced in a trigger assignment or as the default value in a<br />

project field, moving the project from active to inactive displays an error message.<br />

To deactivate a workflow and document project in the GUI<br />

CLI EQUIVALENT im editproject<br />

1 From the Projects view (see “Projects View” on page 249), select the workflow and<br />

document project you want to edit.<br />

2 Select Project > Edit. The Edit Project dialog box displays.<br />

3 To deactivate the project, clear the Active check box.<br />

4 To save the changes, click OK. The changes take effect immediately in the <strong>MKS</strong> <strong>Integrity</strong><br />

database. In the Projects view, the inactive project is denoted with a blank entry under<br />

the Is Active column (if displayed).<br />

TIP You can right click the column header bar to add the Is Active column.<br />

Assigning <strong>MKS</strong> <strong>Integrity</strong> Project Administrator<br />

The super administrator is responsible for setting up <strong>MKS</strong> <strong>Integrity</strong> and therefore has access<br />

to all administrative objects, including users, groups, dynamic groups, workflow and<br />

document projects, states, types, fields, and triggers. The super administrator can also<br />

designate groups or individual users, or a combination of them, to be project administrators<br />

for selected projects in <strong>MKS</strong> <strong>Integrity</strong>. The super administrator can also convert user objects<br />

to admin provided objects (see “To manage admin provided objects in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client” on page 244).<br />

<strong>MKS</strong> <strong>Integrity</strong> project administrators are allowed to edit and view workflow and document<br />

projects. Project administrators can also manage all child projects of the project they are<br />

approved for. Project administrators cannot edit projects assigned to another project<br />

administrator, and they can only create and delete subprojects—they cannot create top level<br />

projects unless they have been granted the CreateProject permission.<br />

Project administrators can also view all users, groups, and dynamic groups, but they can only<br />

edit dynamic groups membership for the projects they are assigned to. For more information<br />

on dynamic groups, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.


Workflow and Document Projects<br />

Workflow and document projects are hierarchical; therefore, when creating a top level<br />

project, the creating super administrator is automatically set as the project administrator.<br />

When creating a subproject, the administrator list is empty because administrators of the<br />

parent project are, by default, administrators of its subprojects. The creating administrator<br />

can modify the default as required.<br />

If the assigned project administrators are granted the CreateProject ACL permission, they<br />

are allowed to create top level projects, as well as to delete any top level projects.<br />

<strong>MKS</strong> <strong>Integrity</strong> project administrators who are granted the CreateProject permission can<br />

also assign other project administrators. For more information on the CreateProject<br />

permission, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

NOTE Project administrators are not allowed to assign themselves as administrators<br />

to any other projects or to assign others as project administrator, unless they have<br />

first been granted the CreateProject permission.<br />

The list of available users and groups contains all active and inactive members that have been<br />

imported into <strong>MKS</strong> <strong>Integrity</strong>; however, the available list does not necessarily include all users<br />

and groups available in the realm. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

The following table summarizes the basic functionality available to the project administrator:<br />

Project administrators can: Project administrators cannot:<br />

Create new subproject (child project) in workflow<br />

and document project they are assigned to.<br />

Edit workflow and document projects they are<br />

assigned to, including images, descriptions, and<br />

permissions.<br />

Edit project memberships in corresponding<br />

dynamic groups.<br />

View users, groups, dynamic groups, and<br />

projects.<br />

Example<br />

Create top level workflow and document project<br />

or create users, groups, dynamic groups, states,<br />

types, fields, or triggers.<br />

Edit any other process and control objects such<br />

as users, groups, states, types, fields, or triggers.<br />

View states, types, fields, or triggers.<br />

Delete subproject they have created. Delete top level workflow and document project.<br />

Create top level workflow and document project<br />

(if CreateProject permission is allowed).<br />

Assign another project administrator or view<br />

administrator information for project they do not<br />

administer.<br />

Neil is the project administrator for the SourceCode project. By extension, he is also the<br />

project administrator for the two subprojects under SourceCode (Client and <strong>Server</strong>).<br />

If the super administrator also grants Neil the CreateProject permission, Neil is allowed to<br />

create top level projects and assign other <strong>MKS</strong> <strong>Integrity</strong> project administrators at the time the<br />

261


Chapter 6: Projects<br />

262<br />

project is first created. With the CreateProject permission, Neil can also assign another<br />

project administrator to the SourceCode project. By extension, all assigned project<br />

administrators for the SourceCode project are allowed to edit the Client and <strong>Server</strong><br />

subprojects.<br />

Key Considerations<br />

Only the super administrator can automatically assign a project administrator in<br />

<strong>MKS</strong> <strong>Integrity</strong>.<br />

Project administrators are not allowed to assign themselves as administrators to any<br />

other projects or to assign others as project administrator, unless they have first been<br />

granted the CreateProject permission.<br />

To assign an <strong>MKS</strong> <strong>Integrity</strong> project administrator<br />

CLI EQUIVALENT im editproject<br />

1 From the Projects view, select the project you want to create a project administrator for.<br />

2 Select Project > Edit. The Edit Project window displays.<br />

NOTE Only the super administrator is automatically allowed to assign project<br />

administrators in <strong>MKS</strong> <strong>Integrity</strong>. Project administrators can assign another project<br />

administrator only if they are first granted the CreateProject permission.<br />

Through the Create Project window, the super administrator can also assign a<br />

project administrator while creating a new project.<br />

3 Click the Administrators tab. The Administrators panel displays.<br />

4 To assign a specified user or group as a project administrator, see “Filtering Data” on<br />

page 18. You can assign more than one user or group as a project administrator.<br />

5 To accept the changes, click OK. The selected user or group is assigned as a project<br />

administrator. Users and groups displayed in the Assigned column are then allowed to<br />

manage the selected project in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Configuration Management Projects<br />

Software management functionality provides configuration management projects to manage<br />

members. Configuration management projects are separate from workflow and document<br />

projects, and are accessed through all interfaces (see “Configuration Management Interfaces”<br />

on page 263).


Configuration Management Interfaces<br />

Configuration Management Projects<br />

Configuration management functionality is accessible in three interfaces: <strong>MKS</strong> <strong>Integrity</strong><br />

Client, Configuration Management Web interface, and command line interface (CLI).<br />

The <strong>MKS</strong> <strong>Integrity</strong> Client uses the concept of a Tabbed View Interface (or TVI). A TVI is a<br />

visual arrangement of multiple views in a single window. For more information on using and<br />

customizing this interface, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>. All configuration<br />

management commands are available in the GUI.<br />

NOTE In this guide, all GUI procedures are documented using menu-based<br />

commands; however, toolbar buttons, shortcut menus, and shortcut keys exist for<br />

most procedures. For more information, refer to descriptive tooltips and menu items<br />

in the GUI.<br />

The Configuration Management Web interface allows you to perform key project<br />

management tasks. You do not need to install the <strong>MKS</strong> <strong>Integrity</strong> Client to access the<br />

Configuration Management Web interface. To open the Configuration Management Web<br />

interface, type the name and port number of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in the location or<br />

address field of your Web browser, for example, xyzBusiness.com:9001. From the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page, click the link for Start <strong>MKS</strong> <strong>Integrity</strong> Web Interface.<br />

The CLI allows you to enter <strong>MKS</strong> commands in a text-based interface. Primary use of the CLI<br />

is for scripting. It is also useful for environments where there is no GUI. The CLI can be used<br />

to manage your configuration management projects, Sandboxes, and members, and to<br />

configure configuration management functionality. To access the command line interface<br />

from a computer running Windows, from the Start menu select the MS-DOS or Command<br />

Prompt (depending on the version of Windows).<br />

You can also choose to work alternately between the GUI and the CLI, because all<br />

configuration management commands are available in these two interfaces. For example, you<br />

can perform a command in the CLI and view the results in the GUI.<br />

Organizing Your Projects<br />

Before you begin using <strong>MKS</strong> <strong>Integrity</strong> to manage the configuration management projects in<br />

your development environment, you should take a careful look at how projects and<br />

directories are organized in your repository. The recommended way to use <strong>MKS</strong> <strong>Integrity</strong> is<br />

also the easiest. If you follow these guidelines, <strong>MKS</strong> <strong>Integrity</strong> requires no special<br />

configuration:<br />

Put all the files for a project in a single directory or directory tree.<br />

Create the project in the directory at the top of the tree.<br />

263


Chapter 6: Projects<br />

264<br />

Single-tree Projects<br />

Most sites adopt hierarchical directory structures for related files, because the structure<br />

reinforces the relationship between files and makes them easier to locate and work with. A<br />

preferred approach in software development is to place the project makefile at the root of a<br />

directory tree that includes subdirectories for code files, resources, and header files. This<br />

example shows one of the simplest and most frequently used structures.<br />

<strong>MKS</strong> <strong>Integrity</strong> records the location of all members relative to the project directory (that is, the<br />

directory where the project file resides) at the top of the project directory tree. When you<br />

create a Sandbox for a single-tree project, <strong>MKS</strong> <strong>Integrity</strong> clones the project directory tree in<br />

the Sandbox directory and maintains the relative locations of all members.<br />

Problems can arise when separate project trees are located in the same directory for the<br />

purpose of sharing archives. As a result, <strong>MKS</strong> strongly recommends you keep top-level<br />

projects in separate directories so that each project can have separate security, configuration,<br />

and administrative information controlled by separate ACLs. For more information on<br />

project ACLS, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

You can still share archives across projects that are in separate directories by using shared<br />

subprojects or common projects. For more information, see “Sharing Archives With Other<br />

Projects” on page 287.<br />

IMPORTANT If you have developed a project structure that includes multiple projects<br />

in the directory, you should contact <strong>MKS</strong> Customer Care for detailed information on<br />

how to work with this situation.<br />

Archives in File System Repositories<br />

If you are using a file system repository, when you use a single-tree type of project<br />

organization, you need no further directory configuration. <strong>MKS</strong> <strong>Integrity</strong> uses its internal<br />

defaults and puts archives for the project members in subdirectories—named rcs—in the<br />

directory where each member resides.<br />

The final directory tree for the project looks like this:


Code<br />

Directory<br />

rcs<br />

Directory<br />

Configuration Management Projects<br />

When you create a Sandbox, RCS directories are not cloned in the Sandbox directory.<br />

Working With Projects<br />

When you are ready to place a related group of files under <strong>MKS</strong> source control, the first step<br />

is to create a project. A project is a container for a group of files that reside on the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Once you create a project, you can add files to it making them members of that project.<br />

Organizing your files in a project allows you to perform configuration management<br />

operations on the files as a group.<br />

Projects are created using the <strong>MKS</strong> <strong>Integrity</strong> Client and reside on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Users can then create Sandboxes that point to the project, and all operations are performed<br />

from those Sandboxes.<br />

Creating Projects<br />

Project<br />

Directory<br />

Resource<br />

Directory<br />

rcs<br />

Directory<br />

rcs<br />

Directory<br />

When creating a project, you only create the project container. To add files, or members, to the<br />

project, you must create a Sandbox on your client machine that points to the project and then<br />

add the project members through that Sandbox. For more information on creating Sandboxes<br />

and adding project members, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

To create a project, select Project > Create.<br />

Keep the following points in mind when creating a project:<br />

Header<br />

Directory<br />

rcs<br />

Directory<br />

When you specify the name of the new configuration management project,<br />

<strong>MKS</strong> <strong>Integrity</strong> automatically assigns the .pj file extension. If you specify a .pj file<br />

extension in uppercase or mixed case, <strong>MKS</strong> <strong>Integrity</strong> replaces that file extension with the<br />

correct lowercase .pj file extension. If you specify a file extension other than .pj,<br />

<strong>MKS</strong> <strong>Integrity</strong> appends the .pj file extension to the file name. For backwards<br />

265


Chapter 6: Projects<br />

266<br />

compatibility, you can import projects and subprojects that do not have the .pj file<br />

extension.<br />

A single configuration management project name can be used only once in the same<br />

location.<br />

For case-insensitive repositories, <strong>MKS</strong> <strong>Integrity</strong> does not distinguish between<br />

configuration management project names differing only in case. For example, if<br />

project.pj already exists in C:/Aurora_Program, you cannot create PROJECT.pj in<br />

C:/Aurora_Program. This results in an error and <strong>MKS</strong> <strong>Integrity</strong> asks you to specify a<br />

different path and file name, or a different project name.<br />

To create a project using the CLI<br />

1 Log in to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> by entering the command:<br />

where<br />

si connect --hostname=value --port=value --user=value --password=value<br />

--hostname=value specifies the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> name<br />

--port=value specifies the port number<br />

--user=value specifies your user name<br />

--password=value specifies your password<br />

<strong>MKS</strong> <strong>Integrity</strong> establishes a connection with the server.<br />

2 Enter the command:<br />

si createproject projname<br />

where projname specifies the path on the server and the name of the project you want to<br />

create. <strong>MKS</strong> <strong>Integrity</strong> confirms that the project is created.<br />

NOTE <strong>MKS</strong> <strong>Integrity</strong> creates file paths and project names based on the server’s<br />

operating system. In Windows, always use back slashes when specifying file paths.<br />

In UNIX, always use forward slashes.<br />

For more information on the si createproject command, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>2009</strong> CLI Reference <strong>Guide</strong> for Configuration Management.<br />

Importing Projects<br />

Import configuration management projects if you need to do the following:<br />

restore projects that were dropped in earlier versions of <strong>MKS</strong> <strong>Integrity</strong> (including<br />

<strong>MKS</strong> Source and Source <strong>Integrity</strong>)<br />

migrate projects from Source <strong>Integrity</strong> Standard (an earlier version of <strong>MKS</strong> <strong>Integrity</strong>)<br />

Importing a configuration management project registers it with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Once a project is imported, <strong>MKS</strong> <strong>Integrity</strong> commands can be performed upon it.


To import a project, click Project > Import.<br />

Configuration Management Projects<br />

NOTE The Import Project command is not supported for database repositories. For<br />

information on how to import projects for database repositories, see the Database<br />

Repository Migrator document.<br />

When importing projects, the import process automatically creates histories for any nonarchived<br />

members and checkpoints any non-archived projects. Before you import a project,<br />

the project files must already reside in the server repository.<br />

CAUTION <strong>MKS</strong> <strong>Integrity</strong> does not support encrypted archives. If your existing<br />

project has encrypted archives, you must first decrypt the archives before importing<br />

and registering the project with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Importing From Earlier Versions<br />

If you are importing a configuration management project from an earlier version of<br />

<strong>MKS</strong> <strong>Integrity</strong>, once a project has been imported you may not perform commands on it using<br />

an older version of <strong>MKS</strong> <strong>Integrity</strong>. If for some reason you need to use an earlier version of<br />

<strong>MKS</strong> <strong>Integrity</strong> on a project, first drop the project using the Drop Project command. The<br />

project must be re-imported before it can be used again with this version of <strong>MKS</strong> <strong>Integrity</strong>.<br />

If you are importing an existing Source <strong>Integrity</strong> Standard project that includes out-of-tree<br />

members or subprojects, <strong>MKS</strong> <strong>Integrity</strong> automatically detects these and imports them into<br />

the newly registered project. A project member or subproject is considered out of tree when it<br />

does not reside in the project directory.<br />

If you are re-importing a dropped project to its former repository location, the project<br />

namespace must first be reclaimed. For more information on reclaiming project namespaces,<br />

see “To run server diagnostics in the CLI” on page 417.<br />

Example<br />

The xyzBusiness company has an existing project in Source <strong>Integrity</strong> Standard. This project<br />

needs to be migrated to the new <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. To carry out the import operation, the<br />

administrator first copies the project directory to the new host <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> and then<br />

imports it.<br />

Key Considerations<br />

If your connection to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is disconnected while you are browsing<br />

for a file, the file browser does not show any files or directories.<br />

You cannot import a configuration management project that is already registered.<br />

For case insensitive repositories, <strong>MKS</strong> <strong>Integrity</strong> does not distinguish between<br />

configuration management project names that differ only in case. For example, if<br />

project.pj is already registered in C:/Aurora_Program, you cannot import<br />

267


Chapter 6: Projects<br />

268<br />

PROJECT.pj into C:/Aurora_Program. This results in an error and <strong>MKS</strong> <strong>Integrity</strong> does<br />

not import the project.<br />

The processing of this command may take some time, since it traverses all subprojects in<br />

the imported project and may perform various operations on them, such as<br />

checkpointing.<br />

The administrator may restrict the path names of configuration management projects<br />

being imported on the server. This is done through the si.serverRoot property in the<br />

si.properties file on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. If this is set, then any project location<br />

given must be under that directory. For details, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

To import a configuration management project using the CLI<br />

Use the command:<br />

si importproject projname<br />

where projname specifies the path and name of the project you want to import.<br />

NOTE For more information on the si importproject command, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference <strong>Guide</strong> for Configuration Management.<br />

Importing Members<br />

When you add a member, it is automatically registered with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>;<br />

however, members added with Source <strong>Integrity</strong> Standard (an earlier version of<br />

<strong>MKS</strong> <strong>Integrity</strong>) or server resident files must be imported to register them with the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Do not use the Import Member command to add members that are dropped from a project.<br />

Instead, use the Add From Archive command. For more information on this command, see<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

NOTE The Import Member command is not supported for database repositories.<br />

Key Considerations<br />

The configuration management project must be registered with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

before the member is imported.<br />

Before you begin the import operation, the files to be imported must first reside on the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Archives cannot be imported. When selecting a file to import, select the working file in<br />

the project directory. If the working file does not exist, select the project directory and<br />

enter the file name.


Configuration Management Projects<br />

You cannot import members into a shared subproject. For more information on shared<br />

subprojects, see “Adding Shared Subprojects” on page 284.<br />

Example<br />

You have a directory that contains numerous files and subdirectories, and you want to add<br />

this directory to a configuration management project. First, make sure the target directory<br />

resides on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Then use the Import Member command to add the new<br />

directory as a member to your project, selecting the Recurse Into Directories option to include<br />

all of the associated files and subdirectories in the project.<br />

To import a member in the GUI<br />

1 .From a Project or Sandbox view, select Member > Import. The Import Members Wizard<br />

displays.<br />

2 To import a list of files to the project, click Add File. To import a directory and its<br />

contents, click Add Directory. The Select One or More Members to Import to the Project<br />

dialog box displays.<br />

3 Select one or more files from the displayed list navigating to the desired directory if<br />

necessary.<br />

NOTE If your connection to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is disconnected while you are<br />

browsing for a file, the file browser does not show any files or directories.<br />

4 To add the operation to a change package, from the Change Package list select a change<br />

package. To create a change package, click Create. For information on how to create a<br />

change package or specify a change package when performing an operation, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

5 Click OK. The files are added to the members list. To remove files, select the files, then<br />

click Remove.<br />

6 To modify the Import Member options, click Options. For detailed information on the<br />

Import Members Wizard options, see the online help.<br />

7 Click Finish to import files without specifying options. The Import Member dialog box<br />

displays.<br />

8 If the member is being imported to a deploy project, specify the deploy type for the<br />

member in the Deploy Type field. This field only displays if you are licensed to use<br />

Deploy. For more information, see the <strong>MKS</strong> Deploy <strong>2009</strong> <strong>Administration</strong> <strong>Guide</strong>.<br />

9 To modify the Import Member options, click Options. For detailed information on the<br />

Import Member options, see the online help.<br />

10 To complete the operation, click OK. To make changes, click Back. The members display<br />

in the Project or Sandbox view.<br />

269


Chapter 6: Projects<br />

270<br />

To import a member using the CLI<br />

Use the command:<br />

where<br />

si import --project=value filename<br />

--project=value specifies the path and name of the target project<br />

filename specifies the path and name of the non-member files to be imported to the<br />

project<br />

NOTE Include the server-side path and path to the working file. Do not include the<br />

path to the archive.<br />

Other command options for si import include:<br />

--author=name specifies an author name for the file<br />

--binaryFormat specifies that the file contains unprintable characters or lines too long<br />

to be handled by text editors<br />

--textFormat specifies that file is in a format expected by text file editors<br />

--revision=value specifies a revision number for the member<br />

--description=value specifies a description of the member<br />

--[no]createSubprojects specifies whether subprojects are created<br />

--[no]unexpandKeywords specifies whether literal values in the revision are replaced<br />

with keywords<br />

--[no|confirm]recurse imports members that exist in the specified directory location<br />

recursively (if you want <strong>MKS</strong> <strong>Integrity</strong> to confirm the recurse option, use<br />

--confirmrecurse)<br />

NOTE For a complete list of command options, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI<br />

Reference <strong>Guide</strong> for Configuration Management.<br />

Dropping Projects<br />

When a configuration management project has outlived its usefulness or just does not belong<br />

on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> anymore, you can remove it.<br />

To drop a configuration management project means that the projectis no longer registered<br />

with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Dropped projects can still be accessed as read only from the<br />

Change Package and Locks views until the project is purged or reclaimed by your<br />

administrator.


Configuration Management Projects<br />

To drop a configuration management project, select a project in the Projects view, and click<br />

Project > Drop.<br />

CAUTION If a project is dropped and any Sandboxes or variants are associated with<br />

it, those Sandboxes or variants no longer function.<br />

Dropping a configuration management project unregisters it from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>,<br />

but it does not delete the project. Dropped configuration management projects can be added<br />

back into <strong>MKS</strong> <strong>Integrity</strong>.<br />

For more information on adding projects, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

To drop a project in the CLI<br />

Use the command:<br />

si dropproject projname<br />

where projname specifies the path and name of the project you want to drop.<br />

NOTE For a complete list of command options, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI<br />

Reference <strong>Guide</strong> for Configuration Management.<br />

Restoring Project to Previous Checkpoint<br />

The Restore Project command allows you to restore a configuration management project to a<br />

previously checkpointed revision. Restoring a project is useful when development must<br />

revert back to an earlier version and there are no plans to proceed from the current version of<br />

the project. Any further development then proceeds from the restored project revision. The<br />

Restore Project command can be applied to both normal and variant projects.<br />

NOTE The Restore Project command can potentially restore and checkpoint dropped<br />

subprojects that existed at the target revision, even if they are not currently a<br />

member of the project.<br />

To restore a project through the GUI, select the configuration management project that you<br />

want to restore in either a Project or Sandbox view, and select Project > Restore.<br />

NOTE When you work through a Sandbox or sub Sandbox, the corresponding<br />

master project is referenced.<br />

IMPORTANT Do not use the Project > Restore command to create a new development<br />

branch from a previously checkpointed project revision. For new development<br />

paths, you should instead create a development path (see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong><br />

User <strong>Guide</strong>).<br />

271


Chapter 6: Projects<br />

272<br />

How Restore Project Command Works<br />

<strong>MKS</strong> <strong>Integrity</strong> performs the Restore Project command as follows:<br />

A checkpoint is performed on the current configuration management project revision.<br />

The configuration management project is restored to the target revision.<br />

A final checkpoint of the restored revision is made.<br />

Therefore, for each configuration management project you restore, two revisions are<br />

generated. For example, if the head revision of the project is 1.4 and you decide to restore it to<br />

revision 1.2, the following project revisions are generated:<br />

1.6final checkpoint<br />

1.5pre-checkpoint<br />

You would then continue your project development work from revision 1.6.<br />

Selecting Checkpoint to Restore<br />

You can select the checkpoint to restore by selecting a Pre-Defined Revision or a Specific<br />

Revision.<br />

If you want to restore a pre-defined revision, select one of the following:<br />

Head revision, which represents the latest checkpoint on the default branch of<br />

development (or on the mainline, if no default is specified)<br />

Trunk Tip, which represents the latest checkpoint on the mainline independent of the<br />

default branch settings.<br />

If you want to restore a specific revision, you can select the revision based on a checkpoint<br />

number or label by clicking the appropriate tab. The default revision is the most recent<br />

checkpoint.<br />

Key Considerations<br />

When a configuration management project is restored, all restored members return to<br />

the initial state.<br />

The Project > Restore command can be applied to both normal and variant projects.<br />

You can effectively undo the Project > Restore command by restoring the configuration<br />

management project to the pre-checkpointed revision.<br />

You cannot restore a build project using the Project > Restore command.<br />

You cannot restore a project that is associated with a deploy stage. For more information<br />

on deploy stages, see the <strong>MKS</strong> Deploy <strong>2009</strong> <strong>Administration</strong> <strong>Guide</strong>.<br />

You cannot retore a project if a checkpoint is in progress on that project.<br />

To restore a variant project to a specific project revision, the development path must<br />

exist in all subprojects referenced by the project revision.


To restore a project or subproject in the CLI<br />

Use the command:<br />

where<br />

Configuration Management Projects<br />

si restoreproject --revision=value --reason=value --project=value<br />

--revision=value specifies the revision number you want the project restored to.<br />

--reason=reason specifies the reason for restoring the project.<br />

--project=value specifies the path and name of the project or subproject to be restored.<br />

--devpath=value specifies the development path and name of the variant project or<br />

subproject.<br />

NOTE For a complete list of command options, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI<br />

Reference <strong>Guide</strong> for Configuration Management.<br />

Deleting Projects and Archives From Database<br />

To delete specified projects that are no longer in use from the database, use the<br />

si deleteproject command. Deleting a project from the database deletes the project itself<br />

and its history. Deleting a project from the database also deletes all of the member archives<br />

for members in that project. However, shared projects and archives are retained in the<br />

database. You can also specify to delete only specified archives rather than projects by using<br />

the si deletearchive command.<br />

Deleting projects and archives is a multi-phase process referred to as delete session. Delete<br />

session is identical for both si deleteproject and si deletearchive, but only one type<br />

of session may be in progress for the same database and server. At any phase before the final<br />

commit of the delete, you can roll back the operation and end the delete session with the<br />

projects and archives intact.<br />

CAUTION Once the delete session has been completed, you cannot roll back the<br />

changes to the database. To restore deleted projects, see “Restoring Deleted<br />

Projects” on page 279.<br />

As part of the delete session, projects and archives marked for removal from the database are<br />

archived (if using the --dump subcommand) and can later be restored by migrating them<br />

back into the database. However, broken linkages between deleted projects and those<br />

projects retained in the repository are not restored.<br />

Key Considerations<br />

Both si deleteproject and si deletearchive commands require either the<br />

Admin<strong>Server</strong> or Debug<strong>Server</strong> ACL permission. The deleteproject and<br />

deletearchive permissions are required to delete projects and their member archives.<br />

273


Chapter 6: Projects<br />

274<br />

Only one type of delete session can be in process at one time (either si deleteproject<br />

or si deletearchive). If the command type does not match the type of an existing<br />

session, an error is returned.<br />

The unit of delete is an entire member archive or a project and all its variants. There is no<br />

support for purging only member revisions, only some variants, or for purging revisions<br />

or checkpoints based on date.<br />

References by name to deleted objects are not modified by the delete. These references<br />

include change package entries, ACLs, policies, trigger registrations, pending<br />

operations, lock origination, and Sandbox registries.<br />

Restoring deleted objects does not re-establish links between those objects and objects<br />

not deleted. Links are permanently broken by a delete operation.<br />

You cannot delete a project if a checkpoint is in progress on that project.<br />

Logs of the delete session are provided as part of the si migrate command<br />

functionality. For more information, see the Database Repository Migrator <strong>Guide</strong>.<br />

Before deleting projects and archives, consult the key considerations for restoring them<br />

(see “Restoring Deleted Projects” on page 279).<br />

The si deletearchive command is intended for global clean-up of files, (not for<br />

removing individual archives), because links may exist between that archive another<br />

objects in the database. For more information, refer to documentation on the<br />

--nodeleteIfInUse option in the subsequent sections.<br />

Delete Session Phases<br />

Before describing the commands and their subcommands in more detail, the following<br />

diagram shows generally the delete session phases:


Mark<br />

Dump<br />

Commit<br />

Delete session phases<br />

Rollback<br />

NOTE At any time during the delete session, you can run the --status<br />

subcommand to determine the status of the delete session.<br />

Configuration Management Projects<br />

1 The Mark phase specifies projects or archives that are new candidates for deletion. It<br />

(and consequently the delete session) begins by using the --mark subcommand to<br />

specify objects to be deleted. If projects are specified, the --mark subcommand<br />

determines what objects are to be deletion targets (projects or archives to be deleted) and<br />

what objects are to be kept candidates.<br />

IMPORTANT The <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> only supports one delete session at a time and<br />

additional targets cannot be added with a second invocation of the --mark<br />

subcommand.<br />

275


Chapter 6: Projects<br />

276<br />

Kept candidates are subprojects or members that are not deleted for one of the following<br />

reasons:<br />

Subprojects or members are not located in the directory tree of any of the projects<br />

specified.<br />

You do not have DeleteProject permission for the specified project or its<br />

development paths.<br />

You do not have DeleteArchive permission for the specified or affected member<br />

archives.<br />

You used the --nodeleteIfInUse option, and the projects are referenced by an<br />

outside link. The link can be that the projects are shared subprojects in projects not<br />

specified for the delete session. Links also include every past or present subproject<br />

and member archive of every branch of the project specified (mainline, variant, or<br />

dropped variant).<br />

You used the --nodeleteIfInUse option, and the members are referenced by an<br />

outside link. The link can be to any revision referenced in another project.<br />

NOTE If you restore deleted projects at a later date, the kept candidates do not<br />

maintain their linkages with restored projects.<br />

The Mark phase is complete when all candidates are converted to kept candidates or<br />

delete targets. At this time, you can use the --status subcommand to view information<br />

on delete targets and kept candidates.<br />

IMPORTANT All delete targets are marked by the server such that they cannot be<br />

changed, and links to them cannot be added by user operations. Existing links can<br />

be duplicated (such as creating a development path) as this does not change the<br />

results of --mark. Kept candidates are not restricted.<br />

2 The Dump phase creates backups of the marked projects in the database using the<br />

--dump subcommand. If projects are marked, the command recursively creates backups<br />

of the projects and archives to a backup table in the database (dumping them). However,<br />

the subcommand does not backup all of the members, subprojects, and variants that are<br />

referenced by those projects, only the in-tree objects.<br />

IMPORTANT At any phase before Commit, you can run the --rollback<br />

subcommand to discard the target information, and end the delete session with the<br />

database unchanged. Once the subcommand completes, you can begin a new delete<br />

session with the --mark subcommand.


Configuration Management Projects<br />

CAUTION The Dump phase is not available for the si deletearchive command.<br />

Using this command deletes archives without creating backups for them. Archive<br />

backup (and restore) is not available for individual archives; only projects that<br />

include archives. If you require archive backups, use the si deleteproject<br />

command instead.<br />

Alternatively, projects can be copied to the backup schema without using<br />

si deleteproject --dump, by using si migrate --dumpToBackup projectList, where<br />

projectList is a selection of projects. For more information on si migrate, see the<br />

Database Repository Migrator <strong>Guide</strong>.<br />

3 The Commit phase deletes all of the delete targets identified in the Mark phase, breaks<br />

links to deleted objects, and ends the delete session. Begin the commit phase using the<br />

--commit subcommand.<br />

Viewing Repository Post-Delete<br />

A command is provided to view the state of the repository after the delete session. To view or<br />

print a list of all projects, archives, and directories contained in the repository directory, use<br />

the following command:<br />

si diag --diag=showrepdir --param=dirname<br />

where dirname is the directory containing the repository. For more information on the<br />

si diag command, see “To run server diagnostics in the CLI” on page 417.<br />

To delete projects from the database using the CLI<br />

NOTE Detailed help on using si deleteproject is available from the CLI using<br />

the man command, or see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> <strong>Administration</strong> CLI Reference<br />

<strong>Guide</strong>.<br />

From the CLI, use the following command:<br />

si deleteproject [subcommmand] value<br />

where value is used with the --mark subcommand and specifies projects for the current<br />

delete session.<br />

Subcommands for si deleteproject include:<br />

--commit commits the deletion by permanently deleting the marked objects.<br />

--dump dumps the objects marked for deletion in the current delete session. If projects<br />

are marked, the command recursively creates back ups of the projects in backup tables in<br />

the database (dumping them). However, the subcommand does not export all of the<br />

members, subprojects, and variants that are referenced by those projects, only the in-tree<br />

objects. The project back-ups can be restored later (see “Restoring Deleted Projects” on<br />

page 279).<br />

277


Chapter 6: Projects<br />

278<br />

--mark starts a delete session by marking objects and their dependents as new<br />

candidates. The subcommand determines what objects are to be delete targets (projects<br />

or archives to be deleted) and what objects are to be kept candidates.<br />

IMPORTANT The <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> only supports one delete session at a time and<br />

additional targets cannot be added with a second invocation of the --mark<br />

subcommand.<br />

When later restoring deleted projects, the kept candidates do not maintain their linkages<br />

with restored projects.<br />

--rollback cancels a delete session leaving the database unchanged. This<br />

subcommand can only be used in phases prior to Commit.<br />

--status displays the status of the current delete session.<br />

Command options for si deleteproject include:<br />

--[no]deleteIfInUse, used with the --mark subcommand, specifies if to delete<br />

targets that are still in use. Something is marked as in use if it refers to a particular<br />

project or archive that is out of tree.<br />

--[no]links, used with the --status subcommand, displays a list of all links that are<br />

broken upon commit.<br />

--[no]recurse, used with the --mark subcommand, specifies if to recurse into<br />

subprojects. The default is to recurse.<br />

--[no]targets, used with the --status subcommand, displays all delete targets and<br />

kept reasons.<br />

To delete archives from the database using the CLI<br />

NOTE Detailed help on using si deletearchive is available from the CLI using<br />

the man command, or see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> <strong>Administration</strong> CLI Reference<br />

<strong>Guide</strong>.<br />

From the CLI, use the following command:<br />

si deletearchive [subcommmand] value<br />

where value is used with the --mark subcommand and specifies projects for the current<br />

delete session.<br />

CAUTION The --dump option cannot be used with the si deletearchive<br />

command. Using this command deletes archives without creating backups for them.<br />

Archive backup (and restore) is not available for individual archives; only projects<br />

that include archives. If you require archive backups, use the si deleteproject<br />

command instead.


Subcommands for si deleteproject include:<br />

Configuration Management Projects<br />

--commit commits the deletion by permanently deleting the marked objects.<br />

--mark starts a delete session by marking objects and their dependents as new<br />

candidates. The subcommand determines what objects are to be delete targets (archives<br />

to be deleted) and what objects are to be kept candidates.<br />

IMPORTANT The <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> only supports one delete session at a time and<br />

additional targets cannot be added with a second invocation of the --mark<br />

subcommand.<br />

--rollback cancels a delete session leaving the database unchanged. This<br />

subcommand can only be used in phases prior to Commit.<br />

--status displays the status of the current delete session.<br />

Command options for si deletearchive include:<br />

--[no]deleteIfInUse, used with the --mark subcommand, specifies if to delete<br />

targets that are still in use. Something is marked as in use if it refers to a particular<br />

project or archive that is out of tree.<br />

--[no]links, used with the --status subcommand, displays a list of all links that are<br />

broken upon commit.<br />

--[no]targets, used with the --status subcommand, displays all delete targets and<br />

kept reasons.<br />

Restoring Deleted Projects<br />

You can restore deleted projects by using the si migrate command with the<br />

--restoreFromBackup option.<br />

To restore a deleted project, specify the command in the following form:<br />

si migrate --restoreFromBackup=projectNames<br />

where projectNames specifies the names of projects to restore from the backup tables in the<br />

database.<br />

Review the migration logs to ensure no errors occurred, and then manually publish the<br />

restored projects (or members). For more information on si migrate, see the Database<br />

Repository Migrator <strong>Guide</strong>.<br />

Key Considerations<br />

If no project names are specified, all projects from the database are restored. If project<br />

names are specified, only those projects are restored.<br />

279


Chapter 6: Projects<br />

280<br />

Currently there is no mechanism to browse the backup tables to determine which<br />

projects are available for restoration, so it is recommended you refer to the log that was<br />

generated during backup or contact <strong>MKS</strong> Customer Care for assistance.<br />

The restore operation migrates the backup tables to the latest version of the schema<br />

before beginning the migration.<br />

If during the restore, a project (or archive) is encountered in the repository with the same<br />

name as the one being restored from the backup table, the project (or archive) is skipped<br />

(and any children such as subprojects or members).<br />

Restoring deleted objects does not re-establish links between those objects and objects<br />

not deleted.<br />

When restoring deleted objects, si migrate does not restore subprojects or archives<br />

that correspond to kept objects. Kept objects only correspond to dumped objects if they<br />

were within the tree of the project deleted. If there are missing archives or projects, the<br />

migrator creates a stub in the tree.<br />

Using Configuration Management Project Metrics<br />

You can track metrics for top-level configuration management projects and calculate them<br />

through event triggers. Calculated metrics can be viewed for a configuration management<br />

project or through a computed field on a workflow and document project item. Metrics<br />

provide information on a project as of a specific checkpoint.<br />

<strong>MKS</strong> <strong>Integrity</strong> provides some standard physical metrics you can use. You can also create<br />

your own metrics using a third party tool.<br />

NOTE Metrics are only supported for database type repositories.<br />

Metrics Included With <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>MKS</strong> <strong>Integrity</strong> provides the following metrics:<br />

physical lines<br />

number of characters in text files<br />

number of bytes in binary files<br />

number of revisions in archives<br />

number of normal members<br />

number of subproject members<br />

number of checkpoints<br />

number of java source files


number of binary files<br />

number of text files<br />

number of C or CPP files<br />

largest number of members in any subproject<br />

largest number of subprojects in any subproject<br />

These metrics are calculated by the following event triggers:<br />

check in<br />

checkpoint<br />

add member<br />

Configuration Management Projects<br />

Metric calculations generated by operations in subprojects are automatically rolled up to the<br />

parent project.<br />

Tracking Project Metrics<br />

If you decide to track metrics for a project that has already been checkpointed, you can<br />

calculate metrics for existing checkpoints using the Calculate Project Metrics command in the<br />

GUI or the si calculateprojectmetrics command in the CLI.<br />

Viewing Project Metrics<br />

You can view the calculated metrics for a project in the Project Metrics view or through the<br />

si viewmetricsinfo CLI command.<br />

You can also view calculated metrics in the workflow and document project item that is<br />

associated with the configuration management project. The workflow and document project<br />

item must have an si project data type field that links it to the configuration management<br />

project and a computed field that displays the metric calculations that you want to view. For<br />

example, if you want to see the number of members in an configuration management project<br />

in the corresponding workflow and document project item, you would create a Number of<br />

Members field with the following expression:<br />

SIMetric("siproject-name","Number of Members")<br />

You could checkpoint the configuration management project nightly and update the build<br />

revision encoded in the si project field; so any changes in the number of members would be<br />

reflected in the workflow and document project item.<br />

For more information on creating si project fields for <strong>MKS</strong> <strong>Integrity</strong> items, see “Creating<br />

Fields” on page 127. For more information on creating computed fields for <strong>MKS</strong> <strong>Integrity</strong><br />

items, see “Creating Computed Fields” on page 313.<br />

281


Chapter 6: Projects<br />

282<br />

Using Third Party Metrics Tool<br />

You can use a third party tool to track additional configuration management metrics. Metrics<br />

tracked by a third party tool must be defined in <strong>MKS</strong> <strong>Integrity</strong> and recorded for a specific<br />

project checkpoint. You define a metric by specifying a name and description for it using the<br />

si createmetricinfo CLI command. To define a metric you need the Metrics<br />

permission. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and<br />

Configuration <strong>Guide</strong>.<br />

You can use a third party tool to calculate metrics for Java. For example, you can use a tool<br />

such as JavaNCSS 1 to calculate the number of Java source files in a project. You need to write<br />

a script to add the metrics calculated by a third party tool to a specific project checkpoint. For<br />

more information on creating a script for metrics, see the comments in the sample script<br />

metrics.js. You can update this file by adding your file suffix to one of the tables and<br />

creating a new JavaScript function to implement the metrics.<br />

NOTE If you run custom Java code from a script, your custom Java code can be put<br />

into the installdir/data/java/classes directory as individual class files or<br />

packaged as one or more JAR files in the installdir/data/java/jars directory.<br />

You can use both directories at the same time if you want some classes packaged up<br />

and some exposed individually.<br />

You can use a third party tool to calculate metrics for C or C++ in the context of a Sandbox.<br />

You add the calculated value of the metric to a project checkpoint using the<br />

si addprojectmetric CLI command. For more information on the CLI commands see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference <strong>Guide</strong> for Configuration Management.<br />

Performance With Metrics<br />

There may be a performance impact when using project metrics. The first time you<br />

checkpoint a project with a large number of members that existed before implementing<br />

metrics, the metric calculation may take a significant amount of time. The increase in time is<br />

due to the need for the metrics to be initially computed for the pre-existing members, while<br />

subsequent metric calculations are aggregated for members of the project.<br />

Working With Subprojects<br />

<strong>MKS</strong> <strong>Integrity</strong> allows you to create large configuration management projects composed of<br />

smaller component projects. These smaller projects are known as subprojects. Subprojects<br />

behave in the same way as projects and can be accessed with most project and Sandbox<br />

commands.<br />

1 JavaNCSS is supported but not shipped with <strong>MKS</strong> <strong>Integrity</strong>.


Configuration Management Projects<br />

For example, you could have subprojects for the following types of components:<br />

source files for creating individual executables<br />

source files for common libraries<br />

HTML files<br />

graphic files<br />

documentation<br />

Each component usually has several related files. Each component can be kept in its own<br />

project. If you have two or more products that share these common components, you can<br />

create a separate master project for each product and include the projects for the common<br />

components as subprojects of each appropriate master project.<br />

NOTE Subprojects are not the same as project members. You can only perform<br />

project-level operations on subprojects.<br />

Creating Subprojects<br />

You create a new subproject, then add members and configure the subproject as necessary.<br />

For example, if you had a financial toolkit application that you wanted to add a new<br />

calculator application to, you would create a new subproject in the toolkit project to contain<br />

the calculator application source code.<br />

To create a subproject in the GUI, select the project or Sandbox to create a subproject in, and<br />

select Project > Subproject > Create.<br />

For information on the Change Package field, creating a change package, or the Create<br />

Subproject options see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Adding Subprojects<br />

When a subproject is dropped from a project, the subproject’s historical information remains.<br />

You can add the subproject back.<br />

To add a dropped subproject to a project in the GUI, select Project > Subproject > Add, and<br />

follow the instructions on the Add Subproject wizard.<br />

Selecting Subproject Type<br />

When adding a subproject you can specify one of the following types:<br />

Normal adds a working subproject based on the mainline.<br />

283


Chapter 6: Projects<br />

284<br />

Variant adds a subproject based on a specific development path.<br />

NOTE The Variant option is unavailable if there are no available development paths.<br />

For information on creating a development path, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User<br />

<strong>Guide</strong>.<br />

Build adds a static subproject based on a specific checkpoint of the master project that is<br />

used for building or testing the project, but not for further development. You can specify<br />

the checkpoint through its checkpoint number or label.<br />

Default adds a subproject as the same type as the parent project.<br />

NOTE If you do not select a subproject type, the subproject is added as the same type<br />

as the parent project.<br />

Specifying Subproject to Add<br />

You can type in or select the subproject to add. For detailed information about entering<br />

project paths and selecting projects, see the <strong>MKS</strong> <strong>Integrity</strong> Client <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

Using Change Packages<br />

For information on the Change Package field and creating a change package, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Adding Shared Subprojects<br />

A shared subproject is a subproject that is a member of more than one configuration<br />

management project. You can share a subproject between two or more projects by referencing<br />

the original subproject. A shared subproject allows you to access common members across<br />

many projects. Shared subprojects are not required to be located within the same directory<br />

structure or project hierarchy.<br />

To add a shared subproject, select the project or Sandbox you want to add the shared<br />

subproject to, and select Project > Subproject > Add Shared.<br />

Example<br />

Ryan maintains the North American and German Web sites for ABC Financial. Both Web<br />

sites are under version control and use the same images, but they contain different content.<br />

To avoid duplication and ensure both Web sites contain the same images, Ryan adds the<br />

images to a subproject and shares it between the two projects.<br />

Shared Project Behavior<br />

A shared subproject functions the same as an unshared subproject and is accessible by the<br />

same commands. The shared subproject continues to reside within its original master project,<br />

but is referenced by the other project and shown as a shared subproject.


Configuration Management Projects<br />

When working with shared subprojects, <strong>MKS</strong> <strong>Integrity</strong> uses the actual name of the subproject<br />

in the repository rather than its relative name in the project hierarchy for the purposes of<br />

resolving ACLs, policy statements, event triggers, and change package entries. This enhances<br />

the portability of change packages across different projects.<br />

You cannot import members into a shared subproject from its shared location.<br />

Shared Projects From Source <strong>Integrity</strong> Standard<br />

Shared subprojects (out-of-tree subprojects) that were created in Source <strong>Integrity</strong> Standard<br />

(an earlier version of <strong>MKS</strong> <strong>Integrity</strong>) are detected as they are accessed by <strong>MKS</strong> <strong>Integrity</strong><br />

without disrupting the operation. The format of these subprojects is retained until you<br />

change or update it to the new format by reconfiguring it.<br />

Selecting Subproject Type<br />

When adding a subproject you can specify one of the following types:<br />

Normal adds a subproject based on the working subproject on the mainline<br />

Variant adds a subproject based on a specific development path of the master project.<br />

NOTE The Variant option is unavailable if there are no available development paths.<br />

For information on creating a development path, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User<br />

<strong>Guide</strong>.<br />

Build adds a static subproject based on a specific checkpoint of the master project that is<br />

used for building or testing the project, but not for further development. You can specify<br />

the checkpoint through its checkpoint number or label.<br />

Default adds a subproject as the same type as the parent project.<br />

NOTE If you do not select a subproject type, the subproject is added as the same type<br />

as the parent project.<br />

Specifying the Shared Subproject<br />

You can type in or select the subproject for sharing. For detailed information about entering<br />

project paths and selecting projects, see the <strong>MKS</strong> <strong>Integrity</strong> Client <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

Specifying Destination Directory<br />

When you type the subdirectory for the shared subproject, the subproject name must reside<br />

in the project directory.<br />

Using Change Packages<br />

For information on the Change Package field or creating a change package, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

285


Chapter 6: Projects<br />

286<br />

Configuring Subprojects<br />

Once you create or add a subproject, you can modify the type to suit your needs. For<br />

example, you can change a normal subproject to a build subproject to suspend development,<br />

or you can change a variant subproject to a normal subproject to continue development on<br />

the main trunk.<br />

Interface Procedure<br />

GUI Select Project > Subproject > Configure.<br />

Web Select Project > Configure Subproject.<br />

Example<br />

Jen wants the ABC Tools development team to work with revision 1.2 of amortization/<br />

project.pj, the last known stable version of the code. Jen does not want the general<br />

development team to do any further development on this release, so she configures the<br />

amortization/project.pj subproject to be a build subproject.<br />

Changes Between Configurations<br />

Any changes you make when configuring a subproject affects the project as a whole and any<br />

shared subprojects within it. Deltas reflecting these changes appear in the Project or Sandbox<br />

view. Some differences you may see include:<br />

Members existing in the original version and configured version of the subproject<br />

display a delta if the working revision in the Sandbox is different from the new member<br />

revision.<br />

Members that did not exist in the original version of the subproject, but do exist in the<br />

configured subproject, display a delta to indicate that the Sandbox does not have a<br />

working file for the new member.<br />

Members that existed in the original version of the subproject, but do not exist in the<br />

configured subproject, display as former members.<br />

Subprojects that existed as members in the original version of the subproject, but do not<br />

exist in the configured subproject, display as former subprojects.<br />

To resolve the differences, resynchronize the subSandbox.<br />

Configuring Shared Subprojects<br />

When configuring shared subprojects, remember that each shared subproject is configured<br />

independently. This means that when you configure a shared subproject, the reconfiguration<br />

does not change all instances of that subproject. For example, if the subproject tools/<br />

project.pj is shared in the two projects, Aurora/project.pj and Libra/project.pj, a<br />

change to the configuration of Aurora/tools/project.pj does not affect the configuration<br />

of Libra/tools/project.pj.


Source <strong>Integrity</strong> Standard Subprojects<br />

Configuration Management Projects<br />

Configured subprojects or frozen subprojects created in Source <strong>Integrity</strong> Standard (an earlier<br />

version of <strong>MKS</strong> <strong>Integrity</strong>) are detected as they are accessed by <strong>MKS</strong> <strong>Integrity</strong> without<br />

disrupting the operation. The format of these subprojects is retained until you change or<br />

update it to the new format by reconfiguring it.<br />

Selecting Subproject Configuration Type<br />

When configuring a subproject you can specify one of the following types:<br />

Normal configures a subproject to the working subproject on the mainline.<br />

Variant configures a subproject to a specific development path.<br />

NOTE The Variant option is unavailable if there are no available development paths.<br />

For information on creating a development path, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User<br />

<strong>Guide</strong>.<br />

Build configures a static subproject to a specific checkpoint of the project that is used for<br />

building or testing the project, but not for further development. You can specify the<br />

checkpoint through its checkpoint number or label.<br />

Using Change Packages<br />

For information on the Change Package field or creating a change package, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Configuring Subproject Using CLI<br />

For information on how to configure a subproject in the CLI, see the<br />

si configuresubproject command in the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference <strong>Guide</strong> for<br />

Configuration Management.<br />

Sharing Archives With Other Projects<br />

Teams within organizations often reference the same files for several different products. This<br />

section describes two possible approaches to sharing resources using a simplified example in<br />

which two teams use a single header file.<br />

In this scenario:<br />

Team 1 works within configuration management project team1.pj and has one<br />

member, code.c.<br />

Team 2 has its own project, team2.pj, and has two members, program.c and<br />

header.h.<br />

287


Chapter 6: Projects<br />

288<br />

Team 2 was the first to use header.h and has the original file in its subdirectory. Team 1<br />

needs to access header.h for code.c.<br />

<strong>MKS</strong> <strong>Integrity</strong> allows you to control archive sharing. For more information on the<br />

permissions required to restrict archive sharing, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation<br />

and Configuration <strong>Guide</strong>.<br />

Some general administrative concerns with sharing resources are as follows:<br />

File ownership is uncertain<br />

Normally the team that first creates a resource owns it. However, when a resource is<br />

shared, its ownership comes into question. Who is authorized to make updates to<br />

header.h? Team 2 originally owned the file but team 1 may now need to make changes<br />

to it. Alternately, team 2 may want to retain ownership of header.h, restricting changes<br />

from team 1 members.<br />

Once an archive is shared, the ACLs used to control permissions for that archive depend<br />

on how the shared archive is accessed. For example, if the archive is accessed through<br />

team1.pj, the ACLs for team1.pj control permissions, and, if the archive was accessed<br />

through team2.pj, the ACLs for team2.pj control permissions.<br />

Update and compatibility concerns<br />

When team 2 checks in a new version of header.h, it normally only tests its correctness<br />

and compatibility with program.c. The changes may not be compatible with team 1’s<br />

code.c and could lead to a loss of functionality for code.c, if team 1 were to accept<br />

team 2’s changes. This could be solved by using different variants of the shared<br />

subproject for team 1 and team 2.<br />

A related concern is the stability of the changes made to a shared resource. Teams 1<br />

and 2 may have different release schedules and criteria. Even if team 2’s changes to<br />

header.h were technically compatible with team 1’s project, team 1 may still hesitate to<br />

accept any changes.<br />

NOTE ACLs on shared subprojects are based on the canonical name of the<br />

subproject. For example, if project c:/test/project.pj accesses d:/common/<br />

library.pj as a shared subproject, the ACL would be based on the name for d:/<br />

common/library.pj.<br />

The next section presents two possible solutions and briefly explores the related<br />

administrative concerns, along with ways you can use <strong>MKS</strong> <strong>Integrity</strong> to help.


Shared Subprojects<br />

Configuration Management Projects<br />

A possible solution is to create a shared subproject that is a component in team1.pj and<br />

team2.pj. For example, the following shows the shared subproject header.pj that allows<br />

both teams to access the header files that are common to both projects.<br />

NOTE Wherever possible, it is preferable to share entire subprojects rather than<br />

individual archives. For example, if you have 30 common files, it is preferable to<br />

group these into a subproject and share this subproject rather than sharing 30 files<br />

individually.<br />

When carrying out development in this structure, users create a Sandbox of their respective<br />

master projects and recurse into the relevant subprojects, including the shared subproject,<br />

header.pj.<br />

Common Projects<br />

Another alternative is to use common projects. You can create a master project that contains<br />

three projects (team1.pj, team2.pj, and header.pj) as subprojects.<br />

In this structure, ownership of the shared resources is flexible. Both teams may be given<br />

ownership and right to modifications on the common project.<br />

Alternatively, you could use ACL permissions to grant ownership and modification rights to<br />

one team but not to the other. This solution suggests a second alternative where a separate<br />

team is created with responsibility for all changes in the common project. This alternative<br />

also addresses the compatibility issue in that the team making changes in the common project<br />

should be aware of the other projects that include the common project as a subproject. This<br />

ensures compatibility.<br />

Teams 1 and 2 can now focus on updating their own code, with general confidence that<br />

shared files are compatible with their code. Any problems in compatibility can be brought to<br />

the attention of the compatibility team who can deal with the problems.<br />

When carrying out development in this structure, users create a Sandbox of the master<br />

project and recurse into the relevant subprojects. There may be some resistance to the idea of<br />

working with files located in different subprojects. This change in working environment<br />

requires time to adjust to a new operating procedure.<br />

Recursing from the master project raises the concern of updates and release criteria.<br />

However, this solution also offers some control over that concern. There is no requirement<br />

for users within a team to start from the master project. Instead, a user can create a Sandbox<br />

of their team’s project and then create a separate Sandbox of the common project. This<br />

separation allows for flexibility in deciding on the version of the common project that is<br />

desired.<br />

In this situation, the common project has its own release cycles and is checkpointed on each<br />

cycle. Each team can then choose to create a build Sandbox of the common project based on a<br />

given release of the common resources and use that in their development.<br />

289


Chapter 6: Projects<br />

290<br />

Alternatively, a team may want to continue development within the common project from a<br />

given release baseline, while isolating their changes from other teams and other team’s<br />

changes from the common project. The team can then create and use a variant Sandbox of the<br />

common project.<br />

A final alternative is to create a normal Sandbox from the common project and use it as is,<br />

accepting that it may be in a state of flux. This alternative may be acceptable, and even<br />

desirable, in the early stages of development. This type of project structure provides this<br />

flexibility and even allows for decisions to be changed during development.<br />

Potential Problems With Common Projects<br />

Although common projects provide a flexible method for managing development processes,<br />

two issues may arise when using this approach:<br />

Versioning of the common project is not team specific<br />

The version of the common project used by an individual team is not automatically<br />

referenced with that team’s project, especially when you are using a build or variant<br />

Sandbox of the common project to ensure stability and isolate changes from other teams.<br />

Each team must keep track of the version of the common project specific to their project.<br />

One solution is to use different variants of the shared subproject for each team.<br />

Another solution is to record the version of the common project in the build files<br />

maintained by the team. These build files can then be added to and archived with the<br />

team’s project thereby serving as a permanent record of the complete build environment<br />

including the version of the common project.<br />

Changes to build specifications<br />

This solution requires changes to build specifications because working file locations are<br />

changed.<br />

<strong>MKS</strong> <strong>Integrity</strong> can manage source files anywhere on your server’s repository. <strong>MKS</strong> <strong>Integrity</strong><br />

identifies project members in the same directory or its subdirectories using a path relative to<br />

the project file.


C HAPTER SEVEN<br />

Computed Expressions<br />

Performing Calculations Between Fields<br />

7<br />

In addition to recording information in fields, <strong>MKS</strong> <strong>Integrity</strong> can also perform<br />

calculations between fields, storing the result as a read-only value in a computed field or<br />

displaying it as a read-only value when you run a chart or report. For example, in a<br />

Feature item, <strong>MKS</strong> <strong>Integrity</strong> can add the values in the QA Estimated Time and<br />

Development Estimated Time fields, storing the result in the Total Estimated Time field<br />

(the computed field). Storing results in computed fields is useful for historical reporting.<br />

Another example of using computed expressions is to create a report that adds the<br />

Budget fields in a list of Project items to display a budget total. Performing calculations<br />

in charts and reports is useful if your administrator has not created computed fields<br />

and/or you want to reduce the dependencies of storing results in computed fields.<br />

In addition to calculating numeric values, you can also calculate text values by<br />

combining text and numeric fields with text functions. For example, by combining an<br />

item’s ID with the appropriate text functions, <strong>MKS</strong> <strong>Integrity</strong> can create a unique<br />

identifier for an item, such as REQ-00001234, and display it in a computed field.<br />

This chapter contains the following topics:<br />

“Computed Expression Types” on page 292<br />

“Computed Expression Rules” on page 293<br />

“Creating Computed Fields” on page 313<br />

“Calculating Static Computed Fields” on page 315<br />

“Using Computed Fields to Chart Historical Trends” on page 316<br />

“Scheduling Computation Times” on page 318<br />

“Using Computed Fields to Calculate State Metrics” on page 319<br />

“Security” on page 321<br />

“Performance and Scalability” on page 321<br />

291


Chapter 7: Computed Expressions<br />

Where to Go Next<br />

292<br />

The following table summarizes the steps you should follow to set up computed expressions:<br />

To Do This … See …<br />

Learn the available types of computed<br />

expressions.<br />

Computed Expression Types<br />

To perform calculations between fields, <strong>MKS</strong> <strong>Integrity</strong> uses computed expressions similar to<br />

any expression you would find in a programming language. Using specific syntax, operators,<br />

functions, and operations, you can create simple or complex expressions that calculate field<br />

information in a single item or against a list of items.<br />

You can create two types of computed expressions:<br />

“Computed Expression Types” on page 292<br />

Construct rules for computed expressions. “Computed Expression Rules” on page 293<br />

Create a computed field. “Creating Computed Fields” on page 313<br />

Calculate a static computed field. “Calculating Static Computed Fields” on<br />

page 315<br />

Chart historical trends. “Using Computed Fields to Chart Historical<br />

Trends” on page 316<br />

Calculate state metrics. “Using Computed Fields to Calculate State<br />

Metrics” on page 319<br />

Understand implications on performance and<br />

scalability of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> when<br />

using computed expressions.<br />

“Performance and Scalability” on page 321<br />

Intra-item expressions perform calculations between fields in a single item, storing the<br />

result in a computed field, for example, adding the QA Estimated Time and Development<br />

Estimated Time fields in a Feature item to produce a value in the Total Estimated Time<br />

field (the computed field). Computed fields are created by administrators in the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client. To users computed fields display as read-only<br />

fields in items; however, administrators can configure the field visibility. For more<br />

information on creating computed fields, see “Creating Computed Fields” on page 313.<br />

Intra-item expressions can also retrieve information from an item using external<br />

information functions, such as CPECount(), which counts the number of change package<br />

entries in an item. Using external information functions in expressions allow you to<br />

retrieve metrics about your workflow. Once you define an intra-item expression using<br />

external information functions, you can use queries, charts, reports, and dashboards to


Computed Expression Rules<br />

collect the metric data and report on it. For more information on state metrics, see “Using<br />

Computed Fields to Calculate State Metrics” on page 319.<br />

Inter-item or aggregate expressions use aggregate functions, such as sum or average, to<br />

perform calculations against fields in a list of items. For example, using the sum(field)<br />

aggregate function in a report, you can add the Estimated Cost field in a list of Project<br />

items to produce a total estimated cost. Aggregate expressions can be created in a chart<br />

or report by any user in the <strong>MKS</strong> <strong>Integrity</strong> Client or <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client. For more information on using aggregate expressions in charts and reports, see<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Computed Expression Rules<br />

General Syntax<br />

You must create computed expressions using syntax, operators, functions, and operations.<br />

Computed expressions use the following general syntax:<br />

To specify field names, surround the field name with double quotes, for example,<br />

"Actual Cost".<br />

Spaces are ignored, except within quotes, for example, "Defect Count".<br />

Identifiers followed by “(“ (a parenthesis) are considered functions.<br />

Identifiers not followed by a parenthesis are considered field names.<br />

Spaces and special characters within quotes are acceptable.<br />

Computed fields are valid as fields used in another computed field or computed<br />

expression; however, they may not recurse.<br />

Arithmetic Operators<br />

The following arithmetic operators are supported in computed expressions:<br />

* (multiplication)<br />

/ (division)<br />

+ (addition)<br />

- (subtraction)<br />

- (unary negation)<br />

Boolean-exp?true_exp:false_exp (conditional ternary)<br />

293


Chapter 7: Computed Expressions<br />

Boolean Operators<br />

294<br />

The following Boolean operators are supported in computed expressions:<br />

== (equal)<br />

= (contains)<br />

!= (not equal)<br />

(does not contain)<br />

< (less than)<br />

> (greater than)<br />

= (greater than or equal to)<br />

and<br />

or<br />

Empty Fields<br />

For Boolean fields, two keywords are Boolean constants: true and false. When a computed<br />

field is marked against a Boolean field, the result of the computed expression must be a<br />

Boolean value, for example:<br />

expression boolean-operator expression<br />

In <strong>MKS</strong> <strong>Integrity</strong>, a field without a value is referred to as empty. A computed expression that<br />

incorporates a field with an empty value results in an empty value, except in aggregate<br />

expressions.<br />

For example, to determine if the Project End Date date field is empty, type:<br />

or<br />

"Project End Date"-today() > 0<br />

"Project End Date" - today()


Dates, Times, and Time Zones<br />

The following rules apply to dates, times, and time zones:<br />

Computed Expression Rules<br />

Dates and dates/time are considered separate date types in computed expressions, and<br />

cannot be assigned to one another.<br />

Displayed date fields do not change based on the time zone that a user is operating in;<br />

however, displayed date/time fields and time entries vary based on the time zone that a<br />

user is operating in.<br />

Computed expressions return dates/times in the <strong>MKS</strong> <strong>Integrity</strong> Client’s time zone and<br />

perform calculations in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>’s time zone where appropriate.<br />

Computed expressions do not include a function for converting date/time information<br />

to date-only. This applies in all cases where an expression returns a timestamp (date plus<br />

time) value. Where date/time information is required, use the computed expression<br />

with a timestamp field. For more information on functions, see “Function Classes” on<br />

page 296.<br />

Date expressions accept all standardized date and timestamp formats.<br />

Timestamp Operations<br />

The following operations are supported with timestamps in computed expressions:<br />

IMPORTANT You cannot mix dates and timestamps.<br />

timestamp + integer constant; integer constant + timestamp<br />

timestamp - integer constant<br />

timestamp("timestamp-constant")<br />

timestamp - timestamp<br />

timestamps can be subtracted or added to a constant integer, for example, now()+5 or<br />

now() - 5<br />

Integer constants are treated in units of days; for example, timestamp + integer constant<br />

takes the specified time and adds a specified number of days. When subtracting two<br />

timestamps, the number of days between the two dates rounded to the nearest day is the<br />

result. Using other operators or a floating point results in an error.<br />

295


Chapter 7: Computed Expressions<br />

Date Operations<br />

296<br />

To perform date manipulation in computed expressions, the following date operations are<br />

supported:<br />

datediff() returns the difference between two specified timestamps or dates, or a<br />

combination of the two as an integer in seconds.<br />

now() returns the current timestamp.<br />

today() returns the current date.<br />

User and Group Fields<br />

Data Conversion<br />

You can compare single- and multi-valued user and group fields in computed expressions,<br />

for example, "Assigned User" = jriley, or "Assigned Group" = Development. By<br />

creating a computed expression that includes a user or group field comparison, you can<br />

incorporate the result of the computed field into an editability rule.<br />

NOTE You cannot compare two user fields in a computed expression, for example,<br />

“Assigned User” = “Created By”.<br />

TIP You can also use the symbolic me user name to indicate the user retrieving the<br />

item.<br />

The following data conversions occur when combining various field data types in a<br />

computed expression:<br />

Function Classes<br />

Two integers produce an integer.<br />

Two floating points produce a floating point.<br />

An integer and floating point produce a floating point.<br />

Constant integers can be added to timestamps, for example, 5+now().<br />

Timestamps using other operators produce an error.<br />

In a computed expression, you can use the following function classes:


Computed Expression Rules<br />

An arithmetic function can be applied in any computed expression type, for example,<br />

adding two field values and rounding the resulting value to the nearest integer. For a<br />

complete list of arithmetic functions, see “Arithmetic Operators” on page 293.<br />

NOTE Node, segment, and shared item, and test types are used by the document<br />

model. To learn more these types and the document model, see “Setting Up<br />

Documents” on page 97.<br />

A day/time function is used to return or quantify date/time information. For example, the<br />

number of days an item spends in a specific state, or the earliest date/time recorded<br />

against an item. For a complete list of date/time functions, see “Date/Time Functions”<br />

on page 299.<br />

An aggregate function is only permitted when performing an aggregate operation, for<br />

example, using the sum function to add the expressions calculated against each item that<br />

the aggregation is running against. Attempting to use an aggregate function for a normal<br />

expression results in an error. For a complete list of aggregate functions, see “Function<br />

Classes” on page 296.<br />

A text function is used to perform text calculations with text and numeric fields. For<br />

example, using an item’s ID to create a computed field that calculates a unique identifier<br />

for an item, such as REQ-00001234.<br />

To perform text calculations, string expressions in text functions accept short and long<br />

text fields. For a complete list of text functions, see “Function Classes” on page 296.<br />

CAUTION Text strings in text calculations cannot exceed 1 kilobyte. Exceeding this<br />

limit may cause the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to fail.<br />

An external information function can only operate against a single item and allows you to<br />

extract information from an item, for example, how many times the item has been in the<br />

Submit state. Attempting to use an external information function in an aggregate<br />

expression results in an error. For example, SICPEntryCount()is an invalid aggregate<br />

expression, but sum(SICPEntryCount())is valid because the argument to an aggregate<br />

function is a normal expression. SICPEntryCount() is part of the normal expression<br />

and is therefore valid.<br />

For example, it is valid to use DaysInState() when accessing a single item, since it<br />

results in a single number; however, if you use it against a list of items, no results can be<br />

returned. To apply an external information function to each item in a list, embed it in an<br />

aggregate function, for example, avg(DaysInState()).<br />

For a complete list of external information functions, see “Function Classes” on page 296.<br />

297


Chapter 7: Computed Expressions<br />

298<br />

Arithmetic Functions<br />

Name and Description Return Value<br />

abs(numeric-expression)<br />

Returns absolute value of numeric expression.<br />

sign(numeric-expression)<br />

Returns -1 if expression evaluates to < 0, 0 if it evaluates to 0, and +1 if it evaluates to<br />

positive number.<br />

round(numeric-expression)<br />

Returns expression rounded to nearest integer.<br />

truncate(numeric-expression)<br />

Returns expression truncated to nearest integer.<br />

floor(numeric-expression)<br />

Returns largest integer less than or equal to given numeric expression.<br />

ceil(numeric-expression)<br />

Returns smallest integer greater than or equal to given numeric expression.<br />

mod(numeric-expression1, numeric-expression2)<br />

Returns remainder of first expression divided by second expression.<br />

If either expression is not integer, then expression is:<br />

(abs(e1) - floor(abs(e1)/abs(e2)) * abs(e2)) * sign(e1)<br />

isEmpty(expression1, expression2)<br />

First expression evaluated. If result not empty, it becomes return value for function. If<br />

empty, second expression evaluated and is return value for function. Both expressions<br />

must evaluate to same type. Expression can be numeric, time, or Boolean.<br />

emptyint()<br />

Returns an empty value in an integer field.<br />

emptyfloat()<br />

Returns an empty value in a floating point field.<br />

emptytime()<br />

Returns an empty value in a date/time field.<br />

emptydate()<br />

Returns an empty value in a date field.<br />

emptylogical()<br />

Returns an empty value in a logical field.<br />

emptytext()<br />

Returns an empty value in a text field.<br />

emptyuser()<br />

Returns an empty value in a user field.<br />

Integer or floating<br />

point, same as<br />

expression<br />

Integer or floating<br />

point, same as<br />

expression<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer if both<br />

expressions integers;<br />

otherwise, floating<br />

point<br />

Type in expression<br />

none<br />

none<br />

none<br />

none<br />

none<br />

none<br />

none


emptygroup()<br />

Returns an empty value in a group field.<br />

timestamp(quoted-string)<br />

Converts supplied string into timestamp constant. Using Java SimpleDateFormat,<br />

following formats are attempted in order until one succeeds:<br />

Java DateTimeInstance(LONG, LONG)<br />

Java DateTimeInstance(SHORT, SHORT)<br />

MMM d, yyyy hh:mm a<br />

MMM d, yyyy HH:mm<br />

MMM d, yyyy HH:mm:ss<br />

Note: Parsing done on the client using client's locale. Timestamp evaluated into timestamp<br />

constant during parsing. When expression displayed, displays in standard format for<br />

locale.<br />

now()<br />

Returns current time.<br />

Note: Current time is time when expression evaluated not parsed. To return number of<br />

days an item has existed, type:<br />

now() - "Created Date"<br />

SelectionCount(field-name)<br />

Returns the number of entries selected in a multi-valued field on an item. If the field is<br />

empty, returns 0; if the field is not empty but is not multi-valued, returns 1.<br />

Not valid for attachment, relationship, or computed fields.<br />

DateDiff(starttime, endtime)<br />

Returns number of seconds between two dates with times. If starttime larger than<br />

endtime, result positive, otherwise negative.<br />

Date/Time Functions<br />

Computed Expression Rules<br />

Name and Description Return Value<br />

none<br />

Timestamp<br />

Timestamp<br />

Integer<br />

Integer<br />

Name and Description Return Value<br />

DaysInState(state-name)<br />

Returns number of days item in specific state rounded to nearest day. Individual state<br />

times are added together in seconds; the resulting sum is rounded to days.<br />

To specify unspecified state, type "Unspecified", for example,<br />

DaysInState("Unspecified").<br />

DaysInPhase(phase field name, phase name)<br />

Returns number of days item in specific phase rounded to nearest day. Individual phase<br />

times are added together in seconds; the resulting sum is rounded to days.<br />

DaysCurrentState()<br />

Returns number of days item in current state rounded to nearest day.<br />

To specify unspecified state, type "Unspecified", for example,<br />

DaysCurrentState("Unspecified").<br />

Integer<br />

Integer<br />

Integer<br />

299


Chapter 7: Computed Expressions<br />

Name and Description Return Value<br />

DayOfYear(date/timestamp/field)<br />

Returns the day of the year for the specified date.<br />

dayOfWeek(date/timestamp/field)<br />

Returns the day of the week for the specified date. Sunday is 1, Monday is 2, and so on.<br />

weekOfYear(date/timestamp/field)<br />

Returns the week of the year for the specified date.<br />

monthOfYear(date/timestamp/field)<br />

Returns the month of the year for the specified date.<br />

weeksDiff(dateA, dateB)<br />

Returns the number of weeks between two specified dates.<br />

Note: This is the number of actual weeks, not the number of days divided by 7.<br />

monthsDiff(dateA, dateB)<br />

Returns the number of months between two specified dates.<br />

Note: This is the number of actual months, not the number of days divided by 30.<br />

weekdaysDiff(dateA, dateB)<br />

Returns the number of week days between two specified dates. Saturdays and Sundays<br />

are not included.<br />

DayOfWeekName(date/timestamp)<br />

Returns day of week for the specified date or date and time, for example, Monday.<br />

getDay(date/timestamp/field)<br />

Returns the date for the specified date or date and time, for example, 23.<br />

getYear(date/timestamp/field)<br />

Returns the date for the specified date or date and time, for example, <strong>2009</strong>.<br />

MonthOfYearName(date/timestamp/field)<br />

Returns month of the year for the specified date or date and time, for example, October.<br />

getHour(timestamp/field)<br />

Returns the hour for the specified time, for example, 2.<br />

Note: Hours are specified in 24-hour time. For example, midnight is 0 and 7pm is 19.<br />

getMinute(timestamp/field)<br />

Returns the minute for the specified time, for example, 05.<br />

getSecond(timestamp/field)<br />

Returns the second for the specified time, for example, 33.<br />

DaysCurrentPhase(phase-field-name)<br />

Returns number of days item in current phase rounded to nearest day.<br />

dateFirstEntered(state-name)<br />

Returns date specified state first entered.<br />

300<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Text<br />

Integer<br />

Integer<br />

Text<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Timestamp


dateLastEntered(state-name)<br />

Returns date specified state last entered.<br />

SecondsInState<br />

Returns number of seconds item in specific state. If item in state multiple times, seconds<br />

for each occurrence added together.<br />

To specify unspecified state, type "Unspecified", for example,<br />

SecondsInState("Unspecified").<br />

SecondsInPhase<br />

Returns number of seconds item in specific phase. If item in phase multiple times,<br />

seconds for each occurrence added together.<br />

To specify unspecified phase, type "Unspecified", for example,<br />

SecondsInPhase("Unspecified").<br />

SecondsCurrentState<br />

Returns number of seconds item in current state.<br />

SecondsCurrentPhase<br />

Returns number of seconds item in current phase.<br />

sumTimeEntry[(date("startdate"),date("enddate"))]<br />

or<br />

sumTimeEntry[(symbolicdate(),symbolicdate())]<br />

Returns total time spent (rounded to hour) on item in optional timeframe.<br />

sumTimeEntryByUser(user[,user...]<br />

[,date("startdate"),date("enddate")]<br />

or<br />

sumTimeEntryByUser(user[,user...]<br />

[,symbolicdate(),symbolicdate()]<br />

Returns total time spent (rounded to hour) on item by specified users in optional<br />

timeframe.<br />

Computed Expression Rules<br />

Name and Description Return Value<br />

sumTimeEntryByGroup(group[,group...]<br />

[,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntryByGroup(group[,group...]<br />

[,symbolicdate(),symbolicdate()])<br />

Returns total time spent (rounded to hour) on item by specified groups in optional<br />

timeframe.<br />

sumTimeEntryByPhase(phaseField,<br />

phase[,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntryByPhase(phaseField,<br />

phase[,symbolicdate(),symbolicdate()])<br />

Returns total time spent (rounded to hour) on item while in phase for specified phase<br />

field.<br />

Timestamp<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

301


Chapter 7: Computed Expressions<br />

Name and Description Return Value<br />

sumTimeEntryByPhaseByUser(phaseField, phase,<br />

user[,user...][,date("startdate"),<br />

date("enddate")])<br />

or<br />

sumTimeEntryByPhaseByUser(phaseField, phase,<br />

user[,user...][,symbolicdate(),symbolicdate()])<br />

Returns total time spent (rounded to hour) on item by specified users while in phase for<br />

specified phase field.<br />

sumTimeEntryByPhaseByGroup(phaseField, phase,<br />

group[,group...][,date("startdate"),<br />

date("enddate")])<br />

or<br />

sumTimeEntryByPhaseByGroup(phaseField, phase,<br />

group[,group...][,symbolicdate(),<br />

symbolicdate()])<br />

Returns total time spent (rounded to hour) on item by specified groups while in phase for<br />

specified phase field.<br />

sumTimeEntryByState(state[,date("startdate"),<br />

date("enddate")])<br />

or<br />

sumTimeEntryByState(state[,symbolicdate(),<br />

symbolicdate()])<br />

Returns total time spent (rounded to hour) on item while in specified state.<br />

Note: <strong>MKS</strong> <strong>Integrity</strong> gathers time entries on a daily basis and assigns the time entry to<br />

the date (to midnight). <strong>MKS</strong> <strong>Integrity</strong> records state changes to the exact milli-second.<br />

Using time entries to determine how long an item has been in a particular state is only an<br />

approximation. Therefore, this function is only guaranteed correct if the item contains<br />

only one state transition for the entire day.<br />

For example, an item is posted, moves through several states (Investigate,<br />

In Development, Development Done), and is closed (Built) in a single day. Then,<br />

the user working on the item enters the total time spent on the item in a time<br />

entry. Because <strong>MKS</strong> <strong>Integrity</strong> cannot subdivide this time entry (hours spent on the item)<br />

into multiple pieces of information (hours spent in each state), the<br />

sumTimeEntryByState function assigns the time entry to a single state – the state that<br />

the item had on midnight on the day of the entry (Built).<br />

To specify unspecified state, type "Unspecified", for example,<br />

sumTimeEntryByState("Unspecified").<br />

sumTimeEntryByStateByUser(state,<br />

user[,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntryByStateByUser(state<br />

(user[,symbolicdate(),symbolicdate()])<br />

Returns total time spent (rounded to hour) on item by specified users while in specified<br />

state.<br />

302<br />

Integer<br />

Integer<br />

Integer<br />

Integer


sumTimeEntryByStateByUser(state,<br />

group[,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntryByStateByUser(state,<br />

group[,symbolicdate(),symbolicdate()])<br />

Returns total time spent (rounded to hour) on item by specified groups while in specified<br />

state.<br />

countTimeEntry(date("startdate"),<br />

date("enddate"))<br />

or<br />

countTimeEntry(symbolicdate(),symbolicdate())<br />

Returns number of time entries for item with duration greater than zero in optional<br />

timeframe.<br />

countTimeEntryByUser(user[,user...]<br />

[,date("startdate"),date("enddate")])<br />

or<br />

countTimeEntryByUser(user[,user...]<br />

[,symbolicdate(),symbolicdate()])<br />

Returns number of time entries for item by specified users with duration greater than zero<br />

in optional timeframe.<br />

countTimeEntryByGroup(group[,group...]<br />

[,date("startdate"),date("enddate")])<br />

or<br />

countTimeEntryByGroup(group[,group...]<br />

[,symbolicdate(),symbolicdate()])<br />

Returns number of time entries for item by specified groups with duration greater than<br />

zero in optional timeframe.<br />

Aggregate Functions<br />

Computed Expression Rules<br />

Name and Description Return Value<br />

firstTimeEntryDate()<br />

Returns earliest date time recorded against item.<br />

lastTimeEntryDate()<br />

Returns latest date time recorded against item.<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Name and Description Return Value<br />

sum(numeric-expression)<br />

Adds expressions calculated against each item that the aggregation running against.<br />

avg(numeric-expression)<br />

Adds expressions calculated against each item that the aggregation running against,<br />

then divide by number of non-empty entries.<br />

Date<br />

Date<br />

Integer or floating point,<br />

same as expression<br />

Floating point<br />

303


Chapter 7: Computed Expressions<br />

Name and Description Return Value<br />

min(numeric-expression or timestamp)<br />

Finds smallest of expressions from each item that the aggregation running against. If all<br />

expressions empty, result empty.<br />

max(numeric-expression or timestamp)<br />

Finds largest of the expressions from each item that the aggregation is running against. If<br />

all expressions are empty, the result is empty.<br />

count()<br />

Returns number of items that the aggregation is running against.<br />

sumTimeEntrySecs<br />

[(date("startdate"),date("enddate"))]<br />

or<br />

sumTimeEntrySecs<br />

[(symbolicdate(),symbolicdate())]<br />

Returns the total time spent (in seconds) on an item in an optional timeframe.<br />

sumTimeEntrySecsByUser<br />

(user[,user...][,date("startdate"),date("enddate")]<br />

or<br />

sumTimeEntrySecsByUser<br />

(user[,user...][,symbolicdate(),symbolicdate()]<br />

Returns the total time spent (in seconds) on an item by specified users in an optional<br />

timeframe.<br />

sumTimeEntrySecsByGroup<br />

(group[,group...][,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntrySecsByGroup<br />

(group[,group...][,symbolicdate(),symbolicdate()])<br />

Returns the total time spent (in seconds) on an item by specified groups in an optional<br />

timeframe.<br />

sumTimeEntrySecsByState<br />

(state[,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntrySecsByState<br />

(state[,symbolicdate(),symbolicdate()])<br />

Returns the total time spent (in seconds) on an item while in the specified state.<br />

sumTimeEntrySecsByStateByUser<br />

(state, user[,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntrySecsByStateByUser<br />

(state (user[,symbolicdate(),symbolicdate()])<br />

Returns the total time spent (in seconds) on an item by specified users while in the<br />

specified state.<br />

304<br />

Integer, float point, or<br />

timestamp same as<br />

expression<br />

Integer, floating point,<br />

or timestamp same as<br />

expression<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer


sumTimeEntrySecsByStateByGroup<br />

(state, group[,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntrySecsByStateByGroup<br />

(state, group[,symbolicdate(),symbolicdate()])<br />

Returns the total time spent (in seconds) on an item by specified groups while in the<br />

specified state.<br />

sumTimeEntrySecsByPhase<br />

(phaseField, phase[,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntrySecsByPhase<br />

(phaseField, phase[,symbolicdate(),symbolicdate()])<br />

Returns the total time spent (in seconds) on an item while in phase for the specified<br />

phase.<br />

sumTimeEntrySecsByPhaseByUser<br />

(phaseField, phase,<br />

user[,user...][,date("startdate"),date("enddate")])<br />

or<br />

sumTimeEntrySecsByPhaseByUser<br />

(phaseField, phase,<br />

user[,user...][,symbolicdate(),symbolicdate()])<br />

Returns the total time spent (in seconds) on an item by specified users while in phase for<br />

the specified phase.<br />

Computed Expression Rules<br />

Name and Description Return Value<br />

sumTimeEntrySecsByPhaseByGroup<br />

(phaseField, phase, group[,group...][,date("startdate"),<br />

date("enddate")])<br />

or<br />

sumTimeEntrySecsByPhaseByGroup<br />

(phaseField, phase,<br />

group[,group...][,symbolicdate(),symbolicdate()])<br />

Returns the total time spent (in seconds) on an item by specified groups while in phase<br />

for the specified phase.<br />

LastResultAgg()<br />

Returns the internal ID of the most recent test result record for a group of items. This<br />

function must be used with the Aggregate, AggregateByTree, or Query functions.<br />

For example, AggregateByTree (LastResultAgg()). This function must be used<br />

with the TestVerdictName function to convert the internal ID to a display string. For<br />

example, TestVerdictName(LastResultAgg()).<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

305


Chapter 7: Computed Expressions<br />

306<br />

Text Functions<br />

Name and Description Return Value<br />

Text(string)<br />

Creates text constant.<br />

Note: If string does not contain special characters, quotes not required. For example,<br />

text("REQ") and text(REQ) identified as same string.<br />

Length(string-expression)<br />

Returns length of string.<br />

Upper(string-expression)<br />

Converts string into uppercase.<br />

Lower(string-expression)<br />

Converts string into lowercase.<br />

Concat(string-expression, string-expression[, ...])<br />

Concatenates two or more strings.<br />

Substring(string-expression, start, count)<br />

Takes substring of string. Substring starts at first character and goes for count characters.<br />

start offset is origin 1. start and count must be positive integer constants.<br />

Following conditions return empty string:<br />

start less than or equal zero.<br />

start greater than length of string being processed.<br />

count less than zero.<br />

If start plus length greater than length of string being processed, then return from<br />

start to end of string; no blank padding.<br />

Locate(string-expression, string-expression)<br />

Searches for first string in second string.<br />

To add startsWith, type Locate(x, y) == 1.<br />

Value offset into second string first string found, where if second string starts with first,<br />

value one (1). If not found, returns zero (0).<br />

Trim(string-expression)<br />

Removes leading and trailing spaces from string.<br />

LTrim(string-expression)<br />

Removes leading spaces from string.<br />

RTrim(string-expression)<br />

Removes trailing spaces from string.<br />

Text<br />

Integer<br />

Text<br />

Text<br />

Text<br />

Text<br />

Integer<br />

Text<br />

Text<br />

Text


ToText(number-expression)<br />

Converts number to string.<br />

ToTextZeroPad(number-expression, size)<br />

Converts number to string with zero padding.<br />

size must be positive integer constant.<br />

If formatted size of number greater than or equal to specified size, it returns unchanged;<br />

otherwise, padded on left with the zero (0) character. If number negative, negative sign (-)<br />

first character.<br />

Computed Expression Rules<br />

Name and Description Return Value<br />

Text<br />

Text<br />

307


Chapter 7: Computed Expressions<br />

308<br />

External Information Functions<br />

Name and Description Return Value<br />

SICPCount([cpstate, ...])<br />

Returns number of change packages associated with item. Specify one or more of<br />

following change package states to include in count:<br />

Closed<br />

Open<br />

Submitted<br />

Accepted<br />

Rejected<br />

Discarded<br />

CommitFailed<br />

If you do not specify any arguments, count of all change packages returned.<br />

SICPEntryCount([cpentrytype, ...])<br />

Returns number of change package entries associated with item. Specify one or more of<br />

following change package entry types to include in count:<br />

Update<br />

Add<br />

Drop<br />

Lock<br />

RenameFrom<br />

RenameTo<br />

UpdateRevision<br />

UpdateArchive<br />

Import<br />

AddFromARchive<br />

MoveMemberFrom<br />

MoveMemberTo<br />

CreateSubproject<br />

AddSubproject<br />

AddSharedSubproject<br />

DropSubproject<br />

ConfigureSubprojectFrom<br />

ConfigureSUbprojectTo<br />

MoveSubprojectFrom<br />

MoveSubprojectTo<br />

If you do not specify any arguments, count of all unique change package entry<br />

operations returned, for example, rename operation only counted as one entry rather<br />

than separate entries for RenameFrom and RenameTo operations.<br />

SICPBytesAdded()<br />

Returns sum of bytes added by each change package entry for all change packages<br />

associated with item.<br />

Returns 0 for text files.<br />

Integer<br />

Integer<br />

Integer


SICPBytesDeleted()<br />

Returns sum of bytes deleted by each change package entry for all change packages<br />

associated with item.<br />

Returns 0 for text files.<br />

SICPDaysOpen()<br />

Returns total number of days changes packages associated with item open.<br />

If change package currently open, current time used to calculate number of days.<br />

If function used based on date and time in past, count based on specified time. Any<br />

change packages created after specified time not counted. Number of days open for any<br />

change packages closed after specified time calculated using specified time as close<br />

time.<br />

SICPLinesAdded()<br />

Returns sum lines added by each change package entry for all change packages<br />

associated with item.<br />

Returns 0 for binary files.<br />

SICPLinesDeleted()<br />

Returns lines deleted by each change package entry for all change packages associated<br />

with item.<br />

Returns 0 for binary files.<br />

SIMetric(siproject-field-name, metric name)<br />

Returns calculated value of metric for configuration management project. For more<br />

information on configuration management metrics, see “Using Configuration<br />

Management Project Metrics” on page 280.<br />

SIMetricCount(siproject-field-name, metric name)<br />

Returns number of items that make up metric value for configuration management<br />

project.<br />

NumberOfEntriesToState(state-name)<br />

Returns number of times specified state entered.<br />

To specify unspecified state, type "Unspecified", for example,<br />

NumberOfEntriesToState("Unspecified").<br />

Computed Expression Rules<br />

Name and Description Return Value<br />

numberOfHistoryEntries()<br />

Returns number of deltas associated with item. Means number of times item edited.<br />

numberOfModifications(field-name)<br />

Returns number of deltas specified field changed in.<br />

HistoricFieldValue(field-name, timestamp-constant)<br />

Returns value of specified field at specific point in history.<br />

Warning: Operation can take long time to complete.<br />

RelCount(relationship-field)<br />

Returns number of related items through specified relationship field. Function equivalent<br />

to: aggregate(relationship-field, count()).<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Type of specified field<br />

name<br />

Integer<br />

309


Chapter 7: Computed Expressions<br />

Name and Description Return Value<br />

RelExists(relationship-field)<br />

Returns whether relationships exist through specified relationship field.<br />

Aggregate(relationship-field,<br />

ByDocument(recurseInclude,recurseReference)[, ...], aggregateexpression)<br />

Aggregate operates against a single item, using that single item to find multiple items that<br />

it then runs an aggregate expression against to product a single value.<br />

Note: Aggregate is not an aggregate function.<br />

At least one relationship field must be specified. A set of items is made by following the<br />

first relationship field. Then that set is augmented by all items that the set points to<br />

through the next relationship field, and onward for each specified relationship field.<br />

The ByDocument function treats items found through the relationship field as<br />

documents, find all their nodes, and recurses into included and referenced documents.<br />

Query(query-name-string[, correlation-field[, ...]], aggregateexpression)<br />

Operates against single item using that single item to find multiple items it aggregates<br />

into for single value. query-name-string is name of query as quoted string in syntax<br />

"username:queryname". If no correlation-fields given, value of current item<br />

not used, and result of expression is constant. Aggregation expression runs against all<br />

items that satisfy query. Otherwise, query modified to require each specified<br />

correlation-field to match source item. Resulting list of items has<br />

aggregate-expression run against it and returned.<br />

Query(query-name-string[, source-correlation-field, targetcorrelation-field[,<br />

...]], aggregate-expression)<br />

More generalized form of the previous Query function; however, if sourcecorrelation-field<br />

is the same as target-correlation-field, use the<br />

previous Query function. This Query function takes list of fields that match between<br />

source and target items. Useful when you want to match between master item that has<br />

field set equal to values on all related items, in particular, Project field.<br />

QueryCorrelated(query-name-string[, source-correlation-field,<br />

target-correlation-field[, ...]], aggregate-expression)<br />

To express Query as QueryCorrelated function, specify aggregation-field from<br />

Query as both source-correlation-field and target-correlation-field.<br />

Allows you to specify matching fields on both sides, which is useful for item backed pick<br />

list (IBPL) fields. For example, if you have an item type that defines a set of something,<br />

like applications, the IBPL links each member of application back to application while a<br />

query backed relationship (QBR) field is used for linking between each application to<br />

each of its members. You can use the QueryCorrelated function on application using<br />

item ID from Application item correlated with IBPL representing Application on Defect<br />

that is a member of it, for example:<br />

QueryCorrelated("All Defects", ID, "Application IBPL", count())<br />

310<br />

Boolean<br />

Type of aggregate<br />

expression<br />

Integer or float,<br />

depending on<br />

aggregation-expression<br />

Integer or floating point,<br />

depending on<br />

aggregation-expression;<br />

see Query function<br />

Integer or floating point,<br />

depending on<br />

aggregation-expression;<br />

see Query function


Item Information Functions<br />

Computed Expression Rules<br />

Name and Description Return Value<br />

IsState(statename[, ...])<br />

Returns true if item’s state any of states specified in its argument list.<br />

To specify unspecified state, type "Unspecified", for example,<br />

IsState("Unspecified").<br />

IsType()(typename[, ...])<br />

Returns true if item’s type any of types specified in its argument list.<br />

IsNode()<br />

Returns true if item any of type node.<br />

IsSegment()<br />

Returns true if item any of type segment.<br />

IsSharedItem()<br />

Returns true if item any of type shared item.<br />

IsContent()<br />

Returns true if item any of types content.<br />

IsSubsegment()<br />

Returns true if item any of type subsegment.<br />

IsMeaningful()<br />

Returns true if item any of type node or segment is meaningful.<br />

IsNonMeaningful()<br />

Returns true if item any of type node or segment is non meaningful.<br />

IsGroupDocument()<br />

Returns true if item any of type segment what has the Group Document flag set.<br />

IsTestCase()<br />

Returns true if item type has a test management role of Test Case.<br />

IsTestSession()<br />

Returns true if item type has a test management role of Test Session.<br />

IsTestStep()<br />

Returns true if item type has a test management role of Test Step.<br />

IsTestSuite()<br />

Returns true if item type has a test management role of Test Suite.<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

Boolean<br />

311


Chapter 7: Computed Expressions<br />

312<br />

Test Functions<br />

Name and Description Return Value<br />

TestVerdict(test-verdict-name)<br />

A test verdict name constant that can be used in a comparison. For example,<br />

LastResult()==TestVerdict(Passed).<br />

TestVerdictByType(verdict-type-name)<br />

A test verdict type constant corresponding to the pass, fail, or other.<br />

TestVerdictName(id)<br />

Returns the display name of the verdict corresponding to the ID. For example,<br />

TestVerdictName(TestVerdict(Passed) would return Passed;<br />

TestVerdictName(LastResult()) would return the last test result as a string.<br />

TestVerdictTypeName(verdict-type-id)<br />

Returns the name of the test verdict type. For example,<br />

TestVerdictTypeName(TestVerdictByType(pass)) would return Pass<br />

VerdictToType(verdict-id-expression)<br />

Returns the numeric verdict type value for the given verdict ID. Can be applied to<br />

LastResult() to check the verdict type of a result. For example,<br />

VerdictToType(LastResult())==TestVerdictByType(pass) would check if a<br />

result was a pass verdict type.<br />

ResultCount(test-verdict-name)<br />

Returns the number of test results with a specific verdict. For example,<br />

ResultCount(Passed)would return the number of successful test results. This function<br />

is intended to be used with test session type items.<br />

ResultCountByType(verdict-type-name)<br />

Returns the number of test results with a specific verdict type (pass, fail, other). For<br />

example, if you have two test verdicts with a verdict type of fail, the function<br />

ResultCountByType(Fail)would return the number of test results with either verdict.<br />

This function is intended to be used with test session type items.<br />

ResultCount(Relationship-field, test-verdict-name)<br />

Returns the number of test results with a specific verdict in related test session type items.<br />

ResultCountByType(Relationship-field, verdict-type-name)<br />

Returns the number of test results with a specific verdict type (pass, fail, other) in related<br />

test session items.<br />

LastResult()<br />

Returns the internal ID of the most recent test result for the current item. This function<br />

must be used with the TestVerdictName function to convert the internal ID to a display<br />

string. For example, TestVerdictName(LastResult()).<br />

Text<br />

Text<br />

Text<br />

Text<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer


Creating Computed Fields<br />

Creating Computed Fields<br />

Computed fields allow you to perform calculations between multiple fields in an item,<br />

storing the result as a value in a read-only field (the computed field). Date, floating point,<br />

integer, logical, and short text field types are the only field data types that can be configured<br />

as computed fields. However, only date, floating point, integer, short text, and long text<br />

fields can be used in the computation.<br />

Key Considerations<br />

If you create an expression using one or more fields that a user does not have permission<br />

to view, the user sees only the fields they have permission to view.<br />

Computed fields are calculated in the order that they appear in the item; however, if a<br />

computed field depends on the value of another computed field, it is calculated after the<br />

computed field containing the dependent value. Depending on the number of items in<br />

your database and the number of items containing computed fields that contain<br />

dependencies, it may take a long time to calculate the value of the computed fields.<br />

Using the im analytics --recomputehistory -g command, you can calculate a<br />

computed field within a specific time frame, storing the value in the item history. This<br />

command is useful for historical trend charting; however, it does not allow you to<br />

“correct” the history of current item data. For more information, see the “Using<br />

Computed Fields to Chart Historical Trends” on page 316.<br />

Computed text fields only accept numeric, short text, and long text fields.<br />

You cannot create editability rules for field value attributes backed by any computed<br />

field. For more information about editability rules, see “Setting Field Editability” on<br />

page 135.<br />

To create a computed field<br />

1 From the Create Field dialog box, select Date, Floating Point, Integer, Logical, or<br />

Short Text from the Data Type list. The relevant data type settings display.<br />

2 Select the Computation Values option.<br />

3 In the Computation Definition field, create a computed expression using the rules<br />

described in “Computed Expression Rules” on page 293.<br />

For example:<br />

To determine how many days a Defect item has not been worked on, create a date<br />

field called Days Inactive and type the following expression:<br />

now() - "Modified Date"<br />

313


Chapter 7: Computed Expressions<br />

314<br />

The Days Inactive field displays the number of days elapsed since the last edit of the<br />

Defect item.<br />

If a Project item type contains Actual Cost and Expected Cost fields, and you want<br />

to determine if and how much the actual cost of a project exceeds the expected cost,<br />

create an integer or floating point field called Cost Overrun and type the following<br />

expression:<br />

"Actual Cost" - "Expected Cost"<br />

If the value of the Actual Cost field exceeds the value of the Expected Cost field, the<br />

Cost Overrun field appears after editing the item, displaying how much the actual<br />

cost overran the expected cost.<br />

To determine whether the actual cost of a project exceeded 90 percent of what you<br />

budgeted for, type the following expression:<br />

"Actual Cost" > .90 * "Expected Cost"<br />

If the value of the Actual Cost field exceeds the value of the Expected Cost field by<br />

90 percent, the Cost Overrun field appears after editing the item, displaying the<br />

percentage that the actual cost overran the expected cost.<br />

As project manager, you could closely monitor project budgets by creating a query<br />

or e-mail notification that identifies Project items where the cost has exceeded<br />

90 percent of the estimated budget.<br />

4 To indicate how often the computed field should be calculated and stored in the item’s<br />

history, select a frequency from the Store to History Frequency list. Selecting a frequency<br />

is useful for historical charting. never is the default.<br />

To specify a custom frequency, select never from the list, and create an event trigger that<br />

specifies the desired frequency. For more information on configuring the frequency at<br />

which the field computes, see “Scheduling Computation Times” on page 318.<br />

5 From the How to Run Computations list, select one of the following computation types:<br />

static calculates the field based on a schedule and stores it in the item’s history<br />

based on the value selected in the Store to History Frequency list. Columns for static<br />

fields are stored in the item’s row of the database. <strong>MKS</strong> recommends you select<br />

static if your expression involves intensive external functions, such as query or<br />

aggregate functions.<br />

dynamic calculates the field every time field values are retrieved. By default,<br />

columns for dynamic fields are not stored in the item’s row of the database;<br />

however, you can select dynamic and a frequency from the Store to History<br />

Frequency list. dynamic is the default.


NOTE<br />

Calculating Static Computed Fields<br />

Because dynamically computed fields are not stored in the database, dynamically<br />

computed short text fields cannot be located with an all text field search in the<br />

<strong>MKS</strong> <strong>Integrity</strong> Client. To search for dynamically computed short text fields,<br />

create a query that includes a specific “field contains” comparison. If the query<br />

does not include additional filters, the query may not return optimal results.<br />

To avoid performance issues when working with queries, do not use dynamic<br />

computed fields in query definitions. As a workaround you could create a rule<br />

based event trigger that fires when a relationship field changes, storing the count<br />

in a regular integer field.<br />

To avoid performance issues when working with large documents, ensure that<br />

any computed fields in <strong>MKS</strong> Requirements are static, not dynamic. To learn more<br />

about <strong>MKS</strong> Requirements, see the <strong>MKS</strong> <strong>Integrity</strong> for Requirements Management<br />

Solution <strong>Guide</strong>.<br />

6 Fill out the remaining fields and tabbed panels as described in “To create a field in the<br />

GUI” on page 131.<br />

7 Click OK to save your changes.<br />

Calculating Static Computed Fields<br />

If you created a static computed field, you specify how to display a value in the computed<br />

field.<br />

To calculate a static computed field<br />

NOTE To calculate a static computed field, the How to Run Computations field must<br />

be set to Static.<br />

1 In the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, select the computed field you want to<br />

calculate, and select Field > Edit. The Edit Field dialog box displays.<br />

2 To calculate the computed field immediately, select Compute Now. Selecting this option<br />

only calculates the field in items where the values of the underlying fields used in the<br />

computed expression have changed since the last computation.<br />

3 If you changed the computed field’s underlying computed expression and you want to<br />

calculate the field in all items containing the field, selecting Recompute All resets the last<br />

computation time associated with the computed field and recalculates the computed<br />

field in all items containing the computed field.<br />

4 If the computed field has been computed before, Last Evaluation At displays the date and<br />

time that the field was last computed. If Store to History Frequency is set to never and<br />

How to Run Computations is set to dynamic, Last Evaluation At displays never.<br />

5 To calculate the field, select Compute Now.<br />

315


Chapter 7: Computed Expressions<br />

316<br />

6 Click OK. The computed field calculates and the Compute Now option resets in the Edit<br />

Field dialog box. To recalculate the field, repeat the procedure.<br />

Using Computed Fields to Chart Historical<br />

Trends<br />

When you create a computed field, you typically configure it to calculate at a specific time in<br />

the future, storing the value in the history of each item containing the computed field.<br />

Command im analytics --recomputehistory -g calculates what the value of the<br />

computed field would have been at specific times and stores the value in the history of each<br />

item containing the computed field. This command is useful for discovering historical trends,<br />

such as how long a Defect item typically remained in state In Development in a current<br />

project compared to that of a previous project.<br />

Key Considerations<br />

The command is required only if a new calculation is required over existing historical<br />

data.<br />

To use the command, you must either be an administrator or have type administrator<br />

permissions for all types that the specified field displays in.<br />

Depending on the options specified, the command may delete or modify item history.<br />

The command may take a long time to complete depending on:<br />

complexity of the underlying computed expression<br />

number of items containing the specified computed field<br />

The command renders item data as it existed at the specified time. For non-history data<br />

source (attachments, change packages containing entries that have moved, permissions,<br />

and administrative objects), the command approximates the historical data. To render<br />

non-history data sources as they were known at a specific time, <strong>MKS</strong> recommends<br />

defining computed fields that use the static option under How to Run Computation,<br />

which captures historical values.<br />

Computed fields are calculated in the order that they appear in the item; however, if a<br />

computed field depends on the value of another computed field, it is calculated after the<br />

computed field containing the dependent value. Depending on the number of items in<br />

your database and the number of items containing computed fields that contain<br />

dependencies, it may take a long time to calculate the value of the computed fields.<br />

This command can be canceled at any time; however, it will not take effect until the<br />

specified interval calculation has completed. If you cancel this command, previous field<br />

values remain stored in the database. If the clear history option is selected and you<br />

cancel this command, item history is still cleared.


Example<br />

Using Computed Fields to Chart Historical Trends<br />

Using the im analytics --recomputehistory command from the command line<br />

interface, this example illustrates how to determine the historical trend for defects in projects.<br />

1 Create a new type to represent projects, for example, Project.<br />

2 Create some Project items to represent projects.<br />

3 Create a computed field, for example, Defect Count, that calculates the number of defects<br />

related to each project:<br />

im createfield --type=integer --computation='Query("Financial Toolkit<br />

Defects: In Dev", Project, count())' --name='Defect Count'<br />

4 Make the Defect Count field visible in the Project type only.<br />

5 Project the Defect Count field back in time:<br />

im analytics --recomputehistory –-starttime=06/01/2002 –-endtime=08/<br />

24/<strong>2009</strong> –-increment=1 –-incrementtype=week –-field='Defect Count'<br />

6 Create a query that lists all Project items, for example, All Projects.<br />

7 Create a chart:<br />

im createchart –-trendstep=week –-charttitle='Defect Count'<br />

--startdate=06/01/2002 –-enddate=02/01/<strong>2009</strong> –-computations='"Defect<br />

Count"' –-query 'All Projects' –-charttype='Item Fields Trend'<br />

--issueidentifier {Summary}<br />

To calculate a computed field within a specific time frame<br />

1 From a command line, type:<br />

im analytics --recomputehistory -g<br />

The Recompute Expression History For Field dialog box displays.<br />

317


Chapter 7: Computed Expressions<br />

318<br />

2 Select the following:<br />

From the Field to Compute list, select the computed field that you want to calculate.<br />

From the Start Time calendar, specify the starting calculation date and time.<br />

From the End Time calendar, specify the ending calculation date and time.<br />

From the Increment field, specify the interval to use for calculating the computed<br />

field. For example, if you select 1 Week, the computed field is calculated once a<br />

week.<br />

To clear previous history entries for the selected field between the specified times,<br />

select the Clear previous history option.<br />

3 To calculate the computed field, click OK. <strong>MKS</strong> <strong>Integrity</strong> calculates the compute field,<br />

storing the value in the history of the each item containing the computed field.<br />

Scheduling Computation Times<br />

To chart a computation over time, you can configure computed fields to create deltas daily,<br />

weekly, or monthly. For a static computed field, this configuration also saves the values to<br />

the computed field’s column in the item row of the database. By default, the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client includes scheduled event triggers that perform daily, weekly, and


Using Computed Fields to Calculate State Metrics<br />

monthly computations. You can edit the triggers to create your own schedule for when<br />

computations occur.<br />

IMPORTANT When you run a scheduled computation trigger, computed fields are<br />

calculated in field order. If an item contains a computed field that depends on the<br />

value of another computed field, the computed field containing the dependent value<br />

must come first in the field order. For example, if Field B depends on the value in<br />

Field A, then Field A must come before Field B in the field order.<br />

For more information on editing and running event triggers, see “Managing Event Triggers”<br />

on page 362 and the imFieldBean.computeHistoryNow() bean in the Event Trigger Java<br />

Documentation on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page.<br />

Using Computed Fields to Calculate State<br />

Metrics<br />

Using external information functions in computed fields, you can generate state metrics. State<br />

metrics are useful for determining item responsiveness. For example, you could use the<br />

DaysInState(state-name) function in a computed expression to calculate how many days<br />

a Defect item has been in the In Development state. The computed value is then stored in<br />

the computed field. For more information on creating computed fields, see “Creating<br />

Computed Fields” on page 313.<br />

Other possible metrics you can generate about your workflow are:<br />

how long an item stays in the workflow cycle<br />

how many times an item goes through the workflow cycle<br />

how many state transitions an item goes through<br />

the number of items that have not been modified in a certain time period<br />

The following external information functions are applicable to state metrics:<br />

DaysCurrentState()<br />

DaysCurrentPhase()<br />

DateFirstEntered(Submit)<br />

DateLastEntered(Submit)<br />

NumberOfEntriesToState(Submit)<br />

NumberOfHistoryEntries()<br />

NumberOfModifications(fieldName)<br />

DaysInState(Submit)<br />

DaysInPhase(Terminal)<br />

319


Chapter 7: Computed Expressions<br />

320<br />

For detailed information on the external information functions applicable to state metrics, see<br />

“Function Classes” on page 296.<br />

If you are using <strong>MKS</strong> <strong>Integrity</strong>’s configuration management and workflow and document<br />

management functionality, you can also generate the following types of metrics:<br />

Project metrics extract information from change packages to report how an individual<br />

project is progressing.<br />

Code metrics extract information from source code to report on a product’s status, also<br />

known as Portfolio Metrics.<br />

For more information on configuration management metrics, see “Using Configuration<br />

Management Project Metrics” on page 280.<br />

Example<br />

In the ABC Financial organization, a Defect type typically goes through the following<br />

workflow:<br />

Posted (initial state)<br />

In Development<br />

In QA<br />

Fixed (terminal state)<br />

Scenario 1<br />

To determine how many days a Defect spends in the Development phase, you create a<br />

computed field named Fix Time with the following underlying expression:<br />

daysInPhase(Development)<br />

Next, you query on Defects by the Fix Time field. To create a query, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong><br />

User <strong>Guide</strong>.<br />

Using the query you created, you create a report or chart that summarizes the query data. To<br />

create a report or chart, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Scenario 2<br />

To determine how many times a Defect went through the complete workflow cycle, meaning<br />

the number of times a Defect went from Posted to Fixed, you create a computed field named<br />

Number of Times Through the Workflow with the following underlying expression:<br />

numberOfEntriesToState(Posted)<br />

Next, you query on Defects by the Number of Times Through the Workflow field. To create<br />

and run a query, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Using the query you created, you create a report or chart that summarizes the query data. To<br />

create a report or chart, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.


Security<br />

Security<br />

An administrator creates computed fields, which display as read-only fields that cannot be<br />

edited; however, an administrator may want to allow only certain users or groups to view<br />

them. To configure a computed field’s visibility, see “Setting Field Relevance” on page 133.<br />

If you create an expression using one or more fields that a user does not have permission to<br />

view, the user sees the calculated field value; however, they may be able to extrapolate<br />

backwards the value of a field that they do not have permission to view.<br />

In charts and reports, any user can create a computed expression. However, the fields that<br />

make up the computed expression must be visible to the user.<br />

Performance and Scalability<br />

When creating computed expressions, consider the following performance and scalability<br />

issues:<br />

The complexity of a computed expression and the following may result in long<br />

calculation times and impact the performance of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>:<br />

aggregate, query, and historical external information functions, such as<br />

HistoricFieldValue<br />

using the query external information function with the im analytics<br />

--recomputehistory command<br />

any historic report that includes fields using external information functions<br />

Depending on the number of dynamic computed fields in an item and the complexity of<br />

the underlying computed expressions, an item may take a long time to display because<br />

all of the computed fields in the item are calculated before viewing.<br />

Querying for items that include state metrics in computed fields may take a long time,<br />

for example, querying for items where DaysInState(Submit) > 365. You can<br />

improve the performance of the query by configuring the computed field as a static field.<br />

Static fields are computed periodically on a schedule and although they may take a long<br />

time to calculate initially, they may be indexed as columns in the items table after the<br />

calculation. Indexing calculated fields improves query performance.<br />

Do not create computed expressions for types that include vast amounts of items. For<br />

example, do not create computed expressions for only one type, such as a Defect type,<br />

that potentially includes tens of thousands of items. Instead, include computed<br />

expressions for an aggregate type, such as a Project type, that includes maybe 20 to 30<br />

items, but are related to tens of thousands of Defect items.<br />

321


Chapter 7: Computed Expressions<br />

322


C HAPTER EIGHT<br />

Change Packages<br />

Administering and Customizing Change Packages<br />

8<br />

This chapter provides information on customizing change packages for use with<br />

<strong>MKS</strong> <strong>Integrity</strong> and integrations. This chapter also contains information on administering<br />

configuration management change packages as part of a review process.<br />

This chapter contains the following topics:<br />

“<strong>MKS</strong> <strong>Integrity</strong> Change Packages” on page 324<br />

“Configuration Management Change Packages” on page 343<br />

323


Chapter 8: Change Packages<br />

Where to Go From Here<br />

324<br />

The following table summarizes the available content for administering change packages:<br />

To Do This... See...<br />

Learn about change package types. “<strong>MKS</strong> <strong>Integrity</strong> Change Packages” on page 324<br />

Perform tasks with change package attributes,<br />

such as viewing, creating, editing, and deleting.<br />

Perform tasks with change package entry<br />

attributes, such as viewing, creating, editing, and<br />

deleting.<br />

Learn about the available operations users can<br />

perform on created change package types.<br />

How to create, edit, and delete entries used with<br />

created change package types.<br />

Learn about using configuration management<br />

change packages.<br />

Manage change packages by implementing a<br />

review process.<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

“Modifying Change Package Attributes” on<br />

page 333<br />

“Modifying Change Package Entry Attributes” on<br />

page 336<br />

“User Operations for Created Change Package<br />

Types” on page 340<br />

“Modifying CP Entries for Created CP Types” on<br />

page 342<br />

“Configuration Management Change Packages”<br />

on page 343<br />

“Using Change Package Reviews” on page 344<br />

A change package is a group of changes made by a single user that can be considered a logical<br />

unit of work. Only the creator of a change package may add entries to that change package.<br />

Change package entries take the form of operations, both deferred and committed. When<br />

reviews are mandatory, change package entries take the form of pending entries before they<br />

are committed<br />

By default, <strong>MKS</strong> <strong>Integrity</strong> includes two change package types: configuration management<br />

and Implementer. A change package type consists of change package attributes and change<br />

package entry attributes.<br />

Users can query and filter items based on change package types and their attributes. Users<br />

can also generate reports to display information on change packages of the defined change<br />

package type. By default, all users are permitted to view configuration management and<br />

Implementer change packages.


<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

The super administrator can customize and view permissions for the configuration<br />

management (si) change package type.<br />

NOTE For information on the Implementer change package type, see the<br />

<strong>MKS</strong> Implementer <strong>2009</strong> Installation and <strong>Administration</strong> <strong>Guide</strong>. For information on other<br />

integrations, such as the <strong>MKS</strong> integration with CA Endevor, contact <strong>MKS</strong> Customer<br />

Care.<br />

The GUI functionality for change package types is primarily intended for managing user and<br />

group permissions of change package types.<br />

The CLI provides powerful functionality for creating new change package types and<br />

modifying their attributes. The ability to create new change package types and modify their<br />

attributes is intended for use in creating custom integrations. The functionality is provided to<br />

define the schema for a change package to reproduce the attributes and entry types in<br />

<strong>MKS</strong> <strong>Integrity</strong> that exist in a third party tool for the purpose of creating compatibility<br />

between products.<br />

The CLI command documentation is provided in this section with specific options. For<br />

information on general options for CLI commands, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference<br />

<strong>Guide</strong> for Workflows and Documents or man pages. The commands are also available through<br />

the <strong>MKS</strong> API. For information on using the <strong>MKS</strong> API, see <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Integrations<br />

Builder <strong>Guide</strong>.<br />

Viewing Change Package Types<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage change package types from<br />

one convenient location. Managing change package types is carried out through the Change<br />

Package Types view.<br />

To open the Change Package Types view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client,<br />

expand the Workflows and Documents node, and select Change Package Types. The<br />

Change Package Types view displays.<br />

By default, the data filter in the Change Package Types view displays all existing change<br />

package types. You can search for a specific change package type by typing in the text field.<br />

For more information, see “Filtering Data” on page 18.<br />

To view change package types in the CLI<br />

From the CLI, type the following command:<br />

im cptypes<br />

[--fields=field1[:width1],field2[:width2]...]<br />

[--fieldsDelim=value]<br />

cptypeID1, cptypeID2...<br />

325


Chapter 8: Change Packages<br />

326<br />

where:<br />

--fields=field1[:width1],field2[:width2]... specifies the fields and their width to display<br />

for change package types; fieldn can be any of:<br />

attributes displays the names of the change package attribute for the change<br />

package type.<br />

description displays the description for the change package type if one is<br />

available.<br />

displayName displays the name of the change package type that is displayed to<br />

users.<br />

entryAttributes displays change package entry attributes for the change package<br />

type.<br />

entryKey displays the entry key for the change package type.<br />

id displays the change package type ID.<br />

name displays the name of the change package type.<br />

permittedAdministrators displays a list of administrators who are permitted to<br />

edit the change package type.<br />

permittedGroups displays a list of groups who are permitted to edit the change<br />

package type.<br />

position displays the position order of the change package type.<br />

references displays any references to the change package type from other objects.<br />

--fieldsDelim=value specifies the string to be used as a delimiter between fields.<br />

cptypeID1, cptypeID2... specifies the IDs of the change package types you want to view. If<br />

no change package type IDs are specified, all change package types display.<br />

Changing Change Package Type Order<br />

You can change the position order of the change package type.<br />

To change the position order of a change package type<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the node for Workflows and<br />

Documents, and select Change Package Types. The display pane shows the available<br />

change package types.<br />

2 Select Change Package Type > Reposition. The Reposition Change Package Types dialog<br />

box displays.<br />

3 Select the change package type in the list, and click Move Up or Move Down to change its<br />

order.


4 To save your changes, click OK.<br />

Editing Change Package Types<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

Only partial editability of change package types is available from the GUI. For full editability,<br />

use the CLI.<br />

Only users assigned as change package administrators or a super administrator with Admin<br />

permission under the mks:im ACL are permitted to edit a change package type. For more<br />

information on the required ACL permission, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation<br />

and Configuration <strong>Guide</strong>.<br />

IMPORTANT By default, the everyone group is allowed to view configuration<br />

management change packages. Once new permissions are set for the configuration<br />

management change package type, the default settings are overwritten. If you set<br />

new permissions where no parameters are specified, then no one can view<br />

configuration management change packages.<br />

NOTE You cannot edit the si (configuration management) change package type<br />

from the GUI. The change package type can only be modified through the CLI.<br />

To edit a change package type in the GUI<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the node for <strong>MKS</strong> <strong>Integrity</strong>,<br />

and select Change Package Types. The display pane shows the available change<br />

package types.<br />

2 To search for the specific change package type you want to edit, type in the text filter (for<br />

more information, see “Filtering Data” on page 18).<br />

3 Highlight the change package type you want to edit, and select Change Package Type ><br />

Edit. The Edit Change Package Type dialog box displays.<br />

4 Edit options as necessary:<br />

To enter a description for the change package type, click the Description tab, and<br />

type in the field.<br />

To customize the order the change package types display in the list, click the<br />

Position tab to display the Position panel, and use the Move Up and Move Down<br />

buttons to change the order in the list.<br />

To specify which groups are allowed to view and modify change packages of the<br />

specified type, click the Permitted Groups tab. By default, the everyone group is<br />

permitted to view change packages of the specified type.<br />

327


Chapter 8: Change Packages<br />

328<br />

Note the following:<br />

The Assigned list specifies the groups that are allowed to view or modify<br />

change packages of the change package type being edited.<br />

To assign permissions to a group, move the group from the Groups list to the<br />

Assigned list.<br />

To permit members of a group to modify changes packages for the editing<br />

change package type, in the Modify column click the corresponding check box.<br />

To specify which users and groups are allowed to administer the change package<br />

type, see “To assigning administrators to change package types” on page 329.<br />

To determine all objects that reference the change package type, click the References<br />

tab. For information on the contents of the tab, see “To manage admin provided<br />

objects in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client” on page 244.<br />

To view a history of administrative changes for the change package type, click the<br />

History tab. The record of changes displays.<br />

5 To save your changes, click OK.<br />

To edit a change package type in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im editcptype<br />

--entrykey=cpentryattribute1,cpentryattribute2,...<br />

--displayName=value<br />

--permittedAdministrators=u=user1,user2,…;g=group1,group2,…<br />

--permittedGroups=group1,group2:modify,…<br />

--description=value<br />

--position=|first|last|before:|after:<br />

cptypeID<br />

--entrykey=cpentryattribute1,cpentryattribute2,... specifies the entry key for the change<br />

package. The entry key is used as a unique identifier of a change package entry. An entry<br />

key must be defined for each change package type, or change packages cannot be<br />

created for that type. To create a change package entry attribute to use as the entry key,<br />

see “Creating Change Package Entry Attributes” on page 338.<br />

--displayName=value specifies the name of the change package that users see when<br />

creating change packages of that type.<br />

--permittedAdministrators=u=user1,user2,…;g=group1,group2,… specifies the<br />

users and groups that are allowed to view and edit permissions for the change package<br />

type.


<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

--permittedGroups=group1,group2:modify,… specifies the groups that are allowed to<br />

view and edit change packages of the specified type. To allow a group to view and edit<br />

change packages of this type, append the group name with :modify, for example:<br />

--permittedGroups=everyone:modify<br />

--description=value specifies a description for the change package type.<br />

--position=|first|last|before:|after: specifies the<br />

position of the change package type.<br />

cptypeID specifies the ID of the change package type you are editing.<br />

For example, the command:<br />

im editcptype --permittedAdministrators=u=mchang<br />

--permittedGroups=QA,Development si<br />

sets user mchang as a permitted administrator who can edit and view the configuration<br />

management change package type, and also sets the groups QA and Development as the only<br />

groups having permission to view change packages of the configuration management type.<br />

To assigning administrators to change package types<br />

1 From the Edit Change Package Type dialog box (see “Editing Change Package Types” on<br />

page 327), display the Administrators tab.<br />

2 To query for one or more users or groups using a text search, type a name in the Show<br />

Principals containing text field. A list of users and groups displays in the results list<br />

becoming more specific as you type.<br />

To query for one or more users using pre-existing filters or to restrict your text query<br />

further, select one or more of the following filters from the that are filter list:<br />

Non LDAP Principals queries for users from non LDAP domains. This filter is<br />

enabled by default and displays as the active filter under the Show principals<br />

containing text field. Use the text search to query for one or more users in non LDAP<br />

domains.<br />

LDAP Principals queries for one or more users from an LDAP domain. The LDAP<br />

Query dialog box displays.<br />

329


Chapter 8: Change Packages<br />

330<br />

Using LDAP query syntax, type a query string, and click OK. The query results<br />

display in the results list of the Realm User Selection dialog box, and the LDAP<br />

Principals filter displays as the active filter under the Show principals containing text<br />

field.<br />

NOTE<br />

To create an LDAP query string, you should be familiar with your LDAP schema<br />

and LDAP query syntax.<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client does not perform syntax checking on<br />

LDAP query strings.<br />

After you query for a user in the LDAP Search Filter dialog box, you can query<br />

for a user in the results list using the Show principals containing text field.<br />

To clear the that are filter, select that are > Reset.<br />

3 From the results list, select the users and groups, and then do one of the following:<br />

To add the selected users or groups to the Assigned Administrators list, click +.<br />

To remove the selected users or groups from the Assigned Administrators list,<br />

click -.<br />

TIP To hide the principals list or Assigned Administrators list, click . To display<br />

the principals list or Assigned Administrators list, click .<br />

4 To assign administrators to the change package type, click OK.<br />

Viewing Change Package Types<br />

You can view the current permissions and other information for a change package type.<br />

To view information for a change package type in the GUI<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the <strong>MKS</strong> <strong>Integrity</strong> node, and<br />

select Change Package Types. The display pane shows the available change package<br />

types.<br />

2 Highlight the change package type you want to customize permissions for, and select<br />

Change Package Type > View Definition for a selected change package. The Change<br />

Package Type dialog box displays.<br />

3 Information displayed in fields and lists is non-editable. For field and list descriptions,<br />

see “Editing Change Package Types” on page 327. When you are finished viewing the<br />

information, click Close.


To view information for a change package type in the CLI<br />

From the CLI, run the following command:<br />

where:<br />

im viewcptype<br />

--[no]showAttributes<br />

--[no]showEntryAttributes<br />

--[no]showEntryKey<br />

--[no]showHistory<br />

cptypeID1, cptypeID2...<br />

--[no]showAttributes displays the change package attributes.<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

--[no]showEntryAttributes displays the change package entry attributes.<br />

--[no]showEntryKey displays the change package entry key.<br />

--[no]showHistory displays the history of changes to the change package type<br />

attributes.<br />

cptypeID1, cptypeID2... specifies the IDs of the change package types you are viewing.<br />

For example, the command:<br />

im viewcptype si<br />

displays information on the configuration management change package type, including<br />

attributes, entry attributes, permitted groups, and administrators.<br />

Creating Change Package Types<br />

The ability to create new change package types is intended for use in creating custom<br />

integrations. The functionality is provided to define the schema for a change package to<br />

reproduce the attributes and entry types in <strong>MKS</strong> <strong>Integrity</strong> that exist in a third party tool for<br />

the purpose of creating compatibility between products.<br />

IMPORTANT An entry key must be defined for the change package type you are<br />

creating, or you cannot create entries for any change packages of that type. For more<br />

information, see “Editing Change Package Types” on page 327.<br />

To create a change package type in the CLI<br />

From the CLI, type the following command:<br />

im createcptype<br />

--displayName=value<br />

--permittedAdministrators=u=user1,user2,…;g=group1,group2,…<br />

--permittedGroups=group1,group2:modify,…<br />

--description=value<br />

--position=|first|last|before:|after:<br />

331


Chapter 8: Change Packages<br />

332<br />

where:<br />

--displayName=value specifies the name of the change package type.<br />

--permittedAdministrators=u=user1,user2,…;g=group1,group2,… specifies the<br />

users and groups that are allowed to view and edit permissions for the change package<br />

type.<br />

--permittedGroups=group1,group2:modify,… specifies the groups that are allowed to<br />

view and edit change packages of the specified type. To allow a group to view and edit<br />

change packages of this type, append the group name with :modify, for example:<br />

--permittedGroups=everyone:modify<br />

--description=value specifies a description for the change package type.<br />

--position=|first|last|before:|after: specifies the<br />

position of the change package type.<br />

For example, the command:<br />

im createcptype<br />

--displayName=ExternalCPs<br />

--permittedAdministrators=u=mchang<br />

--permittedGroups=QA,Development si<br />

creates change package ExternalCPs and sets user mchang as a permitted administrator<br />

who can edit and view the change package type, and also sets the groups QA and<br />

Development as the only groups having permission to view change packages of the type.<br />

Deleting Change Package Types<br />

You can delete change package types that are not needed; however, you cannot undo an<br />

im deletecptype operation or restore deleted change package types. You cannot delete the<br />

si (configuration management) change package type.<br />

To delete a change package type in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im deletecptype<br />

--[no]confirm<br />

cptypeID1, cptypeID2...<br />

--[no]confirm specifies if to confirm deletion of the change package type. The default<br />

is to confirm.<br />

cptypeID1, cptypeID2... are the IDs of the change package types you are deleting.


For example, the command:<br />

im deletecptype --noconfirm devcp<br />

deletes change package devcp without confirmation.<br />

Modifying Change Package Attributes<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

The ability to modify change package attributes is intended for use in creating custom<br />

integrations. The functionality is provided to define the schema for a change package to<br />

reproduce the attributes and entry types in <strong>MKS</strong> <strong>Integrity</strong> that exist in a third party tool for<br />

the purpose of creating compatibility between products.<br />

The CLI command documentation is provided in this section with specific options. For<br />

information on general options for CLI commands, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference<br />

<strong>Guide</strong> for Workflows and Documents or man pages. The commands are also available through<br />

the <strong>MKS</strong> API. For information on using the <strong>MKS</strong> API, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Integrations<br />

Builder <strong>Guide</strong>.<br />

Viewing Change Package Attributes<br />

To view change package attributes in the CLI<br />

From the CLI, type the following command:<br />

im cpattributes<br />

--cpType=change package type<br />

--fields=field1[:width1],field2[:width2]...<br />

--fieldsDelim=value<br />

cpattributeID1, cpattributeID2...<br />

where<br />

--cpType=change package type specifies the type of change package to view attribute<br />

details for.<br />

--fields=field1[:width1],field2[:width2]... specifies the attribute fields to display, where<br />

fieldn can be any of the following: decimalPlaces, description, displayFormat,<br />

displayName, id, isMandatory, isReadOnly, maxLength, name, position, strings,<br />

type.<br />

--fieldsDelim=value specifies the string to be used as a delimiter between fields.<br />

cpattributeID1, cpattributeID2... specifies the IDs of the change package attributes you<br />

want to view information for. If no IDs are specified, all change package attributes for<br />

the specified change package type are displayed.<br />

333


Chapter 8: Change Packages<br />

334<br />

Viewing Change Package Attribute Details<br />

To view change package attribute details in the CLI<br />

From the CLI, type the following command:<br />

where<br />

im viewcpattribute<br />

--cpType=change package type<br />

--[no]showHistory<br />

cpattributeID1, cpattributeID2...<br />

--cpType=change package type specifies to display details for change package attributes<br />

of specified change package type.<br />

--[no]showHistory specifies if to display the history of changes to the change package<br />

attribute.<br />

cpattributeID1, cpattributeID2... specifies the IDs of the change package attributes you<br />

want to view details for.<br />

Creating Change Package Attributes<br />

To create a change package attribute in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im createcpattribute<br />

--dataType=[integer|stringlist|float|logical|date|string|user|cpid]<br />

--maxLength=value<br />

--cpType=change package type<br />

--decimalPlaces=value<br />

--displayFormat=[truefalse|tf|yesno|yn]<br />

--displayName=value<br />

--[no]mandatory<br />

--strings=value<br />

--description=value<br />

--name=value<br />

--position=[first|last|before:|after:]<br />

--dataType=[integer|stringlist|float|logical|date|string|user|cpid]<br />

specifies the attribute data type.<br />

--maxLength=value specifies the maximum length of value for the attribute. This option<br />

is valid for data types string, stringlist, and cpid.<br />

--cpType=change package type specifies the name of change package type the attribute is<br />

being created for.<br />

--decimalPlaces=value specifies the number of decimal places in the value the<br />

attribute takes. This option is valid for data type float.


<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

--displayFormat=[true|false|t|f|yes|no|y|n] specifies if to display the format<br />

of the change package attribute value. This option is valid for data type logical.<br />

--displayName=value specifies if to display name of the change package attribute.<br />

--[no]mandatory specifies if the change package attribute value is mandatory.<br />

--strings=value specifies string values for the attribute. This option is valid for data<br />

type stringlist.<br />

--description=value specifies a short description for the attribute.<br />

--name=value specifies the name for the attribute being created.<br />

--position=[first|last|before:|after:] specifies the position of<br />

the attribute you are creating in the attribute order.<br />

Editing Change Package Attributes<br />

To edit a change package attribute in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im editcpattribute<br />

--cpType=change package type<br />

--decimalPlaces=value<br />

--displayFormat=[truefalse|tf|yesno|yn]<br />

--displayName=value<br />

--[no]mandatory<br />

--strings=value<br />

--description=value<br />

--position=[first|last|before:|after:]<br />

cpattributeID<br />

--cpType=change package type specifies the name of change package type the attribute is<br />

being created for.<br />

--decimalPlaces=value specifies the number of decimal places in the value the<br />

attribute takes. This option is valid for data type float.<br />

--displayFormat=[true|false|t|f|yes|no|y|n] specifies if to display the format<br />

of change package attribute value. This option is valid for data type logical.<br />

--displayName=value specifies if to display the name of the change package attribute.<br />

--[no]mandatory specifies if the change package attribute value is mandatory.<br />

--strings=value specifies string values for the attribute. This option is valid for data<br />

type stringlist.<br />

--description=value specifies a short description for the attribute.<br />

335


Chapter 8: Change Packages<br />

336<br />

--position=[first|last|before:|after:] specifies the position of<br />

the attribute you are creating in the attribute order.<br />

cpattributeID specifies the ID for the change package attribute you are editing.<br />

Deleting Change Package Attributes<br />

You cannot undo the im deletecpattribute operation, and you cannot restore deleted<br />

change package attributes.<br />

To delete a change package attribute in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im deletecpattribute<br />

--cpType=change package type<br />

--[no]confirm<br />

cpattributeID1, cpattributeID2...<br />

--cpType=change package type specifies the change package type to delete the change<br />

package attribute from.<br />

--[no]confirm specifies if to confirm the change package attribute deletion. The<br />

default is to confirm.<br />

cpattributeID1, cpattributeID2... specifies the IDs of the change package attributes you<br />

want to delete.<br />

Modifying Change Package Entry Attributes<br />

The CLI command documentation is provided in this section with specific options. For<br />

information on general options for CLI commands, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference<br />

<strong>Guide</strong> for Workflows and Documents or man pages. The commands are also available through<br />

the <strong>MKS</strong> API. For information on using the <strong>MKS</strong> API, see <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Integrations<br />

Builder <strong>Guide</strong>.<br />

Viewing Change Package Entry Attributes<br />

To view change package entry attributes in the CLI<br />

From the CLI, type the following command:<br />

im cpentryattributes<br />

--cpType=change package type<br />

--fields=field1[:width1],field2[:width2]...<br />

--fieldsDelim=value<br />

cpattributeID1, cpattributeID2...


where:<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

--cpType=change package type specifies the change package type for the change package<br />

entry attribute.<br />

--fields=field1[:width1],field2[:width2]... specifies the fields to display, where fieldn<br />

can be any of the following: decimalPlaces, description, displayFormat,<br />

displayName, id, isMandatory, isReadOnly, maxLength, name, position, strings,<br />

type.<br />

--fieldsDelim=value specifies the string to be used as a delimiter between fields.<br />

cpattributeID1, cpattributeID2... specifies the IDs of the change package attributes you<br />

want to view. If no IDs are specified, all change package attribute IDs are displayed.<br />

Viewing Change Package Entry Attribute Details<br />

To view change package entry attribute details in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im viewcpentryattribute<br />

--cpType=change package type<br />

--[no]showHistory<br />

cpattributeID1, cpattributeID2...<br />

--cpType=change package type specifies the change package type for the change package<br />

entry attribute.<br />

--[no]showHistory specifies if to display the history of changes to the change package<br />

entry attribute.<br />

cpattributeID1, cpattributeID2... specifies the IDs of the change package attributes you<br />

want to view details for. If no IDs are specified, all change package attribute IDs are<br />

displayed.<br />

337


Chapter 8: Change Packages<br />

338<br />

Creating Change Package Entry Attributes<br />

To create a change package entry attribute in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im createcpentryattribute<br />

--dataType=[integer|stringlist|float|logical|date|string|user|cpid]<br />

--maxLength=value<br />

--cpType=change package type<br />

--decimalPlaces=value<br />

--displayFormat=[truefalse|tf|yesno|yn]<br />

--displayName=value<br />

--[no]mandatory<br />

--strings=value<br />

--description=value<br />

--name=value<br />

--position=[first|last|before:|after:]<br />

--dataType=[integer|stringlist|float|logical|date|string|user|cpid]<br />

specifies the attribute data type.<br />

--maxLength=value specifies the maximum length of value for the entry attribute. This<br />

option is valid for data types string, stringlist, and cpid.<br />

--cpType=change package type specifies the name of change package type the entry<br />

attribute is being created for.<br />

--decimalPlaces=value specifies the number of decimal places in the value the<br />

attribute takes. This option is valid for data type float.<br />

--displayFormat=[true|false|t|f|yes|no|y|n] specifies if to display the format<br />

of change package entry attribute value. This option is valid for data type logical.<br />

--displayName=value specifies if to display name of the change package entry attribute.<br />

--[no]mandatory specifies if the change package entry attribute value is mandatory.<br />

--strings=value specifies string values for the attribute. This option is valid for data<br />

type stringlist.<br />

--description=value specifies a short description for the attribute.<br />

--name=value specifies the name for the change package entry attribute being created.<br />

--position=[first|last|before:|after:] specifies the position of<br />

the change package entry attribute you are creating in the attribute order.


Editing Change Package Entry Attributes<br />

To edit a change package entry attribute in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im editcpentryattribute<br />

--cpType=change package type<br />

--decimalPlaces=value<br />

--displayFormat=[truefalse|tf|yesno|yn]<br />

--displayName=value<br />

--[no]mandatory<br />

--strings=value<br />

--description=value<br />

--position=[first|last|before:|after:]<br />

cpentryattributeID<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

--cpType=change package type specifies the name of change package type the attribute is<br />

being created for.<br />

--decimalPlaces=value specifies the number of decimal places in the value the<br />

attribute takes. This option is valid for data type float.<br />

--displayFormat=[true|false|t|f|yes|no|y|n] specifies if to display the format<br />

of value. This option is valid for data type logical.<br />

--displayName=value specifies if to display the name of the change package entry<br />

attribute.<br />

--[no]mandatory specifies if the change package entry attribute value is mandatory.<br />

--strings=value specifies a string of values for the change package entry attribute. This<br />

option is valid for data type stringlist.<br />

--description=value specifies a short description for the change package entry<br />

attribute.<br />

--position=[first|last|before:|after:] specifies the position of<br />

the change package entry attribute you are creating in the attribute order.<br />

cpentryattributeID specifies the ID for the change package entry attribute you are editing.<br />

Deleting Change Package Entry Attributes<br />

You cannot undo an im deletecpentryattribute operation, and you cannot restore deleted<br />

change package attributes.<br />

339


Chapter 8: Change Packages<br />

340<br />

To delete a change package entry attribute in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im deletecpentryattribute<br />

--cpType=change package type<br />

--[no]confirm<br />

cpattributeID1, cpattributeID2...<br />

--cpType=change package type specifies the change package type for the change package<br />

entry attribute.<br />

--[no]confirm specifies if to confirm deleting the change package entry attribute. The<br />

default is to confirm.<br />

cpattributeID1, cpattributeID2... specifies the IDs of the change package attributes you<br />

want to delete.<br />

User Operations for Created Change Package Types<br />

This section contains commands available to perform user operations on change package<br />

types created for your system.<br />

The CLI command documentation is provided in this section with specific options. For<br />

information on general options for CLI commands, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference<br />

<strong>Guide</strong> for Workflows and Documents or man pages. The commands are also available through<br />

the <strong>MKS</strong> API. For information on using the <strong>MKS</strong> API, see <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Integrations<br />

Builder <strong>Guide</strong>.<br />

TIP In addition to the commands in this section, you can also use commands<br />

im viewcp and im cps on change package types you have created. See the man<br />

pages for details on using those commands.<br />

Creating Change Packages<br />

To create a change package in the CLI<br />

From the CLI, type the following command:<br />

im createcp<br />

--attribute=value<br />

--issueID=value<br />

--type=change package type


where:<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<br />

--attribute=value specifies the attribute of the form name=value, where name is the<br />

attribute name and value is the new value of that attribute.<br />

NOTE You must enter using option --attribute=value any attribute that is<br />

mandatory for the change package type.<br />

--issueID=value specifies the item ID to create the change package for.<br />

--type=change package type specifies the type of the change package to be created.<br />

Editing Change Packages<br />

To edit a change package in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im editcp<br />

--attribute=value<br />

--filter=type:name<br />

cpid<br />

--attribute=value specifies the attribute of the form name=value, where name is the<br />

attribute name and value is the new value of that attribute.<br />

--filter=type:name specifies the filter used to refine change package selections.<br />

cpid specifies the change package you are editing.<br />

Deleting Change Packages<br />

You cannot undo an im deletecp operation, and you cannot restore deleted change<br />

packages.<br />

To delete a change package in the CLI<br />

where<br />

im deletecp<br />

--[no]confirm<br />

--[no|confirm]deleteEntries<br />

cpid1, cpid2...<br />

--[no]confirm specifies if to confirm each individual change package being deleted.<br />

--[no|confirm]deleteEntries specifies if to delete (or confirm deleting) the change<br />

package entries.<br />

cpid1, cpid2... specifies the change packages you are deleting.<br />

341


Chapter 8: Change Packages<br />

Modifying CP Entries for Created CP Types<br />

342<br />

The CLI command documentation is provided in this section with specific options. For<br />

information on general options for CLI commands, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> CLI Reference<br />

<strong>Guide</strong> for Workflows and Documents or man pages. The commands are also available through<br />

the <strong>MKS</strong> API. For information on using the <strong>MKS</strong> API, see <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Integrations<br />

Builder <strong>Guide</strong>.<br />

Creating Change Package Entries<br />

To create change package entries in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im createcpentry<br />

--attribute=value<br />

--changePackageID|--cpid=value<br />

--attribute=value specifies the value of a change package entry attribute (value is of<br />

the form attributeName=attributeValue).<br />

--changePackageID|--cpid=value specifies the ID of the associated change package.<br />

Editing Change Package Entries<br />

To edit change package entries in the CLI<br />

From the CLI, type the following command:<br />

im editcpentry<br />

--attribute=value<br />

--changePackageID|--cpid=value<br />

cpentry<br />

where:<br />

--attribute=value specifies the value of a change package entry attribute (value is of<br />

the form attributeName=attributeValue).<br />

--changePackageID|--cpid=value specifies the ID of the associated change package.<br />

cpentry specifies the name of the change package entry you editing. The format of cpentry<br />

is determined by the entry key for the change package type. For example, an<br />

Implementer change package entry is specified as member:objectcode.<br />

Deleting Change Package Entries<br />

You cannot undo an im deletecpentry operation, and you cannot restore deleted change<br />

package entries.


To delete change package entries in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im deletecpentry<br />

--[no]confirm<br />

--changePackageID|--cpid=value<br />

cpentry<br />

Configuration Management Change Packages<br />

--[no]confirm specifies if to confirm deleting the change package entry. The default is<br />

to confirm.<br />

--changePackageID|--cpid=value specifies the ID of the associated change package.<br />

cpentry specifies the name of the change package entry you deleting.<br />

Configuration Management Change Packages<br />

A change package is a group of changes made by a single user that can be considered a logical<br />

unit of work. Only the creator of a change package can add entries to that change package.<br />

Change package entries are added when you specify a change package while performing<br />

member operations.<br />

A change package acts as a log of both the changes to members and subprojects that have<br />

already been committed to the repository (server), and the changes that are only visible to the<br />

user on the desktop and not committed to the repository (deferred). When change package<br />

reviews are mandatory, a change package acts as a control placed on changes to the<br />

repository by making them pending before they are committed.<br />

A change package is open until you close it, which signifies that work on the change is<br />

completed. When reviews are mandatory, a change package has additional states before it is<br />

closed.<br />

The following rules apply when using change packages:<br />

Each change package has a unique change package ID (CP ID). The CP ID is a colon<br />

separated identifier of the form:<br />

:<br />

NOTE If the <strong>MKS</strong> <strong>Integrity</strong> integration is enabled, the item ID is used as the<br />

container ID.<br />

343


Chapter 8: Change Packages<br />

344<br />

Only the creator of a change package or a change package administrator can close a<br />

change package.<br />

Once a change package is closed, it can only be re-opened by a change package<br />

administrator. If a change package has been propagated through Apply CP or<br />

Resync CP, it cannot be reopened, even by a change package administrator.<br />

You can expand the capabilities of change packages by associating them with items to take<br />

advantage of <strong>MKS</strong> <strong>Integrity</strong>’s workflow and document management.<br />

For information on integrating workflow and document management with configuration<br />

management, and setting up configuration management change packages, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

Using Change Package Reviews<br />

A change package review is a review of changes by specified reviewers before the changes<br />

are committed to the server repository.<br />

If change package reviews are mandatory globally, then all change packages must progress<br />

through the change package review process.<br />

If change package reviews are mandatory at the project level only, then a change package<br />

only progresses through the review process if it contains at least one entry associated with a<br />

member in a project that requires a review. Change packages follow the review process<br />

before the changes are successfully committed to the server repository. All other change<br />

packages function as non-review change packages.<br />

A change package reviewer is a user specified by your administrator to review change packages<br />

containing members associated with specific projects. The reviewer may be individually<br />

specified or a member of a specified reviewer group. In the case of a reviewer group, any<br />

member of that group casts an accept or reject vote on behalf of the entire group.<br />

A change package watcher is a user specified by your administrator who is notified when a<br />

reviewed change package is closed after being successfully committed to the repository.<br />

Change package watchers may be individually specified or a member of a specified watcher<br />

group.<br />

A super reviewer is a user with permission to vote on change packages, but who is not<br />

required to be a listed reviewer for the change package. Voting as a super reviewer overrides<br />

all other votes. For example, casting an accept vote as a super reviewer is sufficient for<br />

accepting the change package.<br />

For more information on setting up change package reviewers and watchers, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.


How Change Package Review Works<br />

Configuration Management Change Packages<br />

The following summarizes how the change package review process works:<br />

1 The review starts when a developer (change package creator) submits a change package<br />

containing deferred and member lock entries and subproject entries (or any combination<br />

of deferred, pending, or committed entries).<br />

2 <strong>MKS</strong> <strong>Integrity</strong> creates a pending change package entry for each deferred and member<br />

lock entry, and, where necessary, pending revisions.<br />

3 Change package reviewers (possibly a mentor or a senior developer) accept or reject the<br />

change package.<br />

4 The change package entries are either committed to the database (accepted case), or the<br />

developer opens the change package and continues development (rejected case).<br />

NOTE Although the review process describes submitting change packages with<br />

deferred entries thereby creating pending entries, if deferred operations are not<br />

mandatory you can create pending entries at the time the operation is completed by<br />

clearing the deferred option. You can then submit the change package containing<br />

the pending entries for review. Subproject operations are always created as pending<br />

entries in a change package when reviews are mandatory.<br />

Pending Entries<br />

and Revisions<br />

Reviewers<br />

Developer<br />

Submit Change<br />

Package<br />

Accept or Reject<br />

Accept<br />

Change Package review process<br />

Reject<br />

Committed<br />

Open and Work<br />

Repository<br />

Developer<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong> gives full details of the change package review process.<br />

The change package review process is controlled through the use of policies and permissions.<br />

345


Chapter 8: Change Packages<br />

Review Benefits<br />

346<br />

For information on required policies and permissions, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

The benefits of using reviews are:<br />

Reviews provide a formal and enforceable review process.<br />

Reviews force changes to be reviewed before they are committed to the repository<br />

thereby providing control over what changes are accepted into a project by making<br />

operations pending. Unlike deferred operations, which are stored only client side,<br />

pending operations are stored server side and so are visible to all users. This can be<br />

useful near the end of a release cycle as a pre-commit review of changes before they are<br />

included in a release build.<br />

Pending revisions are not a part of the current state of the project until they have been<br />

reviewed (not at member revision); however, they remain in the member history and can<br />

be checked out (without a lock) by users (other than the creator) for review.<br />

If the project is one that users will be building from, reviews can remove the need for<br />

using a variant project to review changes manually.<br />

Reviews provide an alternative to manual post-commit review while recording all of the<br />

review information.<br />

Change Package Review E-mail Notification<br />

By default, e-mail notifications are sent to the change package creator, reviewers, and<br />

watchers when events occur in the review process. <strong>MKS</strong> <strong>Integrity</strong> uses a server-side event<br />

trigger to provide e-mail notifications. The events that trigger an e-mail notification are<br />

described as part of the review workflow in the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

If you are using e-mail notification for change package reviews, ensure that triggers are<br />

enabled in the si.properties file (see “Overview of Configuration Management Triggers”<br />

on page 374).<br />

If you are using LDAP, e-mail addresses are obtained from the realm. Otherwise, e-mail<br />

addresses take the following form (the domain must first be specified in the<br />

env.properties file):<br />

@domain<br />

For e-mail notifications, you can change the following:<br />

who receives e-mail (the reviewer, creator, or watcher)<br />

when users receive e-mail (what events trigger the script)<br />

subject and body content of the e-mail (what information the e-mail contains)


Configuration Management Change Packages<br />

You can modify the trigger events that cause an e-mail notification by editing the following<br />

file:<br />

installdir/data/triggers/events/global.events<br />

For more information on events, see “The syntax for an event is:” on page 375.<br />

You can modify the trigger script by editing the following file:<br />

installdir/data/triggers/scripts/samples/changePackageNotification.js<br />

For more information on scripts provided by <strong>MKS</strong>, see “Sample event triggers are provided<br />

in:” on page 390.<br />

347


Chapter 8: Change Packages<br />

348


C HAPTER NINE<br />

Event Triggers<br />

Using Scripts to Automate Tasks and Calculate Data<br />

9<br />

An event trigger is a block of code that the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> or <strong>MKS</strong> <strong>Integrity</strong> Client<br />

runs when a predefined event occurs. The block of code that runs is called a trigger script.<br />

For example, you could set up an event trigger that sends an e-mail notification to a user<br />

when a user’s lock is downgraded, or changes the assigned user when an item’s state<br />

changes.<br />

This chapter contains the following sections:<br />

“Event Categories” on page 350<br />

“About Trigger Scripts” on page 350<br />

“JavaBeans” on page 354<br />

“Overview of Workflow and Document Triggers” on page 355<br />

“Overview of Configuration Management Triggers” on page 374<br />

“Debugging Configuration Management Client-Side Environment Variables” on<br />

page 392<br />

“Using the <strong>MKS</strong> API in Event Triggers” on page 396<br />

“Running Custom Java Code” on page 397<br />

“Tips and Best Practices” on page 399<br />

349


Chapter 9: Event Triggers<br />

Event Categories<br />

350<br />

An event trigger is an association between a predefined event and the script that is to be<br />

executed when that event occurs. These scripts fall into two categories based on when they<br />

occur and if they modify entries in the database. The two categories are as follows:<br />

Pre-event triggers are executed before the event occurs, for example, they can modify an<br />

item being changed and prevent changes to an item.<br />

Pre-condition triggers are pre-events pertaining to items that exist under the<br />

document model, and operate under the same principles as pre-event triggers.<br />

Post-event triggers are executed after the event occurs, for example, returning<br />

information on items in the database and perform actions such as sending mail, but they<br />

cannot make modifications to items.<br />

About Trigger Scripts<br />

Event triggers are scripted using JavaScript (JavaScript is not the same as Java; however,<br />

trigger scripts do support Java code) and follow the standard established by the European<br />

Computer Manufacturers Association (ECMA) in ECMAScript. Additional information on<br />

ECMAScript is available at the ECMA Web site:<br />

http://www.ecma-international.org/<br />

NOTE Document Object Model (DOM) objects are unsupported in trigger scripts.<br />

JavaScript is used to access JavaBeans on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to work with workflow<br />

and document data, and configuration management data. For more information on<br />

JavaBeans, see “JavaBeans” on page 354.<br />

CAUTION JavaScripts are expressive and allow scripts to perform most operations<br />

that could be programmed using Java. The scripts run under the permissions of the<br />

administrator. The administrator is responsible for ensuring trigger scripts do not<br />

perform any operations that could affect system or file security.


JavaScript Language Elements<br />

About Trigger Scripts<br />

The intent of this section is not to teach JavaScript, as <strong>MKS</strong> recommends that you already be<br />

familiar with JavaScript. This section outlines useful JavaScript language elements commonly<br />

used in trigger scripts.<br />

Variables<br />

JavaScript variables are type independent (integer, floating point, string, etc.) and can hold<br />

Java objects (sets, strings, etc.). Unlike Java, you do not have to declare the type for JavaScript<br />

variables and the type can be reset by simply assigning a different value.<br />

IMPORTANT JavaScript variables are case-sensitive, for example, the variable myvar<br />

is different from myVar. Case sensitivity can be the cause of some trigger file bugs.<br />

To declare a variable, use the following syntax:<br />

var = ;<br />

for example, the variable “i” can be reassigned to the following different types:<br />

var i = 0;<br />

var i = 1.5;<br />

var i = “This is a string”<br />

var i = Packages.com.mks.api.IntegrationPointFactory.getInstance()<br />

Operators<br />

NOTE Many <strong>MKS</strong> Beans return Java objects that can be stored in JavaScript<br />

variables.<br />

Most of the operators used in trigger scripts are similar to other programming languages;<br />

however, there are some slight differences. For example, there is a fundamental difference<br />

between the assignment operator “=“ and the comparison operator “==“. Be careful not to<br />

use “=“ to mean “equal to” in a comparison statement.<br />

TIP The string operator “+” is very useful for constructing error and log messages in<br />

trigger scripts.<br />

351


Chapter 9: Event Triggers<br />

352<br />

The following tables outlines operators used in script triggers:<br />

Arithmetic Operators Comparison Operators<br />

Addition: +<br />

Subtraction: -<br />

Multiplication: *<br />

Division: /<br />

Modulus: %<br />

Increment: ++<br />

Decrement: --<br />

Control Structures<br />

To execute code based on conditions, use the if…else statement, for example:<br />

if (condition) {<br />

// Code to be executed if condition is true<br />

} else {<br />

// Code to be executed if condition is not true<br />

}<br />

To execute code a specified number of times, use the for loop, for example:<br />

for (var=startvalue;var<br />

Greater than or equal to: >=<br />

Less than: <<br />

Less than or equal to:


Control Structures and Functions<br />

About Trigger Scripts<br />

To execute code a specified number of times while a condition is true, use the while loop, for<br />

example:<br />

while (var


Chapter 9: Event Triggers<br />

JavaBeans<br />

354<br />

Exception Handling<br />

To trap errors in trigger scripts, use the try…catch…finally control structure, for example:<br />

where:<br />

try {<br />

// Code to be executed<br />

} catch (error) {<br />

// Code to execute there is an error<br />

} finally {<br />

// Optional – always execute this code<br />

}<br />

The try block contains the code you want to run.<br />

The catch block contains the code you want to run if an error occurs.<br />

The finally block (optional) contains code that always runs before the control structure<br />

ends.<br />

TIP As a best practice, <strong>MKS</strong> recommends using try..catch whenever possible.<br />

A JavaBean is a reusable Java software component (conforming to Sun’s Enterprise JavaBean<br />

specification) used to pass information from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to the trigger script.<br />

Beans are accessed through JavaScript using the lookupBean() function from the Bean<br />

Scripting Framework (BSF). For example:<br />

var envBean = bsf.lookupBean("siEnvironmentBean");<br />

There are different Beans for workflow and document management, and configuration<br />

management information. Deploy specific Beans are included with both types of Beans.<br />

The siEnvironmentBean is used by both types of Beans, even though it starts with “si”.


Overview of Workflow and Document Triggers<br />

Information on available <strong>MKS</strong> Beans is located in the Event Trigger Java Documentation on<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> homepage:<br />

http://localhost:port/documentation/javadocs/triggers/index.html<br />

When writing triggers, refer to the Event Trigger Java Documentation frequently to see what<br />

Beans and methods to use.<br />

Note the following about using the Event Trigger Java documentation:<br />

The lower left frame is a listing of all the available Beans.<br />

LocalTriggerManager Beans are for workflow and document management, and the<br />

rest are a mixture of workflow and document management; configuration management;<br />

and Deploy Beans.<br />

Search for names that contain the command or object you want to work with.<br />

To get the name of a Bean to use in a look up statement, review the documentation for<br />

the Bean’s getExposedName() method.<br />

The Index link at the top of the right frame lists all the methods alphabetically and is<br />

useful to search if you know the first part of a method you want to use.<br />

Overview of Workflow and Document Triggers<br />

Workflow and document event triggers execute in response to an action by the <strong>MKS</strong> <strong>Integrity</strong><br />

Client, and reside on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> where they are executed (client-side triggers<br />

are unsupported).<br />

<strong>Administration</strong> of workflow and document event triggers is performed in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client; however, you can also create, edit, and run them from the CLI. For<br />

more information on managing workflow and document event triggers, see “Using<br />

Workflow and Document Event Triggers” on page 361.<br />

355


Chapter 9: Event Triggers<br />

Workflow and Document Event Categories<br />

356<br />

Workflow and document triggers fall into three categories of events:<br />

Rule based events run because of an action made by a user. The following are some of the<br />

ways you can use rule-based change triggers:<br />

When an item changes to a specified state, iterate over the change packages and<br />

then resync them into the reference tree.<br />

When an item is updated, change a field in a related item.<br />

If an item is in an open state and all of the reverse related items (items pointing to it)<br />

are in a final state, move the item into a final state as well.<br />

For more information on rule based triggers, see “Creating Rule Based Change Triggers”<br />

on page 363.<br />

Scheduled events run in isolation and do not require an action by a user. The following<br />

are some of the ways you can use scheduled triggers:<br />

If the item is in a state and unchanged for a specified length of time, send e-mails to<br />

assigned users and relevant managers.<br />

If the priority is at the maximum level, send an e-mail to the manager.<br />

If a critical item has been in a beginning state for a number of days, send an e-mail to<br />

the project manager.<br />

For more information on scheduled event triggers, see “Creating Scheduled Triggers” on<br />

page 367.<br />

Other events run when:<br />

time entry is changed by a user, for example, when a time entry is changed on an<br />

item, update the payroll system<br />

item tree is copied<br />

item is branched<br />

item is labeled<br />

test result is created, modified, or deleted<br />

For more information on other event triggers, see “Creating Other Triggers” on<br />

page 370.


Key Considerations<br />

Overview of Workflow and Document Triggers<br />

Triggers fire in their position order. If there are two rule-based triggers with the same<br />

rule, the higher position (lower number) trigger fires first. If there are two scheduled<br />

triggers set for the same date and time, the high position (lower number) trigger fires<br />

first.<br />

Triggers have administrator privileges and may override user permissions, but the<br />

history records the changes as having been performed by the user.<br />

If a pre-event trigger modifies or creates another item, the secondary item becomes part<br />

of the transaction. Either all of the modifications made to all of the items succeed or none<br />

do.<br />

To ensure a pre-event trigger does not run more than once, when it has completed, other<br />

secondary triggers are not permitted to obtain that item.<br />

Transactionality of Workflow and Document Event Triggers<br />

The event trigger operation occurs in the following sequence:<br />

Transaction occurs, and a commitment is made that the pre-event trigger will run.<br />

Pre-event trigger runs before any modifications have been made to the database. If an<br />

error occurs (or a trigger veto) in the pre-event trigger, no changes are made to the<br />

database, the transaction is rolled back, and the database is returned to its original state.<br />

All scripts, triggers, and assignments are stopped.<br />

Commit occurs where the change is made to the database.<br />

Post-event trigger runs only after all data has been committed to disk.<br />

357


Chapter 9: Event Triggers<br />

358<br />

Other items can only be modified by running a chain of pre-event triggers. When the server<br />

starts a transaction, the server runs in order: transaction, pre-event trigger chain, commit<br />

transaction, and post-event trigger chain.<br />

NOTE Chains of scheduled triggers run separately from chains of rule-based change<br />

triggers. For more information on rule-based triggers, see “Overview of Workflow<br />

and Document Triggers” on page 355.<br />

If a pre-event trigger attempts to modify another item or create another item, the secondary<br />

item is added to a list of items that become part of the current transaction.<br />

Either all of the modifications made to all of the items must succeed or none of them. This<br />

means any pre-event triggers for the secondary item must also run, and they are subject to<br />

the same rules as the triggers running for the primary item.<br />

To ensure a pre-event trigger does not run more than once, when the pre-event trigger has<br />

completed, other secondary triggers are not permitted to obtain that item again.<br />

All changes made by event triggers bypass the server permission checking. While the history<br />

records all changes as having been performed by the user, the trigger is not required to<br />

conform to the permissions for that end user.<br />

Planning Workflow and Document Triggers<br />

To avoid unpredictable event trigger behavior, plan your event triggers in the following way:<br />

1 Decide if you want to create a trigger that runs on a specific day and time, or a trigger<br />

that runs based on an action by a user.<br />

2 If it is a rule-based trigger decide if it is going to be a pre-event trigger or post-event<br />

trigger.<br />

3 Determine the base tasks the trigger needs to perform, and select the required scripts<br />

from the library.<br />

4 Determine what fields, if any, the trigger will change or what information the trigger<br />

collects from the database.<br />

5 Identify which user permissions are overridden by the trigger and how that affects<br />

security.<br />

6 Identify potential constraint based conflicts, such as mandatory fields for state changes<br />

or closed change package requirements.<br />

Script Library for Workflow and Document Triggers<br />

Workflow and document event triggers use pre-created scripts from a server-side library.<br />

You can modify existing scripts or add new ones to build the library over time.


Overview of Workflow and Document Triggers<br />

<strong>MKS</strong> <strong>Integrity</strong> provides pre-created scripts, which are available in the script library found in:<br />

installdir/data/triggers/scripts<br />

The list of pre-created scripts provided may vary depending on the server implementation of<br />

an organization. Some of the pre-created scripts available include:<br />

assignment.js automatically assigns an item based on a file-driven set of criteria.<br />

signatureRequired.js requires an electronic signature for changes to items. For more<br />

information, see “Setting Up Electronic Signatures” on page 241.<br />

sum.js computes simple metrics through a relationship tree. This trigger is<br />

automatically installed by the Rules panel when editing fields and when a Summation<br />

of Relationship Tree rule is installed.<br />

Coding Workflow and Document Triggers<br />

The following section provides an overview of workflow and document trigger coding. For<br />

detailed information about creating, editing, and managing workflow and document trigger<br />

scripts, see “Using Workflow and Document Event Triggers” on page 361.<br />

Script Description<br />

The initial comment text in a workflow and document trigger script displays on the<br />

Description tab in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client. HTML tags provide additional<br />

formatting.<br />

For example, the following script code:<br />

// <strong>MKS</strong> <strong>Integrity</strong> PRE-Event Trigger<br />

// <br />

// Enforce mandatory fields on a State Transition<br />

// <br />

// Base <strong>MKS</strong> <strong>Integrity</strong> has the notion of a mandatory field; however,<br />

this makes a field mandatory when it is given a state, no matter how<br />

it got into that state.<br />

displays as the following in the Description tab:<br />

<strong>MKS</strong> <strong>Integrity</strong> PRE-Event Trigger<br />

Enforce mandatory fields on a State Transition<br />

Base <strong>MKS</strong> <strong>Integrity</strong> has the notion of a mandatory field; however, this<br />

makes a field mandatory when it is given a state, no matter how it got<br />

into that state.<br />

359


Chapter 9: Event Triggers<br />

360<br />

Script Parameters<br />

Trigger scripts take parameters to promote script reuse, rather than limiting a script by hardcoding<br />

values in it.<br />

Parameter lines are placed after the description code block. Commented lines starting with<br />

@param define the script parameters. The first word after @param is the field type (String,<br />

Boolean, MultiString).<br />

After the field type, the remaining text is the name of the parameter. The parameter name<br />

appears on the Parameters tab in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client. Commented lines<br />

until the next @param or end of comments appear as tooltips for the parameter.<br />

For example, the following script code:<br />

// &param String Mandatory Fields<br />

// Name of the mandatory field, or fields. If a list, then each must<br />

// be separated by commas.<br />

where String is the field type and Mandatory Fields is the parameter name.<br />

displays as:<br />

Field Parameters<br />

To get a list of types, use @param Type:<br />

// @param Type New Type<br />

To get a list of states, use @param State:<br />

// @param State New State<br />

To get a list of fields, use @param Field::<br />

For example, to get a list of relationship fields type:<br />

// @param Field:relationship New Relationship<br />

This prevents introducing typographical errors into trigger parameters and having to look up<br />

type, state, and field names. The syntax for all field types is the field type name (all lowercase<br />

and no spaces), for example, Long Text is “longtext”.


Overview of Workflow and Document Triggers<br />

Referencing Workflow and Document Beans in Trigger Scripts<br />

First, you need to reference the applicable workflow and document Beans you want to use in<br />

your script. Refer to the Event Trigger Java Documentation off the server homepage. Beans<br />

prefaced with LocalTriggerManager are workflow and document Beans.<br />

TIP You can get the name of a Bean by looking at the GetExposedName() method<br />

in the Event Trigger Java Documentation.<br />

Once you know the Bean name, look up the Bean in the trigger script, for example:<br />

var params = bsf.lookupBean(“parametersBean”);<br />

Useful workflow and document Beans include:<br />

ScriptEnvironmentBean<br />

Contains information about the environment in which the script is running.<br />

ScriptParametersBean<br />

Contains any parameters passed to the script.<br />

LocalTriggerManager.Script<strong>Server</strong>Bean<br />

Contains <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> information (types, states, etc.).<br />

LocalTriggerManager.ScriptIssueDeltaBean<br />

Contains item information before a change and after.<br />

Example of a Workflow and Document Trigger<br />

Once you have referenced the necessary Beans, you can begin coding the rest of the trigger<br />

according to your needs. For example, to retrieve and set workflow and document data type<br />

the following:<br />

Save the trigger script to the trigger library installdir/data/triggers/scripts.<br />

Using Workflow and Document Event Triggers<br />

To use workflow and document event triggers, you need to know the following:<br />

361


Chapter 9: Event Triggers<br />

362<br />

“Managing Event Triggers” on page 362<br />

“Creating Event Triggers” on page 363<br />

“Viewing Event Triggers” on page 372<br />

“Editing Event Triggers” on page 372<br />

“Deleting Event Triggers” on page 373<br />

“Resolving Event Triggers” on page 373<br />

Managing Event Triggers<br />

You can manage event triggers from one convenient location. Managing event triggers is<br />

carried out through the Triggers view.<br />

To open the Triggers view, in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client under Workflows<br />

and Documents select Triggers. (For general information about the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client, see “Introduction” on page 10.) The Triggers view displays.<br />

By default, the data filter in the Triggers view displays all existing event triggers. You can<br />

search for a specific event trigger by typing in the text field. For more information, see<br />

“Filtering Data” on page 18.<br />

TIP To show the last run time for a trigger, you can also add a column for the Last<br />

Run Time. To add this column, right click the column header bar, and select Last<br />

Run Time.


You can perform the following tasks:<br />

create a new event trigger that runs:<br />

Overview of Workflow and Document Triggers<br />

by a set of rules (see “Creating Rule Based Change Triggers” on page 363)<br />

on a schedule (see “Creating Scheduled Triggers” on page 367)<br />

whenever a time entry is changed (“Creating Other Triggers” on page 370)<br />

whenever a test result is created, modified, or deleted (“Creating Other Triggers” on<br />

page 370)<br />

copy an event trigger (see “Copying Event Triggers” on page 371)<br />

run a scheduled event trigger (see “Running Scheduled Triggers” on page 371)<br />

edit an event trigger (see “Editing Event Triggers” on page 372)<br />

view an event trigger’s details (see “Viewing Event Triggers” on page 372)<br />

delete an event trigger (see “Deleting Event Triggers” on page 373)<br />

change the order of event trigger resolution (see “Resolving Event Triggers” on<br />

page 373)<br />

NOTE Chains of scheduled triggers run separately from chains of rule-based change<br />

triggers. Consider the order that scheduled triggers are listed in separately from the<br />

order rule-based change triggers are listed in.<br />

Any changes you make in the Triggers view have an immediate effect on your <strong>MKS</strong> <strong>Integrity</strong><br />

database.<br />

Creating Event Triggers<br />

You can create a rule-based event trigger, scheduled event trigger, or time entry event<br />

trigger. Each trigger requires a name and position in addition to the rule or schedule<br />

parameters.<br />

Creating Rule Based Change Triggers<br />

Rule-based change triggers run whenever an item is changed by a user in a manner matching<br />

a defined rule. Any modifications appear as if made by the original user who modified or<br />

created the item that caused the trigger to run.<br />

NOTE When using a trigger to prevent a user action, ensure the trigger displays an<br />

error message to the user and the user has a course of action available.<br />

The general steps required to create a rule-based change trigger are as follows:<br />

1 Select the rule-based change trigger type.<br />

363


Chapter 9: Event Triggers<br />

364<br />

2 Provide a description for the trigger.<br />

3 Define a rule for when the trigger runs.<br />

4 Select a script file from the library for the trigger to run. Then, if required, fill out the<br />

parameters for it.<br />

NOTE Backlashes (\) in parameters are truncated after you save and run the trigger,<br />

for example, in a directory path. To avoid this, use forward slashes (/).<br />

5 Assign values to the fields the trigger modifies when it runs (if the trigger is one that<br />

modifies field values in the database).<br />

Key Considerations<br />

Ensure each field the user is required to update is legally updateable by that user.<br />

If the state of an item is being changed, ensure the state transition is valid.<br />

If the state of an item is being changed and the new state is one that does not allow open<br />

change packages, ensure all of the change packages are closed before the state change is<br />

made.<br />

Ensure all fields that are mandatory for the final state in the workflow contain values.<br />

Validations are performed before any trigger code runs. The pre-event trigger only runs<br />

if all validations are successful. Be aware that the trigger has administrator privileges<br />

and may override the user permissions.<br />

If your rule contains only one condition, you do not need to use And and Or nodes.<br />

If no rule is defined for a rule-based change trigger, the trigger runs every time any user<br />

performs an action on any item in <strong>MKS</strong> <strong>Integrity</strong>.<br />

Pre- and post-options are not available for scheduled triggers.<br />

Scripts listed under the samples directory (for example, samples/<br />

breakLockNotification.js) are for configuration management and are not<br />

applicable to workflow and document management.<br />

To create a rule-based change trigger in the GUI<br />

1 In the Triggers view (see “Managing Event Triggers” on page 362), select Trigger ><br />

Create. The Create Trigger dialog box displays the Type panel.<br />

2 In the Name field, type a name for the new event trigger.<br />

3 Select Rule.<br />

4 To enter a description for the event trigger (optional), click the Description tab. The<br />

Description panel displays.<br />

5 Type a description in the field.


Overview of Workflow and Document Triggers<br />

6 To define a rule for the event trigger, click the Rule tab. The Rule panel displays.<br />

CAUTION If no rule is defined for a rule-based change trigger, the trigger runs every<br />

time any user performs an action on any item in <strong>MKS</strong> <strong>Integrity</strong>.<br />

a) If certain conditions are met, nodes specify if the trigger runs. Select a node option by<br />

clicking a button:<br />

And specifies that all of the conditions specified must be true for the trigger to<br />

run. For example, if an item’s assigned group = documentation and the<br />

project = editor, then the event trigger runs.<br />

Or specifies that one or more of the conditions must be true for the trigger to<br />

run. For example, if an item’s state = submitted or the priority is not equal<br />

to high, then the event trigger runs.<br />

Swap replaces the selected node with the opposite node. For example,<br />

swapping an Or node replaces it with an And node.<br />

Remove deletes the selected node.<br />

NOTE You do not need to use And and Or nodes if your rule contains only one<br />

condition.<br />

b) Under Condition, define the conditions this trigger should run under. For more<br />

information, see “Defining Rules” on page 43.<br />

For example, in a workflow with the states Development > Testing > Release,<br />

you can create a rule-based trigger to perform an action whenever an item is<br />

changed to the Testing state (State=Testing). Another example is to perform an<br />

action every time the assigned user of an item is changed to the specified user, such<br />

as in the following example:<br />

Assigned UserAssigned User<br />

Assigned User=mchang<br />

Using the same workflow of Development > Testing > Release, you could<br />

create a rule-based trigger to perform an action for all items existing in the Testing<br />

state (State=Testing). Another example is to perform an action for all items that<br />

are currently assigned to the specified user (such as, Assigned User=mchang).<br />

For specific use cases pertaining to the creation of pre-condition rules for triggers<br />

that operate on items under document model, see ALM Knowledge Base.<br />

c) To add the condition to the rule, click Add. To replace an existing rule with a new<br />

rule, select the rule in the rules list, then click Replace.<br />

d) To copy a rule from another trigger, under Copy do one of the following:<br />

365


Chapter 9: Event Triggers<br />

366<br />

Click Add to copy notification conditions. The copied conditions are appended<br />

to any existing rules.<br />

Click Replace to copy notification conditions and replace any existing rules.<br />

The Rule Selection dialog box displays.<br />

e) In the Objects with Rules list, select the trigger you want to copy a rule from. If the<br />

trigger has a rule, that trigger displays in the Preview area.<br />

Click OK. The rule displays in the Rule panel.<br />

Repeat as necessary to copy other rules.<br />

7 To select scripts for the new trigger, click the Trigger tab. The Trigger panel displays.<br />

a) To specify the script file or files the event trigger runs when scheduled, do one of the<br />

following:<br />

In the Script File field, enter the name of the JavaScript file. For more than one<br />

file, place a comma between file names.<br />

Click Browse, select a script file from the list in the viewer, and click OK.<br />

Selected scripts display in the Trigger panel.<br />

TIP Press CTRL to multi-select scripts or clear a selection. Multi-selected scripts<br />

appear in the Script field on the Triggers panel delimited by commas.<br />

For information on pre-created JavaScript files see the “Workflow and<br />

document event triggers use pre-created scripts from a server-side library. You<br />

can modify existing scripts or add new ones to build the library over time.” on<br />

page 358.<br />

b) If the trigger is a pre- or post-event, or both, enable the option or options<br />

accordingly.<br />

c) Enter trigger parameters, if any, in the relevant Parameters fields. Point to the field<br />

name to view a tooltip containing more information about the parameter. For<br />

information on the JavaScript files provided with <strong>MKS</strong> <strong>Integrity</strong>, see “Workflow<br />

and document event triggers use pre-created scripts from a server-side library. You<br />

can modify existing scripts or add new ones to build the library over time.” on<br />

page 358.<br />

NOTE Backlashes (\) in parameters are truncated after you save and run the trigger,<br />

for example, in a directory path. To avoid this, use forward slashes (/).


Overview of Workflow and Document Triggers<br />

8 To assign values to specific fields when the event trigger is run, click the Assignment tab.<br />

Depending on the scripts they run, some triggers may not require assignments (for<br />

example, if the assignments are coded in the scripts). The Assignment panel displays.<br />

You can create a list of assignments that occur when the rule matches by specifying a<br />

field and the value the trigger enters in that field when it runs. Standard fields, which are<br />

not writable (such as ID, Type, Created Date, Created By, Modified Date, and Modified By)<br />

and item backed picklist fields with rule-based relationships are not available for<br />

assignments.<br />

NOTE A field can only have one assignment. The last assignment you add to the<br />

Assignment panel is the one that the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> uses. Configuration<br />

management project fields cannot be assigned.<br />

When you select the Assigned User or Assigned Group fields, you can click the<br />

Select button to choose from a full list of users or groups, including inactive ones.<br />

a) From the Field list, select the field name.<br />

b) From the Value list, select a value for the selected field. For detailed information on<br />

choosing values for user or project fields, see “Filtering Data” on page 18.<br />

c) To add the assignment to the list, click Add.<br />

Repeat steps a) and b) for additional assignments. To replace an assignment with a<br />

new one, in the list select the assignment to be replaced, and click Replace.<br />

d) To remove an assignment, select the assignment in the list, and click Delete.<br />

NOTE Assignments made on the Assignments panel occur after any assignments<br />

made by code in the script file are performed.<br />

9 To set the trigger, click OK.<br />

Creating Scheduled Triggers<br />

Scheduled triggers run on a specified schedule against all items matching the specified query.<br />

Any modifications appear as if the user selected in the Run As list made them.<br />

The general steps required to create a scheduled event trigger are as follows:<br />

1 Select the schedule trigger type, and assign a user to be recorded as performing the script<br />

the trigger runs.<br />

2 Provide a description for the trigger.<br />

3 Specify the schedule the trigger runs on.<br />

367


Chapter 9: Event Triggers<br />

368<br />

4 Select an existing query to specify which items the query runs on.<br />

NOTE Because scheduled triggers are based on queries, triggers are subject to<br />

visibility rules. Visibility rules restrict access to specific information based on project<br />

or item type. For more information, see “Setting Workflow and Document Project<br />

Visibility” on page 250 and “Setting Field Visibility for Types” on page 120.<br />

5 Select a script file from the library for the trigger to run, and fill out the parameters for it.<br />

NOTE<br />

Scripts listed under the samples directory (for example, samples/<br />

breakLockNotification.js) are for configuration management and are not<br />

applicable to workflow and document management.<br />

Backlashes (\) in parameters are truncated after you save and run the trigger, for<br />

example, in a directory path. To avoid this, use forward slashes (/).<br />

6 Assign the values to the fields the trigger modifies when it is run (if the trigger is one<br />

that modifies field values in the database).<br />

Key Considerations<br />

All triggers run sequentially. This prevents an increase in the use of server resources<br />

each time a new trigger is added.<br />

Scheduled event triggers are evaluated on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>’s time zone.<br />

Schedules are recomputed after any given run, at system startup, and when the triggers<br />

are changed. If a set of triggers takes longer to run than the next scheduled trigger is set<br />

to run at, the next schedule run of the trigger is missed.<br />

All modified items from a single scheduled trigger are part of one single transaction. If<br />

the trigger fails, no items are modified. Unlike rule-based triggers, since each trigger<br />

operates independently of its own batch of items, each trigger commits the change to the<br />

database independently.<br />

When the server is shut down or the service is stopped, the server does not reschedule<br />

triggers that were not able to run to during that time.<br />

To create a scheduled event trigger in the GUI<br />

1 In the Triggers view (see “Managing Event Triggers” on page 362), select Trigger ><br />

Create. The Create Trigger dialog box displays the Type panel.<br />

2 In the Name field, type a name for the new event trigger.<br />

3 Enable Schedule.


Overview of Workflow and Document Triggers<br />

4 From the Run As list, select the user <strong>MKS</strong> <strong>Integrity</strong> records as performing the action. For<br />

detailed information on selecting users, see “Filtering Data” on page 18.<br />

NOTE You must specify a user in the Run As list or you cannot save the trigger.<br />

5 To enter a description for the event trigger (optional), click the Description tab. The<br />

Description panel displays.<br />

6 Type a description in the field.<br />

7 To define the schedule the trigger runs on, click the Schedule tab. The Schedule panel<br />

displays.<br />

8 Under Frequency, select the frequency the trigger runs on:<br />

Manual disables scheduling of the trigger and can be used with the CLI scheduling.<br />

Use this option to disable a scheduled trigger instead of deleting it.<br />

Hourly runs trigger at a specified point within an hour. In the Start Time field, type<br />

the number of minutes past the hour you want the trigger to run. From the Hourly<br />

On list, select the hour(s) you want the trigger to run. The Hourly On list represents<br />

time in the 24 hour format.<br />

Daily runs the trigger at specified time on selected day(s). Enter a time in the 24 hour<br />

format in the Start Time field. From the Daily On list, select which day(s) you want<br />

the trigger to run on.<br />

Monthly runs the trigger at a specified time and day on selected month(s). Enter a<br />

time in the 24 hour format in the Start Time field. From the Monthly On list, select<br />

which month(s) you want the trigger to run on. From the Day Of Month list, select<br />

the day you want the trigger to run on.<br />

The Last Run Time field displays the date and time the trigger last successfully ran.<br />

9 To specify the items the trigger runs on, click the Query tab. The Query panel displays.<br />

10 Select a query from the list. You cannot save a trigger without selecting a query.<br />

NOTE If you select a query that contains the Me symbolic filter on a user field, the<br />

filter fails and does not match any items.<br />

11 To select scripts for the new event trigger, click the Trigger tab. The Trigger panel<br />

displays.<br />

12 To assign values to specific fields when the event trigger is run, click the Assignment tab.<br />

Depending on the scripts they run, some triggers may not require assignments (for<br />

example, if the assignments are coded in the scripts). The Assignment panel displays.<br />

13 Click OK to finish and save the event trigger.<br />

369


Chapter 9: Event Triggers<br />

370<br />

Creating Other Triggers<br />

In addition to schedule- and rule-based triggers, you can create triggers that run when one of<br />

the following actions occur:<br />

time entry is changed<br />

item tree is copied<br />

item is branched<br />

item is labeled<br />

test result is created, modified or deleted<br />

TIP The triggers for item actions are currently used in the <strong>MKS</strong> Requirements<br />

solution, and are useful for document management. The trigger for test results is<br />

useful for test management.<br />

The general steps required to create another trigger are as follows:<br />

1 Select the other trigger type.<br />

2 Provide a description for the trigger.<br />

3 Select a script file from the library for the trigger to run, and fill out the parameters for it.<br />

NOTE<br />

Scripts listed under the samples directory (for example, samples/<br />

breakLockNotification.js) are for configuration management and are not<br />

applicable to workflow and document management.<br />

Backlashes (\) in parameters are truncated after you save and run the trigger, for<br />

example, in a directory path. To avoid this, use forward slashes (/).<br />

Key Considerations<br />

The Rule, Schedule, Query, and Assignment tabs are not meaningful to other triggers,<br />

and are therefore disabled in the Create Trigger dialog box.<br />

For non-batch processing of time entry triggers, a single time entry PRE event is fired<br />

before each operation, then the operation is performed and committed to the database,<br />

and finally the POST event is fired. In this way, the method used for non-batch<br />

processing of time entries triggers is consistent with the method used for batch<br />

processing.<br />

All operations are available to you in the POST event. For example, if you submit 200<br />

time entry edits, there will be 200 PRE triggers, then the 200 operations will process, and<br />

finally there will be a single POST trigger that references all 200 operations.


Overview of Workflow and Document Triggers<br />

The test results trigger will fire before and after each batch of test result creates, edits,<br />

and deletes. If the test result is modified by the tm setresults command, any creates<br />

(if they exist) will fire a trigger, and any edits (if they exist) will fire another trigger.<br />

To create an other trigger<br />

1 In the Triggers view (see “Managing Event Triggers” on page 362), select Trigger ><br />

Create. The Create Trigger dialog box displays the Type panel.<br />

2 In the Name field, type a name for the new event trigger.<br />

3 Enable Other.<br />

4 From the Run triggers whenever list, select an option.<br />

5 To enter a description for the event trigger (optional), click the Description tab. The<br />

Description panel displays.<br />

6 Type a description in the field.<br />

7 To select scripts for the new trigger, click the Trigger tab. The Trigger panel displays.<br />

8 Click OK to finish and save the event trigger.<br />

Copying Event Triggers<br />

You can copy an event trigger to create a new event trigger. Copying an event trigger is<br />

useful for quickly creating a new event trigger that shares common details with an existing<br />

event trigger.<br />

When naming a copied event trigger, you cannot use a name that already exists.<br />

To copy an event trigger in the GUI<br />

1 In the Triggers view (see “Managing Event Triggers” on page 362), select Trigger > Copy.<br />

The Copy Trigger dialog box displays the Type panel (if you are copying a non scheduled<br />

trigger) or the Schedule panel (if you are copying a scheduled trigger).<br />

2 In the Name field, type a new name for the event trigger.<br />

3 Edit the trigger as required. For more information see the following:<br />

“Creating Rule Based Change Triggers” on page 363<br />

“Creating Scheduled Triggers” on page 367<br />

“Creating Other Triggers” on page 370<br />

4 To save your changes, click OK.<br />

Running Scheduled Triggers<br />

Once you have created a scheduled trigger, you can run it. You can only run scheduled<br />

triggers manually by this method.<br />

371


Chapter 9: Event Triggers<br />

372<br />

To run a scheduled trigger in the GUI<br />

1 From the Triggers view, select the event trigger(s) you want to run. For more<br />

information on the Triggers view, see “Managing Event Triggers” on page 362.<br />

2 Select Trigger > Run, the scheduled trigger runs.<br />

Viewing Event Triggers<br />

You can view the details of an event trigger without making the trigger editable. The details<br />

of the event trigger can be viewed through the Triggers view. When in view mode, you<br />

cannot change any of the information for the selected trigger.<br />

NOTE If the trigger you are viewing is based on a query that is invisible to you, the<br />

query does appear in the Query list. However, this query is not available when you<br />

are creating a trigger.<br />

To view an event trigger in the GUI<br />

1 From the Triggers view, select the event trigger you want to view. For more information<br />

on the Triggers view, see “Managing Event Triggers” on page 362.<br />

2 Select Trigger > View Definition. The View Trigger dialog box displays.<br />

3 Click a tab to view its contents.<br />

4 To finish, click Close.<br />

Editing Event Triggers<br />

You can edit the details of a workflow and document event trigger through the Triggers<br />

view.<br />

NOTE<br />

If the trigger you are editing is based on a query that is a non-favorite, the query<br />

appears in the Query list. However, this query is not available when you are<br />

creating a trigger.<br />

Inactive values are not accepted in trigger assignments. If you specify inactive<br />

values for a trigger assignment containing existing user, group, or project field<br />

values, the existing values are cleared. For multi-valued user and group fields,<br />

the entire trigger assignment definition is cleared even if you specified one<br />

inactive value.<br />

To edit an event trigger in the GUI<br />

1 From the Triggers view, select the event trigger you want to edit. For more information<br />

on the Triggers view, see “Managing Event Triggers” on page 362.<br />

2 Select Trigger > Edit. The Edit Trigger dialog box displays.


Overview of Workflow and Document Triggers<br />

3 Select a tab to edit its contents. For more information, see “Creating Rule Based Change<br />

Triggers” on page 363 and see “Creating Scheduled Triggers” on page 367.<br />

4 To determine all objects that reference the field, click the References tab. For information<br />

on the contents of the tab, see “To manage admin provided objects in the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client” on page 244.<br />

5 To finish and save the changes, click OK.<br />

Deleting Event Triggers<br />

When a workflow and document event trigger is no longer needed, you can delete it in the<br />

Triggers view.<br />

IMPORTANT If you delete a relationship field used in a rule-based trigger, the field<br />

associated with the relationship field and rule trigger are automatically deleted.<br />

To delete an event trigger in the GUI<br />

1 From the Triggers view, select the event trigger you want to delete. For more<br />

information on the Triggers view, see “Managing Event Triggers” on page 362.<br />

2 Select Trigger > Delete. The Confirm Trigger Deletion dialog box displays.<br />

CAUTION You cannot undo deletion of an event trigger.<br />

3 To delete the event trigger, click Yes.<br />

Resolving Event Triggers<br />

You can change the order of event trigger resolution, that is, which event triggers run first, by<br />

changing the order they appear in the list.<br />

NOTE All pre-event triggers must complete first before any post-event triggers can<br />

run.<br />

To change the resolution order of event triggers in the GUI<br />

1 From the Triggers view, select Trigger > Reposition. The Reposition Triggers dialog box<br />

displays.<br />

2 Do one of the following:<br />

To run the event trigger before other triggers, click Move Up the necessary number of<br />

times.<br />

To run the event trigger after other triggers, click Move Down the necessary number<br />

of times.<br />

373


Chapter 9: Event Triggers<br />

Overview of Configuration Management Triggers<br />

374<br />

A configuration management event trigger is an association between a pre-defined<br />

configuration management event and the script that is to be executed when that event occurs.<br />

Configuration management triggers run on the following:<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> (server-side)<br />

For more information on server-side triggers, see “Overview of Configuration<br />

Management <strong>Server</strong>-Side Triggers” on page 374.<br />

<strong>MKS</strong> <strong>Integrity</strong> Client (client-side)<br />

For more information on client-side triggers, “Overview of Configuration Management<br />

Client-Side Triggers” on page 383.<br />

Overview of Configuration Management <strong>Server</strong>-Side Triggers<br />

Configuration management server-side triggers execute in response to an action on the<br />

<strong>MKS</strong> <strong>Integrity</strong> Client, and reside on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> where they are executed.<br />

<strong>Server</strong>-side triggers are administered through the file system of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> and<br />

are enabled by default through Configuration Management > Configuration > Properties in the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

Some uses for configuration management server-side triggers include:<br />

Send an e-mail to the change package creator, reviewer, or watcher if change package<br />

review is enabled<br />

Apply a label to a revision with the name of the user who checked in the revision<br />

Prevent users from adding members of a certain file type<br />

Ensure change package entries occur on the same development path for a change<br />

package<br />

Send an e-mail to the configuration management administrator when configuration<br />

management projects or subprojects are added or dropped<br />

Configuration Management Event Categories<br />

An event is a defined point in configuration management operation. The four categories of<br />

events connected with configuration management operations are:<br />

member<br />

configuration management project<br />

revision


Member Events<br />

server<br />

Overview of Configuration Management Triggers<br />

By default, the global.events definition file is contained in the following directory:<br />

installdir/data/triggers/events<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

NOTE If the events directory contains more than one global.events definition<br />

file, all files are loaded. If the files contain identical events, the values in the last read<br />

file are used.<br />

You can change the directory by editing the following property under Configuration<br />

Management > Configuration > Properties in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client:<br />

mksis.si.triggers.events<br />

For more information on the events definition file, see “To update the global events definition<br />

template” on page 383.<br />

The syntax for an event is:<br />

..<br />

for example:<br />

Member.freeze.pre<br />

Project.importSubproject.post<br />

The following tables list the events in each category:<br />

freeze.pre freeze.post<br />

thaw.pre thaw.post<br />

setAttribute.pre setAttribute.post<br />

dropAttribute.pre dropAttribute.post<br />

lockRevision.pre lockRevision.post<br />

unlockRevision.pre unlockRevision.post<br />

checkIn.pre checkIn.post<br />

checkOut.pre checkOut.post<br />

setMemberRevision.pre setMemberRevision.post<br />

rename.pre rename.post<br />

setrule.pre setrule.post<br />

clearrule.pre clearrule.post<br />

375


Chapter 9: Event Triggers<br />

Project Events<br />

376<br />

checkpoint.pre checkpoint.post<br />

restore.pre restore.post<br />

addMember.pre addMember.post<br />

dropMember.pre dropMember.post<br />

moveMember.pre moveMember.post<br />

newSubproject.pre newSubproject.post<br />

importSubproject.pre importSubproject.post<br />

configureSubproject.pre configureSubproject.post<br />

dropSubproject.pre dropSubproject.post<br />

moveSubproject.pre moveSubproject.post<br />

newVariant.pre newVariant.post<br />

deleteVariant.pre deleteVariant.post<br />

setDescription.pre setDescription.post<br />

dropProjectAttribute.pre dropProjectAttribute.post<br />

setProjectAttribute.pre setProjectAttribute.post<br />

Revision Events<br />

promoteTo.pre promoteTo.post<br />

demoteTo.pre demoteTo.post<br />

addLabel.pre addLabel.post<br />

deleteLabel.pre deleteLabel.post<br />

appendToDescription.pre appendToDescription.post<br />

<strong>Server</strong> Events<br />

newProject.pre newProject.post<br />

importProject.pre importProject.post<br />

dropProject.pre dropProject.post<br />

submitChangePackage.pre submitChangePackage.post<br />

acceptChangePackage.pre acceptChangePackage.post<br />

rejectChangePackage.pre rejectChangePackage.post<br />

closeChangePackage.pre closeChangePackage.post


<strong>Server</strong> Events<br />

Overview of Configuration Management Triggers<br />

commitChangePackage.pre commitChangePackage.fail<br />

commitChangePackage.post<br />

discardChangePackage.pre discardChangePackage.post<br />

discardChangePackageEntry.pre discardChangePackageEntry.post<br />

moveChangePackageEntry.pre moveChangePackageEntry.post<br />

<strong>Server</strong>.archivemetric.manual<br />

<strong>Server</strong>.projectmetric.manual<br />

<strong>Server</strong>.setarchivemetric.manual<br />

<strong>Server</strong>.setprojectmetric.manual<br />

Deploy Events<br />

These events are only applicable if you are licensed to use Deploy. For more information, see the <strong>MKS</strong> Deploy <strong>2009</strong><br />

<strong>Administration</strong> <strong>Guide</strong>.<br />

Project.promoteChangePackage.pre Project.promoteChangePackage.fail<br />

Project.promoteChangePackage.post<br />

Project.deployChangePackage.pre Project.deployChangePackage.fail<br />

Project.deployChangePackage.post<br />

Project.undeployChangePackage.pre Project.undeployChangePackage.fail<br />

Project.undeployChangePackage.post<br />

Project.cancelDeployRequest.pre Project.cancelDeployRequest.post<br />

Project.deleteDeployRequest.pre Project.deleteDeployRequest.post<br />

Project.editDeployRequest.pre Project.editDeployRequest.post<br />

Project.startDeployRequest.pre Project.startDeployRequest.post<br />

Project.stopDeployRequest.pre Project.stopDeployRequest.post<br />

Project.initDeployTarget.pre Project.initDeployTarget.post<br />

Project.syncDeployTarget.pre Project.syncDeployTarget.post<br />

Project.restoreStage.pre Project.restoreStage.post<br />

Project.deployRequestStateChange.post<br />

Project.deployTargetConnectionStatusChange.post<br />

377


Chapter 9: Event Triggers<br />

378<br />

Configuration Management Commands<br />

The following tables list the available configuration management commands and their<br />

associated event identifiers under the four categories of events:<br />

Member Command Member Event Identifier<br />

si freeze Member.freeze<br />

si thaw Member.thaw<br />

si addmemberattr Member.setAttribute<br />

si dropmemberattr Member.dropAttribute<br />

si lock Member.lockRevision<br />

si unlock Member.unlockRevision<br />

si ci Member.checkIn<br />

si co Member.checkOut<br />

si updaterevision Member.setMemberRevision<br />

si rename Member.rename<br />

si setmemberrule Member.setrule<br />

Member.clearrule<br />

Project Command Project Event Identifier<br />

si checkpoint Project.checkpoint<br />

si restore Project.restore<br />

si add Project.addMember<br />

si drop Project.dropMember<br />

si move Project.moveMember<br />

si createsubproject Project.newSubproject<br />

si createsubproject Project.importSubproject<br />

si movesubproject Project.moveSubproject<br />

si drop Project.dropSubproject<br />

si createdevpath Project.newVariant<br />

si dropdevpath Project.deleteVariant<br />

si setprojectdescription Project.setDescription<br />

si dropprojectattr Project.dropProjectAttribute


Project Command Project Event Identifier<br />

Overview of Configuration Management Triggers<br />

si setprojectattr Project.setProjectAttribute<br />

si applycp various identifiers, depending on the required operations<br />

Revision Command Revision Event Identifier<br />

si promote --state= Revision.promoteTo<br />

si promote (no state specified) Revision.promoteFrom<br />

si demote --state= Revision.demoteTo<br />

si demote (no state specified) Revision.demoteFrom<br />

si addlabel Revision.addLabel<br />

si deletelabel Revision.deleteLabel<br />

si appendrevdesc Revision.appendToDescription<br />

<strong>Server</strong> Command <strong>Server</strong> Event Identifier<br />

si createproject <strong>Server</strong>.newProject<br />

si importproject <strong>Server</strong>.importProject<br />

si droppproject <strong>Server</strong>.dropProject<br />

si submitcp <strong>Server</strong>.submitChangePackage<br />

si acceptcp <strong>Server</strong>.acceptChangePackage<br />

si rejectcp <strong>Server</strong>.rejectChangePackage<br />

si closecp <strong>Server</strong>.closeChangePackage<br />

si discardcp <strong>Server</strong>.discardChangePackage<br />

Discard Change Package Entry <strong>Server</strong>.discardChangePackageEntry<br />

Move Change Package Entry <strong>Server</strong>.moveChangePackageEntry<br />

Transactionality of Configuration Management Event Triggers<br />

The operation of server-side triggers occurs in the following sequence:<br />

1 <strong>MKS</strong> <strong>Integrity</strong> Client initiates a command that will run on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

2 Before event begins, pre-event is posted.<br />

3 Event occurs.<br />

4 <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> polls its registry of events to determine if the event has an<br />

associated script.<br />

379


Chapter 9: Event Triggers<br />

380<br />

5 If script is found, the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> executes the resolved script.<br />

6 Command executes.<br />

7 If command succeeds, post-event is posted.<br />

An event trigger is executed either prior to an event or after the event. Pre-test event triggers<br />

are executed before the command is executed and are most useful for preventing transactions<br />

if particular conditions are not met. For example, a pre-test trigger could prevent state<br />

changes if no label has been added to the member.<br />

Post-test event triggers are executed after an event is successfully committed and are most<br />

useful for combining actions. For example, after the successful check in of a revision, a posttest<br />

event trigger could apply the label with the name of the user who checked in the revision.<br />

Event Trigger Contexts<br />

Configuration management has two contexts for event triggers: global and project.<br />

All server-side triggers are configured on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Each context contains<br />

JavaScript elements that define the event triggers. Each type of event trigger can be created<br />

and maintained independent of the other. This means you can define different event triggers<br />

for the same events in different projects, or you can define event triggers that apply globally<br />

within your environment.<br />

Global Context<br />

NOTE When working with shared subprojects, <strong>MKS</strong> <strong>Integrity</strong> uses the actual name<br />

of the subproject in the file system rather than its relative name in the configuration<br />

management project hierarchy. This enhances the portability of change packages<br />

across different configuration management projects. Therefore, when returning<br />

query information resulting from a script, <strong>MKS</strong> <strong>Integrity</strong> uses the actual file system<br />

name of the shared subproject.<br />

Global event triggers are available and active for all configuration management operations.<br />

As administrator, you use the global context for any JavaScript elements used to define<br />

additional procedures for all configuration management users.<br />

Project Context<br />

Configuration management project event triggers are established within a project events file.<br />

The project context is generally used for project-specific configuration processes. Event<br />

triggers in this context generally add to, but do not override, event triggers defined in the<br />

global context. The project context is active when either the project or a Sandbox based on the<br />

project is active.<br />

NOTE Configuration management events not available in the project context are:<br />

New Project, Import Project, and Drop Project.


Subproject Event Triggers<br />

Overview of Configuration Management Triggers<br />

You can also set up event triggers to run within the context of a configuration management<br />

subproject. This allows you to run an event trigger only on a selected subproject, without<br />

requiring that the trigger also be defined for the master project.<br />

To configure event triggers to run on a subproject<br />

1 From the installdir/data/triggers directory, copy the project_template.events<br />

file to:<br />

installdir/data/triggers/events<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

2 In the events folder, rename the project_template.events file to represent the<br />

target subproject, for example, Aurora_Frame_Sub.events.<br />

3 In that file, set the path of the subproject in variable event.projectPath, for example,<br />

event.projectPath=c:/Aurora/Frame/project.pj.<br />

4 Define the script to run on a specific event. For example,<br />

Project.checkpoint.pre=samples/echo.js<br />

sets echo.js to run on a project checkpoint pre-event.<br />

5 Save the revised .events file. The subproject trigger runs for the identified subproject.<br />

Trigger Resolution<br />

<strong>MKS</strong> <strong>Integrity</strong> resolves configuration management event triggers according to the resolution<br />

order configured through Configuration Management > Configuration ><br />

Properties in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client. For example, if the order is<br />

global,projects, the global events file is searched for scripts, followed by the projects<br />

event file. When <strong>MKS</strong> <strong>Integrity</strong> finds a script with a matching name, it runs the script.<br />

NOTE You can also leave out one or both of the global/project contexts. Leaving out<br />

one context means that the related events are never executed. Leaving out both<br />

contexts effectively disables event triggers.<br />

<strong>MKS</strong> <strong>Integrity</strong> is pre-configured to first resolve global event triggers followed by project<br />

event triggers. The property is:<br />

mksis.si.triggers.resolutionOrder=global;project<br />

The default setting can be reconfigured to suit your environment.<br />

381


Chapter 9: Event Triggers<br />

382<br />

Components of Event Triggers<br />

Creating a configuration management event trigger requires three primary components:<br />

Properties (mksis.si.triggers) in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client:<br />

Configuration Management > Configuration > Properties<br />

to configure <strong>MKS</strong> <strong>Integrity</strong> so that event triggers may take place. The properties define<br />

the directories for both the events definition files and event trigger scripts.<br />

Events definition files listing all events defined in <strong>MKS</strong> <strong>Integrity</strong> and mapping events to<br />

trigger scripts. The default directory for the events definition file is:<br />

installdir/data/triggers/events<br />

Event trigger scripts developed in JavaScript and, by default, located in:<br />

installdir/data/triggers/scripts<br />

Updating Events Definition File<br />

Events definition files are used to specify which scripts to run for a particular event or events.<br />

The events definition file essentially attaches the script to the event. The file follows the<br />

format of a Java properties file and includes configuration keys to indicate the context of the<br />

events, as well as a key for each event addressed by the specified context:<br />

In the global context, the required configuration key is:<br />

event.context=global<br />

where the event context is defined as global.<br />

In the configuration management project context, the required configuration keys are:<br />

event.context=project<br />

event.projectPath=/project.pj<br />

where the event context is project and the path to the specific project is also defined.<br />

Use forward slashes (/)when specifying a project path.<br />

For both global and project contexts, the event key is a comma-delimited list of scripts<br />

for each event addressed by the specified context. The syntax is:<br />

context.operation.pre/post=event.js,event.js<br />

where<br />

context is archive, member, project, revision, or server<br />

operation is the actual configuration management operation, for example, checkIn,<br />

checkOut, setAttribute, or checkpoint (for a complete list of configuration<br />

management events, see “The syntax for an event is:” on page 375)


Overview of Configuration Management Triggers<br />

pre/post indicates whether the script is run before or after the event<br />

An example of a completed event key is:<br />

Member.thaw.pre=projectEvent.js,ethawTest.js<br />

NOTE You cannot use configuration management events New Project,<br />

Import Project, and Drop Project in the project context.<br />

To update the global events definition template<br />

1 Open the default directory for the global events definition template:<br />

installdir/data/triggers/global_template.events<br />

2 Copy the global template file to:<br />

installdir/data/triggers/events<br />

3 Add the script names for the event triggers you want to run.<br />

To update the project events definition template<br />

1 For each project requiring event triggers, make a copy of the project template in:<br />

installdir/data/triggers/events<br />

2 Set .projectPath to the fully qualified path of the target project.<br />

3 Add the script names for the event triggers you want to run.<br />

Restarting <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

Once you have created the event triggers and updated the events definition file, you can<br />

restart the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to have the triggers take effect immediately.<br />

For more information on running the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

Overview of Configuration Management Client-Side Triggers<br />

As an administrator, you can configure event triggers that run on the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

rather than on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Client-side triggers are run only for members and<br />

for project level commands that operate on members. Client-side triggers do not run on<br />

383


Chapter 9: Event Triggers<br />

384<br />

commands that operate on directories, configuration management projects, Sandboxes, or<br />

change packages.<br />

IMPORTANT Client-side triggers run on the <strong>MKS</strong> <strong>Integrity</strong> Client and in the client’s<br />

environment; therefore, they are subject to the client’s control. For example, a user<br />

could adjust the PATH environment variable on the client such that when an<br />

external command runs it is not found. For consistent and secure results, <strong>MKS</strong><br />

recommends you use server-side triggers.<br />

Some of the uses for client-side triggers include:<br />

Display Sandbox information before adding a label<br />

Post a reminder to add a revision description when checking in a member<br />

Launch a text editor when a member is checked out<br />

Post a reminder to notify team members of significant changes are checked in<br />

Confirm that each .JAVA file has a corresponding .CLASS file in a user’s Sandbox<br />

Client-side triggers run only on member commands, therefore only project commands<br />

that operate on members can be used<br />

Pre and Post Processing in Client Sandbox<br />

Client-side event triggers allow for pre- and post-processing in the client Sandbox. This<br />

allows clients to run external commands within the client, both before and after each member<br />

of a selection is processed for a given command.<br />

NOTE If a pre-trigger has a non-zero exit status, the operation is canceled.<br />

Trigger Syntax<br />

To configure a client-side event trigger, properties are added to the Configuration<br />

Management policies in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client using the following syntax:<br />

si..pre=<br />

si..post=<br />

si.trigger..command=<br />

si.trigger..group=<br />

si.trigger..match=<br />

NOTE List elements can be delimited by spaces, commas, or semicolons.


Overview of Configuration Management Triggers<br />

The following is an example of the required properties for a pre- and post-trigger that works<br />

when a branch is merged:<br />

si.MergeBranch.pre=merge_pre<br />

si.trigger.merge_pre.command=sh -w -c 'echo After merging the branch,<br />

please update the MergedBranches.txt file with the date and reason<br />

for the merge.'<br />

si.MergeBranch.post=merge_post<br />

si.trigger.merge_post.command=sh -w -c 'vi c:/MergedBranches.txt'<br />

You can create triggers that apply only for members of a specific group. If the user running<br />

the command is not a member of one of the specified groups, the trigger cannot execute when<br />

the user runs the command. The specified group must be a valid group on your server<br />

system using the server realm. To specify groups, append the following property to the<br />

trigger properties:<br />

si.trigger..group=<br />

for example:<br />

si.trigger.merge_post.group=BuildTeam<br />

You can also create triggers for certain classes of files using matching. A list of one or more<br />

file name matching patterns can be set. If the member under consideration matches the<br />

pattern, the trigger runs. To specify glob patterns, append the following property to the<br />

trigger properties:<br />

si.trigger..match=<br />

for example:<br />

si.trigger.merge_post.match=*.c,*.java<br />

Target Commands<br />

Client-side triggers run only on commands that operate at the member level. The first table<br />

lists configuration management project commands that operate on members, including<br />

commands launched from the Configuration Management Web client. The second table lists<br />

the applicable member commands.<br />

NOTE The si echo command is available for echoing strings to the GUI.<br />

Configuration Management Project Commands for Members<br />

Project Command Command Expression<br />

si add AddMembers<br />

si dropproject DropProjectTypeElement<br />

si edit EditCurrentOrFormerProjectTypeElements<br />

si import ImportMembers<br />

385


Chapter 9: Event Triggers<br />

386<br />

Configuration Management Project Commands for Members<br />

Project Command Command Expression<br />

si mergebranch MergeBranch<br />

si add ProjectAddMembers<br />

si ci ProjectCheckInMembers<br />

si co ProjectCheckOutMembers<br />

si promote PromoteMembers<br />

si resync ResyncCurrentOrFormerProjectTypeElements<br />

si revert RevertCurrentOrFormerProjectTypeElements<br />

si submit SubmitCurrentOrFormerProjectTypeElements<br />

Member Commands<br />

Member Command Command Expression<br />

si addlabel AddLabel<br />

si addmemberattr AddMemberAttribute<br />

si archiveinfo ArchiveInformationView<br />

si print ArchivePrintView<br />

si report ArchiveReportView<br />

si appendrevdesc AppendRevisionDescription<br />

si ci CheckInMembers<br />

si co CheckOutMembers<br />

si deletelabel DeleteLabel<br />

si deleterevision DeleteRevisionsOfMembers<br />

si demote DemoteMembers<br />

si diff DiffMembers<br />

si dropmemberattr DropMemberAttribute<br />

si freeze FreezeMember<br />

si viewlabels LabelsView<br />

si lock LockRevisionOfMember<br />

si makewritable MakeWritable<br />

si memberinfo MemberInformationView<br />

si viewhistory MemberView


To add client-side trigger information to the si.policy file<br />

Overview of Configuration Management Triggers<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, open the Configuration Management<br />

directory tree, and highlight Policies. The Global Policies section displays in the right<br />

pane.<br />

2 Select Policies > Edit. The Global Policies editor displays.<br />

3 Click the Other tab and enter the client-side trigger information in the text box. For<br />

example, the following shows the information entered to post a notification reminder for<br />

the development group.<br />

4 To save the changes, click OK. The client-side trigger is set on the server.<br />

Environment Variables<br />

Member Commands<br />

Member Command Command Expression<br />

si rename RenameMember<br />

si viewrevision RevisionContentsView<br />

si revisioninfo RevisionInformationView<br />

si thaw ThawMember<br />

si unlock UnlockRevisionOfMember<br />

si updaterevision UpdateRevisionOfMembers<br />

si updatearchive UpdateArchiveAttributesOfMembers<br />

When configuring client-side triggers, you can also use certain environment variables to<br />

define the object the trigger is operating on. The environment variables used for client-side<br />

triggers are similar to those used for user toolbar commands.<br />

387


Chapter 9: Event Triggers<br />

388<br />

For client-side triggers, you can use the following environment variables to determine the<br />

object the trigger is operating on.<br />

Environment Variable Function<br />

<strong>MKS</strong>SI_COMMAND=si. <strong>MKS</strong>SI_COMMAND always set to command running. For<br />

example, for add member command environment<br />

variable is:<br />

<strong>MKS</strong>SI_COMMAND=si.AddMember<br />

<strong>MKS</strong>SI_WINDOW=trigger <strong>MKS</strong>SI_WINDOW=trigger always set to indicate<br />

operation runs from trigger.<br />

<strong>MKS</strong>SI_TRIGGER_TYPE=pre|post <strong>MKS</strong>SI_TRIGGER_TYPE= set to one or<br />

other keyword to indicate whether trigger running due to<br />

a pre- or post-event. For example:<br />

<strong>MKS</strong>SI_TRIGGER_TYPE=post<br />

indicates trigger running due to post event.<br />

<strong>MKS</strong>SI_UI=cli|gui|web <strong>MKS</strong>SI_UI set to one of keywords to indicate type of<br />

user interface. For example:<br />

<strong>MKS</strong>SI_UI=gui<br />

indicates GUI used.<br />

<strong>MKS</strong>SI_FILE=filepath-relative-to-project/<br />

sandbox-of-a-member<br />

<strong>MKS</strong>SI_WORKINGFILE=full-path-to-workingfile-for-a-member<br />

<strong>MKS</strong>SI_FILE set to file path of member relative to<br />

configuration management project or Sandbox for<br />

member, for example:<br />

<strong>MKS</strong>SI_FILE=baseframe.c<br />

<strong>MKS</strong>SI_WORKINGFILE set to full path of working file for<br />

member whenever operation occurs in Sandbox and<br />

working file exists, for example:<br />

<strong>MKS</strong>SI_WORKINGFILE=c:\auroraSB\sh\<br />

baseframe.c<br />

<strong>MKS</strong>SI_SANDBOX=full-path-to-sandbox <strong>MKS</strong>SI_SANDBOX set to full path of Sandbox whenever<br />

operation occurs in Sandbox. Sample output for<br />

operation running in Sandbox:<br />

<strong>MKS</strong>SI_SANDBOX=c:\auroraSB\sh\project.pj<br />

<strong>MKS</strong>SI_PROJECT=server-path-to-project <strong>MKS</strong>SI_PROJECT set to server path to configuration<br />

management project. Sample output for server path to<br />

project:<br />

<strong>MKS</strong>SI_PROJECT=c:/aurora/sh/project.pj<br />

<strong>MKS</strong>SI_VARIANT=project-variant-name <strong>MKS</strong>SI_VARIANT indicates operation runs for specific<br />

configuration management project variant. Sample<br />

output for operation running for Aurora_Variant project:<br />

<strong>MKS</strong>SI_VARIANT=Aurora_Variant<br />

<strong>MKS</strong>SI_BUILD=project-build-revision-<br />

number<br />

<strong>MKS</strong>SI_BUILD indicates operation runs for specific<br />

build revision number. Sample output for operation<br />

running for build revision number 1.5.1.1:<br />

<strong>MKS</strong>SI_BUILD=1.5.1.1


Environment Variable Function<br />

Sample Configuration Using Environment Variables<br />

Overview of Configuration Management Triggers<br />

<strong>MKS</strong>SI_PROJECT_TYPE=sandbox|project <strong>MKS</strong>SI_PROJECT_TYPE sets one or other keyword to<br />

indicate whether operation runs in Sandbox or<br />

configuration management project. Sample output for<br />

operation running in Sandbox:<br />

<strong>MKS</strong>SI_PROJECT_TYPE=sandbox<br />

<strong>MKS</strong>SI_PRESENTER=interface-presenter <strong>MKS</strong>SI_PRESENTER set to open presenter for<br />

command running, whether through the GUI or CLI.<br />

Value for <strong>MKS</strong>SI_PRESENTER only relevant to<br />

--presenter name option.<br />

The following example shows how you can use an environment variable with a client-side<br />

trigger. The example shows a trigger implemented on the Add Member command (si add).<br />

Each time a member is added to a configuration management project, the trigger opens the<br />

member working file in a vi text editor:<br />

si.AddMembers.post=AMpost<br />

si.trigger.AMpost.command=sh -c "vi $<strong>MKS</strong>SI_WORKINGFILE"<br />

Planning Configuration Management Triggers<br />

To avoid unpredictable event trigger behavior, plan your event triggers in the following way:<br />

1 First choose the scope of the event trigger<br />

a) Event triggers that you want to apply to all operations should be set in the global<br />

context.<br />

b) Event triggers that are related only to a specific configuration management project<br />

should be set in the project context.<br />

2 Decide whether your event triggers should occur as a pre-event or post-event.<br />

a) Pre-event triggers can return a code that indicates the operation should not proceed<br />

and are therefore most applicable for events that you want to prevent.<br />

b) Post-event triggers are more useful for logging information on a successful<br />

operation or for performing linked operations. The post-event trigger executes<br />

regardless of whether the event was successful, but the administrator has access to<br />

any logged information.<br />

NOTE Scripts provide significant flexibility in creating event triggers. You can use<br />

one script for more than one event. For the same event you can also point to a script<br />

in the global context and another script in the configuration management project<br />

context.<br />

389


Chapter 9: Event Triggers<br />

390<br />

3 Consider the following:<br />

Be aware of system security. JavaScript event triggers are expressive and run on the<br />

server under the permissions of the administrator. Event triggers therefore have the<br />

potential to affect file and system security.<br />

Limit event triggers to only those things you believe to be beneficial to your<br />

environment. Event triggers affect the duration of the command from the client’s<br />

perspective and therefore have the potential to degrade performance.<br />

NOTE The <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> can process commands in parallel—a feature that<br />

allows users to initiate a second command even if the first has not completed.<br />

Instead of having a script for each configuration management event, you could have<br />

a script for a group of configuration management events. Then in that script,<br />

execute different code depending on which event has fired (the event that fired the<br />

trigger can be retrieved from a Bean).<br />

Script Library for Configuration Management Triggers<br />

<strong>MKS</strong> <strong>Integrity</strong> provides some pre-created configuration management triggers scripts that can<br />

be used “out-of-the-box”.<br />

Sample event triggers are provided in:<br />

installdir/data/triggers/scripts/samples<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

The list of pre-created scripts provided may vary depending on the server implementation of<br />

an organization. Some of the pre-created scripts available include:<br />

breakLockNotification.js – send an e-mail to a user if their lock has been removed<br />

or downgraded by another user.<br />

enforceRevisionDescription.js – enforce revision descriptions.<br />

metrics.js – calculate metrics for a configuration management project.<br />

Referencing Configuration Management Beans in Trigger Scripts<br />

First, you need to reference the applicable Beans you want to use in your script. Refer to the<br />

Event Trigger Java Documentation off the server homepage. Beans prefaced with si are<br />

configuration management Beans.<br />

TIP You can get the name of a Bean by looking at the GetExposedName() method<br />

in the Event Trigger Java Documentation.


Overview of Configuration Management Triggers<br />

Once you know the Bean name, look up the Bean in the trigger script, for example:<br />

var envBean = bsf.lookupBean(“siEnvironmentBean”);<br />

Useful configuration management Beans include:<br />

ScriptEnvironmentBean<br />

Contains information about the environment in which the script is running.<br />

Script<strong>Server</strong>Bean<br />

Contains information about the configuration management server.<br />

ScriptCheckInArgumentsBean<br />

Contains information about the member being checked in.<br />

ScriptMemberBean<br />

Contains information about a member.<br />

Coding Configuration Management Triggers<br />

Once you have referenced the necessary Beans, you can begin coding the rest of the trigger<br />

according to your needs.<br />

For example, to create a server-side script that checks for a member revision description type<br />

the following:<br />

Next, do the following:<br />

1 Save the trigger script to the trigger library:<br />

installdir/data/triggers/scripts<br />

2 Update events definition file.<br />

3 Restart <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

391


Chapter 9: Event Triggers<br />

392<br />

4 <strong>MKS</strong> <strong>Integrity</strong> runs the configuration management event trigger at the next applicable<br />

client action.<br />

NOTE You should restrict JavaScript triggers to a reasonable length. Although the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> can process commands in parallel, a long running script can<br />

affect the duration of that specific command from the client’s perspective.<br />

For example, the following client-side script—CIpre—runs a KornShell script that prompts<br />

the user to add a revision description for the member they are checking in.<br />

To configure the trigger, the following information is added to the si.policy file on the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>:<br />

si.CheckInMembers.pre=CIpre<br />

si.trigger.CIpre.command=sh -w -c 'echo Please provide a brief<br />

summary of changes you made in the Revision Description field.'<br />

Debugging Configuration Management Client-<br />

Side Environment Variables<br />

The simplest way to check whether an environment variable is set in the client event trigger’s<br />

runtime execution is to run the default shell’s environment display command.<br />

For example, on Windows:<br />

si.CheckOutMembers.post=COpost<br />

si.trigger.COpost.command=cmd /k set<br />

For example, on UNIX:<br />

si.CheckOutMembers.post=COpost<br />

si.trigger.COpost.command=sh –w –c env<br />

where<br />

cmd opens a command prompt.<br />

/k keeps the command prompt window open.<br />

set displays the machine environment variables.<br />

Error Handling Beans and Methods<br />

To retrieve error messages generated during server-side command calls, use the<br />

ScriptErrorMessageBean. The getMessage() method returns the error message, and the<br />

ScriptEnvironmentBean contains a stack of any errors that may have occurred during the<br />

execution of server-side commands.


Debugging Configuration Management Client-Side Environment Variables<br />

Useful error methods for using inside of a try...catch block include:<br />

emptyErrorMessageStack() - empties the error message stack.<br />

getErrorMessage() - the error message of the given index.<br />

numberOfErrorMessages() - the number of error messages in the error message stack.<br />

popErrorMessage() - pops an error message of the stack.<br />

pushErrorMessage() - pushes and error message on the stack.<br />

abortScript() Method<br />

DEBUG Logging<br />

To stop a trigger from executing when a script error occurs, the abortScript() method is<br />

available from the ScriptEnvironmentBean.<br />

This method is usually used in a pre-event trigger to display a message to the user to prevent<br />

them from doing something. In addition, it can be used to display error messages when<br />

debugging a trigger script, or to display trigger configuration errors.<br />

The abortScript() method takes two parameters:<br />

msg - The abort message.<br />

veto - If true, veto the operation. If false, do not.<br />

abortScript() example:<br />

Enabling DEBUG logging indicates if triggers are being executed, including other useful<br />

information. More specifically, DEBUG logging shows if your trigger is being considered,<br />

executed, and where in the trigger order it fires.<br />

Errors are logged to:<br />

installdir/log/server.log<br />

393


Chapter 9: Event Triggers<br />

394<br />

To enable DEBUG logging:<br />

1 Edit the logger.properties file on the server located in the<br />

installdir/config/properties directory.<br />

2 Uncomment the following line:<br />

mksis.logger.message.includeCategory.DEBUG=10<br />

3 Save the logger.properties file and restart the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Sample workflow and document management logging:<br />

Sample configuration management logging:<br />

Logging Trigger Scripts<br />

To assist in debugging trigger scripts, you can write from a trigger script to the server.log<br />

file. The output data from the trigger script may indicate where the problem is.<br />

To print to the log file, use the following syntax:<br />

Packages.mks.util.Logger.message("Category", level, "Text");


where<br />

Category - the logging category.<br />

Level - the logging level.<br />

Text - the text to be written out to the server log file.<br />

for example:<br />

Debugging Configuration Management Client-Side Environment Variables<br />

Packages.mks.util.Logger.message( "DEBUG", 5, "Debug message!" );<br />

Decide if you want to use the default DEBUG logging category, a custom category for each<br />

trigger script, or a custom category for all trigger scripts.<br />

To print to the server log, <strong>MKS</strong> recommends using a JavaScript function, for example:<br />

function print(msg, level) {<br />

if (level == null) level = 5;<br />

Packages.mks.util.Logger.message("MYTRIGGER", level, msg);<br />

}<br />

If you use a custom category, you need to update the logger.properties file with the new<br />

category, for example:<br />

Logging Commands<br />

mksis.logger.message.includeCategory.MYTRIGGER=10<br />

You can use logging commands to dynamically enable and disable server.log logging. For<br />

example:<br />

where<br />

si/im logging --category="Category" –on/off --level="Level" -target="Target"<br />

Category - name of logging category (DEBUG, or custom).<br />

on/off - turn logging on or off.<br />

Level - logging level.<br />

Target - server or client logging.<br />

TIP Disable logging after you finish debugging or server performance may be<br />

affected.<br />

395


Chapter 9: Event Triggers<br />

Using the <strong>MKS</strong> API in Event Triggers<br />

396<br />

The <strong>MKS</strong> Application Programming Interface (API) offers a direct way for custom<br />

applications to interact with workflow and document management, and configuration<br />

management. The <strong>MKS</strong> API can be used in triggers in a manner similar to the CLI; however,<br />

the API allows direct access to input and output without parsing.<br />

Using the <strong>MKS</strong> API in triggers is useful for performing CLI operations that are not covered<br />

by a Bean (like running a report), and running configuration management CLI commands<br />

from workflow and document events, and workflow and document commands from<br />

configuration management events.<br />

API Beans and Methods<br />

API Trigger Code<br />

NOTE The intent of this unit is not to get into how to use the <strong>MKS</strong> API, but to give<br />

examples of how it can be used in event triggers to get information Beans cannot.<br />

For more information on the <strong>MKS</strong> API, refer to the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Integrations<br />

Builder <strong>Guide</strong>.<br />

The following Beans interact with the API:<br />

ScriptEnvironmentBean<br />

The createAPISessionBean() method obtains an API session Bean.<br />

ScriptAPICommandRunnerBean<br />

Manages and executes an <strong>MKS</strong> API command. The addOption() method adds an<br />

option flag to the command.<br />

ScriptAPISessionBean<br />

Accesses and controls an <strong>MKS</strong> API session. The executeCmd() method executes a<br />

command.<br />

The following API trigger code performs the equivalent functionality of the<br />

si createcp --issueID=101 command:


Running Custom Java Code<br />

You can also use server-side event triggers to run custom Java code from a script.<br />

Running Custom Java Code<br />

Your custom Java code can be put into the installdir/data/java/classes directory as<br />

individual class files or packaged as one or more JAR files in the data/java/jars directory.<br />

You can use both directories at the same time if you want some classes packaged up and<br />

some exposed individually<br />

Example<br />

//<br />

// <strong>MKS</strong> <strong>Integrity</strong> sample script.<br />

//<br />

// This script runs a custom java code in com.abc.custom.<br />

//<br />

function run<br />

{<br />

Packages.com.abc.custom.CopyFile;<br />

}<br />

var eb = bsf.lookupBean("siEnvironmentBean");<br />

print("TRIGGER SCRIPT echo.js: Event Type: " + eb.getEventName() +<br />

", " + eb.getEventType() + ", " + eb.getEventContext());<br />

IMPORTANT Custom Java code runs inside the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> JVM and<br />

therefore can impact server performance. Code that runs computationally intensive<br />

activities can degrade server performance.<br />

397


Chapter 9: Event Triggers<br />

398<br />

Additional information on server-side event triggers is provided in the installed Javadocs in:<br />

installdir/data/documentation/javadocs/triggers/index.html<br />

You can also link the Javadocs from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page. To view the<br />

Javadocs, click the link for Event Trigger Java Documentation displayed under<br />

Documentation.<br />

The Javadocs provide API documentation that includes overview information, packages,<br />

classes, class hierarchies, deprecated APIs, and index information.<br />

Key Considerations<br />

JavaScript is not Java – what works in Java may not work in JavaScript. Note the following<br />

differences:<br />

JavaScript Java<br />

Not object-oriented Object-oriented language<br />

Not compiled, runs interpretively Is compiled<br />

Tries to continue running on errors Exceptions raised on errors<br />

Variable declaration is optional Variables must be declared<br />

Variables can change data type Variables cannot change data type<br />

Functions are used Methods are used<br />

Little encapsulation – only function variables are<br />

private<br />

Using Java Classes<br />

You can access Java classes in JavaScript. The following are examples for using JAVA classes:<br />

var myJAVAString = new java.lang.String(“JAVA_1.4_String”);<br />

var tokens = new java.util.StringTokenizer(myJAVAString, “_”);<br />

var myList = new java.util.LinkedList(); // creates an empty list<br />

// Add JAVA strings to the list<br />

myList.add( new java.lang.String(“List Element A”) );<br />

myList.add( new java.lang.String(“List Element B”) );<br />

myList.add( new java.lang.String(“List Element C”) );<br />

For a full list of available classes, refer to the appropriate Sun Java docs.<br />

Note the following:<br />

Full range of encapsulation (public, protected,<br />

private) for methods and variables


You can use server-side event triggers to run custom Java code from a script.<br />

Tips and Best Practices<br />

Custom individual class files go in the installdir/data/java/classes directory on the<br />

server.<br />

Custom JAR files go in the installdir/data/java/jars directory on the server.<br />

To use custom classes in JavaScript:<br />

var myApp = new Packages..;<br />

IMPORTANT Custom Java code runs in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> JVM and code that<br />

runs intensive activities can degrade server performance!<br />

Tips and Best Practices<br />

Check to see if there is a trigger script in the trigger library that already does what you<br />

need.<br />

As a starting point, modify an existing trigger script that is close to what you need.<br />

Build and test trigger scripts starting small, gradually adding more logic.<br />

Log script information to the server log as frequently as possible to help debug.<br />

Use an editor that supports JavaScript syntax highlighting to catch simple bugs.<br />

Keep system security in mind. Triggers run on the server under the permissions of the<br />

administrator and have the potential to affect file and system security.<br />

Try to limit the number of triggers. Triggers affect the duration of the command from the<br />

client’s perspective and can degrade performance. The more triggers on an event (or<br />

series of events) the longer the user has to wait for the event to complete.<br />

Trigger scripts that take a long time to run degrade server performance. <strong>MKS</strong><br />

recommends writing short trigger scripts.<br />

399


Chapter 9: Event Triggers<br />

400


A PPENDIX A<br />

Troubleshooting<br />

Diagnosing <strong>Server</strong> and Client Issues<br />

A<br />

<strong>MKS</strong> <strong>Integrity</strong> provides tools for monitoring and diagnosing issues that may arise when<br />

performing operations on the <strong>MKS</strong> <strong>Integrity</strong> Client and <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. When<br />

used with <strong>MKS</strong> Customer Care assistance, these tools improve resolution time of<br />

product issues.<br />

This appendix contains the following topics:<br />

“Gathering Important Information” on page 402<br />

“Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as Application” on page 405<br />

“Differencing <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Properties Files” on page 406<br />

“<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logs” on page 406<br />

“<strong>MKS</strong> <strong>Integrity</strong> Client Logs” on page 407<br />

“<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logging Levels” on page 407<br />

“Miscellaneous Logging Properties” on page 409<br />

“FLEXnet Logs” on page 413<br />

“Dr. Watson Logs” on page 413<br />

“Creating Integrations Log” on page 413<br />

“Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Diagnostics” on page 414<br />

“runstacktrace” on page 422<br />

“mksis” on page 423<br />

“isutil” on page 424<br />

“Starting <strong>Server</strong> in Safe Mode” on page 426<br />

“Troubleshooting Database Repository” on page 427<br />

“Troubleshooting Kerberos and Kerberos Single Sign-On” on page 428<br />

“Troubleshooting Configuration Management Reporting” on page 430<br />

401


Appendix A: Troubleshooting<br />

Gathering Important Information<br />

402<br />

Environment Information<br />

When reporting an issue to <strong>MKS</strong> Customer Care, the following information is commonly<br />

requested:<br />

product serial number<br />

operating system, RAM, and CPU speed of the client machine<br />

operating system, RAM, and CPU speed of the server machine<br />

if using a Web interface, the Web browser version<br />

version of the <strong>MKS</strong> <strong>Integrity</strong> Client and <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, including service packs<br />

installed<br />

database type and version<br />

exact error message (a screen shot is helpful)<br />

steps to reproduce the problem<br />

properties and log files (for more information, see “Collecting Properties and Log Files”<br />

on page 421)<br />

Common Support Questions<br />

To identify the problem category, <strong>MKS</strong> Customer Care may ask the following questions:<br />

Are your platforms on the supported platforms list?<br />

To view this list, browse to:<br />

http://www.mks.com/support/platforms<br />

Does the problem happen for all users?<br />

If yes, then it is likely a server problem.<br />

Can you reproduce the problem on a different machine with the same configuration?<br />

If yes, then it is likely a client problem.<br />

Can another user only reproduce the problem on the same machine?<br />

If yes, then it is likely a machine problem.<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Serial Number<br />

To determine your <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> serial number, do one of the following:<br />

Browse to http://:. The serial number displays near the bottom of<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page.


Look for a sticker on the top of the product box.<br />

Look for the mksis.SerialNumber property in:<br />

<strong>Integrity</strong><strong>Server</strong>InstallDir/config/properties/is.properties<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Version<br />

To determine your <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> version, do one of the following:<br />

Gathering Important Information<br />

Browse to http://hostname:port. The version and build number appear at the bottom of<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page.<br />

Right click <strong>Integrity</strong><strong>Server</strong>InstallDir\server\mks\bin\neuron.exe, select Properties,<br />

and click Version.<br />

<strong>MKS</strong> <strong>Integrity</strong> Client Version<br />

To determine your <strong>MKS</strong> <strong>Integrity</strong> Client version, do one of the following:<br />

From a command line, type one of the following:<br />

si about (for configuration management)<br />

im about (for workflow and document management)<br />

integrity about (<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client)<br />

aa about (Authorization <strong>Administration</strong>)<br />

From the GUI or Web interfaces, select Help > About.<br />

<strong>MKS</strong> <strong>Integrity</strong> Client and <strong>Server</strong> Directory Listing<br />

If <strong>MKS</strong> Customer Care asks for a directory listing of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> and the<br />

<strong>MKS</strong> <strong>Integrity</strong> Client directories, change to the directory that the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is<br />

installed in or the directory that the <strong>MKS</strong> <strong>Integrity</strong> Client is installed in.<br />

On Windows, use the following command to record the directory listing to a file that can be<br />

sent to <strong>MKS</strong> Customer Care:<br />

dir /b /s > listing.txt<br />

On UNIX, type:<br />

ls –R > listing.txt<br />

On Windows, the default is c:\Program<br />

Files\<strong>MKS</strong>\<strong>Integrity</strong><strong>Server</strong><strong>2009</strong> and the default is<br />

c:\Program Files\<strong>MKS</strong>\<strong>Integrity</strong>Client.<br />

Is <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Running?<br />

1 On the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, open:<br />

<strong>Integrity</strong><strong>Server</strong>InstallDir\log\server.log<br />

403


Appendix A: Troubleshooting<br />

404<br />

2 Look for lines of the following form:<br />

INFO [<strong>Integrity</strong><strong>Server</strong>] GENERAL(0): Listening on clear port<br />

portnumber<br />

INFO [<strong>Integrity</strong><strong>Server</strong>] ApplicationState(0): <strong>Integrity</strong> <strong>Server</strong><br />

(Build:, Service Pack: ) started<br />

where portnumber is your <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>’s port number.<br />

No lines should follow those lines that indicate a shutdown occurred.<br />

If you are using SSL, the following line is also in the log:<br />

INFO [<strong>Integrity</strong><strong>Server</strong>] GENERAL(0): Listening on secure port<br />

secureportnumber<br />

where secureportnumber is your <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>’s port used for secure SSL<br />

connections.<br />

What Time Zone Are You In?<br />

For data integrity purposes, <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> records what time zone it is in. If the time<br />

zone of the server differs from that of the database, the server does not start. View the<br />

server.log (see “<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logs” on page 406) file to determine which time zone<br />

the server is expecting for each.<br />

Following is an example from the log of an error for two differing time zones:<br />

17:59:38,331 WARN [ServiceController] Problem starting service<br />

mks:name=<strong>Server</strong>TimeZone<br />

17:59:38,284 ERROR [Security] Starting failed mks:name=<strong>Server</strong>TimeZone<br />

java.lang.Exception: Timezones and/or daylight savings settings don't<br />

match. Database: America/New_York, server: America/Buenos_Aires<br />

Is FLEXnet <strong>Server</strong> Running?<br />

On Windows<br />

NOTE If FLEXnet is unavailable, <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> shuts down and displays an<br />

error message.<br />

1 To start the FLEXnet configuration utility, start:<br />

FLEXnetInstallDir\bin\lmtools.exe<br />

2 On the Service/License File tab, click Configuration using Services.<br />

3 If multiple services are listed, select the service associated with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

By default, this is FlexNet Service 1.<br />

4 Click <strong>Server</strong> Status.


Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as Application<br />

5 Click Perform Status Enquiry. If the FLEXnet server is running, a message notifies you<br />

that the server is running, and it displays the location of the license file and how many<br />

licenses are available.<br />

On UNIX<br />

1 From a command line, type:<br />

ps –ef | grep lmgrd<br />

This searches a complete listing of all processes running and displays the lmgrd process<br />

(the FLEXnet Manager daemon).<br />

2 To use the lmstat command line utility (in flexnet/bin) to perform a status inquiry,<br />

type:<br />

lmstat -a -c[license file]<br />

For more information on this utility, browse to http://www.acresso.com.<br />

Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as Application<br />

Sometimes it is useful to run the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as an application instead of as a<br />

service. If the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> does not start, different error messages may appear on<br />

the command line that can be recorded and sent to <strong>MKS</strong> Customer Care. Additionally, you<br />

can obtain a thread dump in instances where the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> experiences<br />

performance issues.<br />

To run the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as an application<br />

1 Stop the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> service from a command line by changing to installdir/<br />

bin, and typing the following:<br />

mksis[.bat] stop<br />

2 If you are not using the default administrative user, ensure that the administrator<br />

belongs to the administrators group.<br />

3 If you are not logged in as this administrator, log out and log in as the administrator.<br />

4 From a command line, change to installdir/bin and type the following:<br />

mksis[.bat] console<br />

The command output is sent to the startup.log file. For more information on the<br />

command, see “mksis” on page 423.<br />

5 To display a thread dump, press CTRL+BREAK. This only displays what is happening at the<br />

exact moment. So you may have to press CTRL+BREAK several times to determine how<br />

threads change over time.<br />

6 Copy the thread dump information to a text file and send it to <strong>MKS</strong> Customer Care.<br />

405


Appendix A: Troubleshooting<br />

Differencing <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Properties<br />

Files<br />

Error Codes<br />

406<br />

If you change properties files containing properties not in the database and make backup<br />

copies, differencing changed properties files against the backup copies can be useful in<br />

diagnosing server problems.<br />

NOTE <strong>MKS</strong> recommends that you make backup copies of the properties files located<br />

in <strong>Integrity</strong><strong>Server</strong>InstallDir\config\properties.<br />

To difference properties files<br />

1 Start the <strong>MKS</strong> Visual Differencing tool.<br />

2 Select File > Compare.<br />

3 Browse for the two files that you want to compare. and click OK. The differences<br />

between the two files are highlighted.<br />

Errors displayed in the GUI, Web, CLI, API, and logs may contain an error code. The error<br />

code is of the form <strong>MKS</strong>000000, for example <strong>MKS</strong>004364. Use the error code to obtain more<br />

information on the error from the <strong>MKS</strong> Customer Community (or contact<br />

<strong>MKS</strong> Customer Care). Information may include the cause of the error, its resolution, or a<br />

workaround. If multiple errors occurred from the action, then multiple error codes are<br />

displayed.<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logs<br />

The following <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> log files can be useful in diagnosing server errors:<br />

<strong>Integrity</strong>SereverInstallDir\log\server.log records server errors and events. By default,<br />

a new log is automatically started after the previous log reaches 10 MB. Versions of<br />

server.log are named incrementally, for example, server.1.log and<br />

server.2.log. By default, no more than 50 previous server.log versions are stored.<br />

To configure the size of the log file and the number of logs, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

<strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

<strong>Integrity</strong><strong>Server</strong>InstallDir\uninstall\.com.zerog.registry.xml records all the<br />

activities that occurred during the installation of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.


<strong>MKS</strong> <strong>Integrity</strong> Client Logs<br />

<strong>Integrity</strong><strong>Server</strong>InstallDir\log\dbmigration.log is created when a database is migrated,<br />

for example, during an <strong>MKS</strong> <strong>Integrity</strong> upgrade. The output displays database version<br />

information, error messages, and SQL statements run against the database as part of the<br />

migration process.<br />

<strong>Integrity</strong><strong>Server</strong>InstallDir\log\dbcreation.log is created when a new database is<br />

created during the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> install. The output displays database version<br />

information, error messages, and SQL statements run against the database as part of the<br />

database creation process.<br />

<strong>Integrity</strong><strong>Server</strong>InstallDir\hs_err_pid*.err typically appears if a Java error occurs,<br />

causing the server to stop running. These files are generated by the Java Virtual Machine<br />

(JVM) and consist of a stack trace at the time the server stops running.<br />

TIP To receive instant updates about <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> errors, you can configure<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to e-mail <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> log error messages. For<br />

more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation and Configuration<br />

<strong>Guide</strong>.<br />

<strong>MKS</strong> <strong>Integrity</strong> Client Logs<br />

<strong>Integrity</strong>ClientInstallDir\bin\<strong>Integrity</strong>Client.log is the main <strong>MKS</strong> <strong>Integrity</strong> Client<br />

log file. It logs information messages, warnings, and errors.<br />

<strong>Integrity</strong>ClientInstallDir\uninstall\.com.zerog.registry.xml records all activities<br />

that occurred during the <strong>MKS</strong> <strong>Integrity</strong> Client installation.<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logging Levels<br />

To assist you in diagnosing server issues, you can record server messages and exceptions to<br />

the server.log.<br />

To adjust logging properties<br />

1 Edit the following file:<br />

<strong>Integrity</strong><strong>Server</strong>InstallDir\config\properties\logger.properties<br />

2 Uncomment the category of logging messages or exceptions to record. Generic<br />

categories include: DEBUG, DIAGNOSTIC, WARNING, GENERAL, ERROR, and FATAL.<br />

NOTE All lines containing the word DEBUG are commented out. This suppresses<br />

logging of debugging messages, which may help to increase performance. When<br />

necessary, these lines can be uncommented out for debugging.<br />

407


Appendix A: Troubleshooting<br />

408<br />

3 Set the level of logging information to record. Ten (10) is the highest level of logging,<br />

and zero (0) disables logging.<br />

For example, you can adjust the level of logging information for the ERROR category:<br />

mksis.logger.message.includeCategory.ERROR=10<br />

mksis.logger.exception.includeCategory.ERROR=10<br />

TIP You can receive e-mail notifications about specific server messages or<br />

exceptions that are recorded to server.log. For more information, see “<strong>MKS</strong><br />

<strong>Integrity</strong> <strong>Server</strong> Configuration Properties” on page 310.<br />

4 Save your changes.<br />

5 Restart the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Client Logging Levels<br />

To increase the level of logging on the <strong>MKS</strong> <strong>Integrity</strong> Client, uncomment the desired logging<br />

levels in <strong>Integrity</strong>ClientInstallDir\<strong>Integrity</strong>ClientSite.rc:<br />

# START #<br />

# Turn up logging.<br />

#<br />

<strong>Integrity</strong>Client.log.exception.includeCategory.WARNING=10<br />

#<strong>Integrity</strong>Client.log.exception.includeCategory.DEBUG=10<br />

<strong>Integrity</strong>Client.log.exception.includeCategory.ERROR=10<br />

<strong>Integrity</strong>Client.log.exception.includeCategory.GENERAL=10<br />

<strong>Integrity</strong>Client.log.message.includeCategory.WARNING=10<br />

#<strong>Integrity</strong>Client.log.message.includeCategory.DEBUG=10<br />

<strong>Integrity</strong>Client.log.message.includeCategory.ERROR=10<br />

<strong>Integrity</strong>Client.log.message.includeCategory.GENERAL=10<br />

#<strong>Integrity</strong>Client.log.message.includeCategory.CACHE=10<br />

#<strong>Integrity</strong>Client.log.exception.includeCategory.CACHE=10<br />

#<strong>Integrity</strong>Client.log.message.includeCategory.EVENT=10<br />

#<strong>Integrity</strong>Client.log.exception.includeCategory.EVENT=10<br />

# Changes Formatting<br />

#<strong>Integrity</strong>Client.log.message.defaultFormat={2}({3}) {5}\: {4}\n<br />

#<strong>Integrity</strong>Client.log.exception.defaultFormat={2} {4} {5}\: {6}\n


# END #<br />

Miscellaneous Logging Properties<br />

By default, client HTTP-related messages, such as socket termination messages after each<br />

command, do not appear in the log. For example, if a low-level HTTP protocol fails, you can<br />

turn on HTTP logging to assist in determining what the exact problem might be.<br />

To display all client HTTP-related messages that may appear when using the client Web<br />

interfaces, add the following lines to the <strong>Integrity</strong>ClientSite.rc file:<br />

<strong>Integrity</strong>Client.log.message.includeCategory.HTTP=10<br />

<strong>Integrity</strong>Client.log.exception.includeCategory.HTTP=10<br />

Logging output displays in the value logFileName, or in the<br />

\bin\<strong>Integrity</strong>Client.log file. You can adjust<br />

logging between 0 and 10. After you make changes to <strong>Integrity</strong>ClientSite.rc, save it,<br />

and restart the <strong>MKS</strong> <strong>Integrity</strong> Client.<br />

To display a timestamp with each log entry, add the following lines to the<br />

<strong>Integrity</strong>ClientSite.rc file:<br />

<strong>Integrity</strong>Client.log.message.defaultFormat={2}({3}) {5}\: {4}\n<br />

<strong>Integrity</strong>Client.log.exception.defaultFormat={2} {4} {5}\: {6}\n<br />

Miscellaneous Logging Properties<br />

To debug security realms<br />

1 To increase the amount of logging to server.log for the security realm, add properties<br />

to the /config/properties/logger.properties<br />

file.<br />

For verbose LDAP debugging, use:<br />

mksis.logger.message.includeCategory.LDAP=10<br />

Successful authentications are logged when you set:<br />

mksis.logger.message.includeCategory.AUTHENTICATOR=10<br />

2 If necessary, uncomment the line for the realm you want to debug.<br />

3 Save your changes.<br />

4 Restart the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

409


Appendix A: Troubleshooting<br />

410<br />

To debug solutions<br />

1 To debug installed solutions, add the following properties to the<br />

<strong>Integrity</strong><strong>Server</strong>InstallDir/config/properties/logger.properties file:<br />

server-side category that logs trigger operations<br />

mksis.logger.message.includeCategory.<strong>MKS</strong>RQ=10<br />

client and server-side category (can be set for both) that logs solution data model<br />

operations and configuration information<br />

mksis.logger.exception.includeCategory.IM-NOTIFICATION=5<br />

NOTE Due to heavy logging on the server, <strong>MKS</strong> recommends setting this category<br />

on the client only.<br />

server-side category that logs output when a solution command (rq) retrieves an<br />

item from the server<br />

mksis.logger.message.includeCategory.SDMCACHE=10<br />

2 Save your changes.<br />

3 Restart the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

si logging<br />

In addition to modifying the logger.properties file, you can use the si logging<br />

command to increase or decrease logging levels for several different categories (as outlined in<br />

the table next). You can run this command from a client or server machine. You can use any<br />

category included in the logger.properties file. Note the following:<br />

The client and server do not need to be restarted after making changes.<br />

Logging changes last only until the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> or <strong>MKS</strong> <strong>Integrity</strong> Client is<br />

restarted.<br />

You need the Debug<strong>Server</strong> permission in the mks:si ACL to run this command.<br />

server.log file logs information about this command when it runs.<br />

From a command line, type:<br />

where<br />

si logging --category=value --level=value<br />

--category=value specifies the category name (see the table next for category names)<br />

--debug is equivalent to --category=DEBUG<br />

--level=value specifies the log level (0 disables logging, 10 logs all messages)<br />

--off is equivalent to --level=-1 (no reporting in this category)


--on is equivalent to --level=10 (logs all messages in this category)<br />

Miscellaneous Logging Properties<br />

--target=value specifies the target debugging is enabled for. Valid values are client,<br />

server (default), and proxy.<br />

Acceptable values for --category=value are:<br />

Category Description<br />

DEBUG Logs debug messages.<br />

Note: Command overrides settings in logger.properties, but only until <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> restarts. Additionally, option does not explicitly log debug exceptions. To log<br />

exceptions, open logger.properties, uncomment<br />

mksis.logger.exception.includeCategory.DEBUG, and set value to 10.<br />

SQL Logs all SQL commands to server.log. For example, if you view item, SELECT<br />

statement logged. When editing item, INSERT, UPDATE, and SELECT statements logged.<br />

--level=5 logs all SQL commands.<br />

--level=10 adds additional information such as Rollback time.<br />

CACHE Logs cache operation information. Levels 0–3 not verbose. Levels 4–15 verbose.<br />

SMTP Logs communication between <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> and SMTP server.<br />

IM-NOTIFICATION Logs <strong>MKS</strong> <strong>Integrity</strong> e-mail notification.<br />

ACL Logs permission checking to server.log. For example, add label command logs<br />

following:<br />

<strong>2009</strong>-08-16 13:45:17,140 INFO [mksis.<strong>Integrity</strong><strong>Server</strong>] ACL(5):<br />

Check user administrator for permission<br />

CreateProject against acl mks:si. Resolved ACL: mks:si<br />

Decision: GRANTED<br />

TRANSACTION Logs all transactions performed by specific user, for example,<br />

si logging --category=TRANSACTION-jdoe --on<br />

logs all transactions performed by jdoe.<br />

To log all cache transactions, type TRANSACTION-system<br />

SILIB Similar to TRANSACTION, option logs more information about single command performed<br />

by a user, for example,<br />

si logging --category=SILIB-jdoe --on<br />

SICI Provides communications between workflow and document management functionality<br />

and configuration management functionality, and communications between <strong>MKS</strong> <strong>Integrity</strong><br />

Client and <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

REALM Logs NT realm information.<br />

API Logs <strong>Integrity</strong> API information.<br />

HLL Logs <strong>Integrity</strong> HLL server information.<br />

LDAP Logs LDAP security scheme information.<br />

AGENT Logs RMIs from <strong>MKS</strong> <strong>Integrity</strong> Client to <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

SOLUTIONS Logs all solution data model operations and configuration information.<br />

411


Appendix A: Troubleshooting<br />

Category Description<br />

<strong>MKS</strong>ALM Logs all server side solution trigger operations.<br />

SDMCACHE Logs information when a solution command attempts to access an item from the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

<strong>MKS</strong>ALMAUDIT Logs all server-side information for document model auditing.<br />

FINDER Logs all information related to the operation of the Finder dialog box.<br />

412<br />

You can also use the si logging command to enable debug logging on the <strong>MKS</strong> <strong>Integrity</strong><br />

Client. To enable debug logging on the client, use:<br />

si logging --debug --on --target=client<br />

Valid values for --target are client, server (default), and proxy.<br />

im logging<br />

In addition to the si logging command, you can use the im logging command to increase<br />

or decrease logging levels for several different categories (as outlined in the preceding table).<br />

You can run this command from a client or server machine.<br />

From a command line, type:<br />

where<br />

im logging --category=value --level=value<br />

--category=value specifies the category name (see the table following for category<br />

names)<br />

--debug is equivalent to --category=DEBUG<br />

--level=value specifies the log level (0 disables logging, 10 logs all messages)<br />

--off is equivalent to --level=-1 (no reporting in this category)<br />

--on is equivalent to --level=10 (logs all messages in this category)<br />

--target=value specifies the target the debugging is enabled for (valid values are<br />

client, server (default), and proxy.<br />

Acceptable values for --category=value are as outlined for the si logging command on<br />

page 411.


FLEXnet Logs<br />

FLEXnet Logs<br />

You can direct the output from the license server (lmgrd) into a local log. If you are running<br />

FLEXnet as a service on Windows and it has been set up using Configure using Services in<br />

LMTOOLS, the name of this log can be specified in the Path to the debug log file field on the<br />

Config Services tab.<br />

If FLEXnet is not running, you can use a command line on UNIX or Windows, and type<br />

lmgrd –l to display the log. For more information on this log file, browse to:<br />

Dr. Watson Logs<br />

http://www.acresso.com/support/<br />

If the client or server quits on a Windows platform, useful information is typically logged to<br />

the machine’s Dr. Watson log. On Windows 2000, you can configure the location of the<br />

produced log file and dump by running C:\winnt\system32\drwtsn32.exe.<br />

Creating Integrations Log<br />

Logging can be set for IDE integrations, such as Sybase PowerBuilder.<br />

1 Add the following lines to the userprofile_dir\<strong>Integrity</strong>Client.rc file:<br />

integrations.debugLogFile=c\:\\installdir\\log\\mksapi.log<br />

integrations.debugLogLevel=5<br />

IMPORTANT You must use double slashes to escape slashes and colons.<br />

The debugLogLevel property can be set to any value between 0 and 10, where 0 does<br />

not display any information and 10 displays the most information. To reduce the<br />

amount of extraneous information, <strong>MKS</strong> recommends debugLogLevel=5.<br />

2 Restart the client.<br />

Sybase PowerBuilder 8.0<br />

In PowerBuilder 8.0, source control logging is set up on a per-workspace basis in the<br />

connection profile.<br />

To log source control activity in PowerBuilder 8.0<br />

1 Right click a workspace, and choose Properties.<br />

413


Appendix A: Troubleshooting<br />

414<br />

2 Click Source Control.<br />

3 To enable trace logging, select Log All Activity.<br />

NOTE The default log file name is pbscc80.log and is saved in the workspace<br />

directory, but you can change the name and location.<br />

If Overwrite Log File is selected for PowerBuilder 8.0, the log file is overwritten for each<br />

session. The default setting is Append To Log File.<br />

IBM Eclipse 2.0/Websphere Studio 5.0<br />

Websphere does not log version control activity specifically, but version control errors<br />

appear in Websphere’s general debug log located in \.metadata\.log.<br />

To display the debug log, system properties, and the list of plug-ins, select Help > About, and<br />

click Configuration Details.<br />

Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Diagnostics<br />

To monitor and diagnose issues that may arise when performing operations on the<br />

<strong>MKS</strong> <strong>Integrity</strong> Client and <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client,<br />

and the si diag and im diag commands offer several diagnostics you can run on the<br />

workflow and document management, and configuration management components.<br />

Note the following:<br />

To view the <strong>Server</strong> Diagnostics node in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, run<br />

server diagnostics, and create a support package, you must have the Admin<strong>Server</strong><br />

permission for <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>; configuration management; or workflow and<br />

document management. If the permission is denied, the <strong>Server</strong> Diagnostics node does<br />

not appear.<br />

<strong>Server</strong> metrics and certain diagnostics may take a long time to run, impacting server<br />

performance. <strong>MKS</strong> recommends running these metrics and diagnostics during non-peak<br />

usage.<br />

To run server diagnostics in the GUI<br />

1 In the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, select the Workflows and Documents or<br />

Configuration Management node, and then open the <strong>Server</strong> Diagnostics node.


2 Select one of the following server diagnostics:<br />

Diagnostic Description<br />

Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Diagnostics<br />

Change Logging Levels Changes logging levels for the server.<br />

In the available fields, choose the category and logging level. Available<br />

logging categories include: ACL, AGENT, API, CACHE, DEBUG, ERROR,<br />

GENERAL, IM-NOTIFICATION, LDAP, REALM, SD, SMTP, SQL, TM, and<br />

WARNING. By default, DEBUG is selected.<br />

To permanently save your changes, select true. By default, false is<br />

selected.<br />

For more information on logging, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong><br />

Installation and Configuration <strong>Guide</strong>.<br />

Change Package <strong>Server</strong>s Displays a list of configuration management servers which have change<br />

packages tracked by items on this <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Client Connections Displays list of all clients connected to the server. List includes user name,<br />

host name, port, and time connection established.<br />

<strong>Server</strong> Errors Displays the most recent 50 lines from the server log at or above the ERROR<br />

level.<br />

<strong>Server</strong> Log Displays the most recent 500 lines from the server log.<br />

Collect Support Package Collects client/server logs, statistics, and properties into compressed ZIP file<br />

(called support package). When support package assembled, you can e-mail<br />

to <strong>MKS</strong> Customer Care for further diagnosis.<br />

For more information, see “Collecting Properties and Log Files” on page 421.<br />

415


Appendix A: Troubleshooting<br />

Diagnostic Description<br />

416<br />

Connected Source <strong>Server</strong>s Displays a list of configuration management servers connected to the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Database Connections Displays list of all open database connections.<br />

Each open database connection shows where (via a stacktrace) the<br />

connection was requested from the JDBC connection pool, the name of the<br />

thread that requested the JDBC connection, and the timestamp when the<br />

connection was pulled out of the JDBC connection pool.<br />

JVM Memory Usage Performs garbage collection and displays memory in use, free memory, and<br />

total memory in bytes.<br />

License Usage Displays each type of license (workflow and document management,<br />

configuration management, seat, float) and user that has license currently<br />

checked out.<br />

Note: Users on multiple <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>s show license checked out for<br />

each server. If multiple <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>s connected to same license<br />

server, license information may not reflect actual number of licenses currently<br />

checked out.<br />

If license monitoring is enabled, this diagnostic also displays the appropriate<br />

stats categories. For more information on FLEXnet license monitoring, see<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

Metrics Displays server metrics, such as the maximum change package entries per<br />

change package, and the average time entries per user.<br />

Running Displays a list of charts, dashboards, queries, and reports that are currently<br />

running.<br />

Stacktrace Collects server stacktrace.<br />

Statistics Displays server statistics. By default, the previous week’s statistics are stored<br />

in a support package. Each statistic is stored separately in the ZIP file as a<br />

separate file, with the statistics under a directory named Stats. Each file<br />

under the Stats directory is in the format yyyy.MM.dd-HH.mm.ss.<br />

Verbose Garbage<br />

Collection<br />

Enables or displays verbose garbage collection for the server JVM.<br />

To diagnose garbage collection issues, the server retains the 10 most recent<br />

garbage collection logs if verbose garbage collection is enabled. A new<br />

garbage collection log (gc.out) is automatically started after the server<br />

restarts. Versions of gc.out are named incrementally, for example,<br />

gc.out.1 and gc.out.2.<br />

Note: Verbose garbage collection slows down server performance. <strong>MKS</strong><br />

recommends disabling this option as soon as you complete your analysis.<br />

3 To run the selected diagnostic, click Run Diagnostic at the top of the diagnostic view. The<br />

results display in the diagnostic view.<br />

4 To perform a text search on the results, click anywhere in the diagnostic view and press<br />

CTRL+F. A search bar displays at the bottom of the diagnostic panel. As you type in the<br />

Find field, the results become more specific.


Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Diagnostics<br />

5 For some diagnostics, you can save the information to a file by clicking Save Output. A<br />

standard save dialog box appears, allowing you to save the information as a text file on<br />

the server’s file system.<br />

To run server diagnostics in the CLI<br />

From the command line, type one of the following commands:<br />

<strong>Server</strong> diagnostics on the configuration management component:<br />

si diag --diag=value --target=server<br />

<strong>Server</strong> diagnostics on the workflow and document management component:<br />

im diag --diag=value --target=server<br />

where im diag specifies the workflow and document management component and si diag<br />

specifies the configuration management component, value specifies the diagnostic name, and<br />

server specifies the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> to run the diagnostics on. Acceptable diagnostics for<br />

value are as follows:<br />

Diagnostic Description<br />

backupdatabasea Backs up Derby database to installdir/data/derby.db/backup.<br />

connections Displays list of all server connections. List includes user name, host name,<br />

port, and time connection established.<br />

collectsupportpackagea Collects client/server logs and properties into compressed ZIP file (called<br />

support package). When support package assembled, you can e-mail to <strong>MKS</strong><br />

Customer Care for further diagnosis.<br />

For more information, see “Collecting Properties and Log Files” on page 421.<br />

cpservers Displays a list of configuration management servers which have change<br />

packages tracked by items on this <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

dumpstacks Collects server stacktrace.<br />

getNextCheckpointDate Displays the timestamp of the earliest conflicting transaction. If there are no<br />

conflicting transactions, none is displayed.<br />

heap Performs garbage collection and displays memory in use, free memory, and<br />

total memory in bytes.<br />

isproperties Displays list of server properties not specific to workflow and document<br />

management, or configuration management. To configure statistics collection,<br />

purging, and license monitoring properties, use the setispolicy<br />

diagnostic.<br />

licenses a<br />

Displays each type of license (workflow and document management;<br />

configuration management; seat; float) and user that has license currently<br />

checked out.<br />

Note: Users on multiple <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>s show license checked out for<br />

each server. If multiple <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>s connected to same license<br />

server, license information may not reflect actual number of licenses currently<br />

checked out.<br />

417


Appendix A: Troubleshooting<br />

Diagnostic Description<br />

418<br />

listopendbconnections Displays list of all open database connections.<br />

Each open database connection shows where (via a stacktrace) the<br />

connection was requested from the JDBC connection pool, the name of the<br />

thread that requested the JDBC connection, and the timestamp when the<br />

connection was pulled out of the JDBC connection pool.<br />

listOpenSITransactions Displays the current open DB backend transactions that could potentially<br />

conflict with a checkpoint operation; along with their stacktrace, transaction<br />

time, and thread name. This diag is useful for diagnosing checkpointing<br />

issues.<br />

log Displays recent server log output.<br />

To display the most recent 500 lines from the server log, use the appender<br />

MEMORY, for example, for example, --diag=log MEMORY.<br />

To display the most recent 50 lines from the server log at or above the ERROR<br />

level, use the appender MEMORYERROR, for example, --diag=log MEMORY.<br />

Caution: This diagnostic uses the server’s memory.<br />

mem Performs garbage collection and displays memory in use, free memory, and<br />

total memory in bytes.<br />

metrics Displays server metrics, such as the maximum change package entries per<br />

change package, and the average time entries per user.<br />

policies Displays list of all workflow and document management policies.<br />

policy Displays list of all modified global policy settings. User preferences, default<br />

settings, and project settings not displayed.<br />

properties Displays list of all properties on server. Includes settings in si.properties,<br />

is.properties, im.properties, and logger.properties.<br />

reloadfunctions Reloads dialect-specific JAR files into the database during server startup.<br />

These JAR files add functions into the database that support complex<br />

computations. Restart the server after using this diag.<br />

reclaimprojectname Reclaims project name of the project path specified in param option. Path<br />

case sensitive. You need to reclaim dropped project in RCS style repository to<br />

completely remove it from repository. Enables you to create or import project<br />

using same repository location.<br />

You must stop and restart server after reclaiming project name before you can<br />

re-use repository location.<br />

Command can also be used for reclaiming subproject namespaces.<br />

refreshUserGroupCache Clears framework-level caches (subject, user name, group and LDAP). This is<br />

useful for updating user and group caches when your external directory<br />

service is updated.<br />

Note: If you specify this option with im diag, it has the additional effect of<br />

rebuilding the <strong>Integrity</strong>-level caches.<br />

running Displays list of charts, dashboards, queries, and reports that are currently<br />

running.


Diagnostic Description<br />

Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Diagnostics<br />

sqllogging If SQL logging is enabled on the <strong>MKS</strong> <strong>Integrity</strong> (im/si logging command),<br />

you can set SQL logging levels for specific users. Setting the logging level can<br />

assist in isolating specific user commands and improving server performance.<br />

For example, if logging levels are high and server performance is impacted,<br />

reducing logging levels may improve performance.<br />

To set SQL logging levels for a user, type:<br />

im/si --diag=sqllogging username logginglevel<br />

where<br />

username is the user ID of the user whose commands you want to log.<br />

logginglevel is one of the following number or text values: high (0), medium<br />

(5), low (10), or off (-1).<br />

For example, typing:<br />

im diag --diag=sqllogging jriley high<br />

logs all workflow and document SQL commands for the user jriley to the<br />

category SQL-jriley.<br />

419


Appendix A: Troubleshooting<br />

Diagnostic Description<br />

420<br />

setispolicy Configures the following server policies:<br />

Name: mksis.statisticsInterval<br />

Int Value: 7200<br />

Default: 60<br />

Min: 30<br />

Max: 10000000<br />

Description: Controls the number of seconds between collecting statistics. To<br />

diagnose intermittent server performance issues, lower this number.<br />

Name: mksis.statisticsPurge<br />

Default: weekly<br />

Description: Purges stored statistics weekly or monthly. After the specified<br />

period, only one statistic per day is stored, while others are deleted. To<br />

manually purge statistics, specify none and use SQL statements to purge the<br />

data.<br />

Note: To prevent overloading the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> with statistics,<br />

especially if the interval is set low, one statistic per day is purged upon each<br />

server start.<br />

Name: mksis.serverLicenseInterval<br />

Int Value: 60<br />

Default: 60<br />

Min: 0<br />

Max: 10000000<br />

Description: Controls how frequently (in seconds) server license usage is<br />

polled and recorded in the server statistics. You can disable this policy by<br />

setting the value to 0. If collection is enabled, the minimum allowed value is<br />

60 seconds.<br />

Name: mksis.flexLicenseInterval<br />

Int Value: 0<br />

Default: 0<br />

Min: 0<br />

Max: 10000000<br />

Description: Controls how frequently (in seconds) FLEXnet license usage is<br />

polled and recorded in the server statistics. If multiple <strong>Integrity</strong> <strong>Server</strong>s are<br />

pointing at the same FLEXnet license server, <strong>MKS</strong> recommends enabling this<br />

policy on one <strong>Integrity</strong> <strong>Server</strong> only. You can disable this policy by setting the<br />

value to 0. If collection is enabled, the minimum allowed value is 300<br />

seconds.<br />

setpolicytodefault Restores the policy to the default value.<br />

showrepdir Displays list of projects, archives, and directories contained in database<br />

repository. Requires si.repositoryBrowsingEnabled property to be<br />

true in si.properties file.<br />

statistics Displays server statistics. By default, the previous week’s statistics are stored<br />

in a support package. Each statistic is stored separately in the ZIP file as a<br />

separate file, with the statistics under a directory named Stats. Each file<br />

under the Stats directory is in the format yyyy.MM.dd-HH.mm.ss.<br />

a Admin<strong>Server</strong> permission must be used. Admin permission not required.


Collecting Properties and Log Files<br />

Collecting Properties and Log Files<br />

If you are unable to diagnose a problem with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> using the server<br />

diagnostics, you can collect client and server logs, server statistics, and properties into a<br />

compressed ZIP file (called a support package). When your support package is assembled, you<br />

can e-mail it to <strong>MKS</strong> Customer Care for further diagnosis.<br />

Note the following:<br />

If certain files do not exist on the <strong>MKS</strong> <strong>Integrity</strong> Client or <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, within<br />

the ZIP file each client and server’s manifest.txt file indicates which files are missing.<br />

Additionally, each manifest.txt file includes the date and time the files were<br />

collected, the target component (client, server, or proxy), the full path to each file, and<br />

the date and time each file was last modified.<br />

If the support package exceeds 5 MB, <strong>MKS</strong> recommends removing some of the older<br />

server.log (or for previous server versions, weblogic.log) files from the support<br />

package before e-mailing it to <strong>MKS</strong> Customer Care.<br />

In the support package, each server statistic is stored as a separate file in the Stats<br />

directory. Each file is in the format yyyy.MM.dd-HH.mm.ss.<br />

The five most recent license.log files are captured in the support package.<br />

For security reasons, the following sensitive information is not included in the support<br />

package:<br />

in si.properties:<br />

im.user=xxxx<br />

im.password=xxxx<br />

si.anonymousUser=xxxx<br />

si.anonymousPassword=xxxx<br />

in im.properties:<br />

mksis.im.prodPassword=xxxx<br />

mksis.im.prodUser=xxxx<br />

in is.properties:<br />

mksis.proxy.*.adminPassword=xxxx<br />

mks.dbUser=xxxx<br />

mks.dbPassword=xxxx<br />

mksis.privatekey.password=xxxx<br />

421


Appendix A: Troubleshooting<br />

422<br />

in security.properties:<br />

ldap.credential=xxxx<br />

ldap.principal=xxxx<br />

ldap.credential=xxxx<br />

ldap.principal=xxxx<br />

clear text passwords<br />

To create a support package in the GUI<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, connect to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> that<br />

you want to retrieve server files from.<br />

2 From the tree pane, select the Workflows and Documents or Configuration<br />

Management node, and then select <strong>Server</strong> Diagnostics > Collect Support Package.<br />

3 In the Target ZIP file for Support Package field, type a name for the ZIP file, for example,<br />

support.zip, or click Browse and locate an existing ZIP file to add the information to.<br />

4 Click Run Diagnostic. You are notified that the support package has been created.<br />

5 E-mail the support package to <strong>MKS</strong> Customer Care. For tips on what information to<br />

include when you contact <strong>MKS</strong> Customer Care, see “Environment Information” on<br />

page 402.<br />

To create a support package in the CLI when the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is not running<br />

From a command line, go to installdir/bin and type one of the following commands:<br />

On Windows:<br />

NOTE This command collects server files only.<br />

collectSupportPackage.exe zipFilename<br />

On UNIX:<br />

runstacktrace<br />

collectSupportPackage zipFilename<br />

where, zipFilename specifies the name of the ZIP file, for example, support.zip.<br />

<strong>MKS</strong> provides a stack trace monitor for generating server stack traces in cases where the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is unresponsive (hangs). The stack trace monitor does not rely on the<br />

si diag command. The command writes the stack trace and date/time information to a<br />

stacktrace file.


mksis<br />

To generate a stack trace, create a file called:<br />

installdir/data/runstacktrace<br />

where installdir is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Once you create the runstacktrace file, the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> then automatically<br />

creates the installdir/bin/stacktrace file and writes all stack trace and date/time<br />

information to it.<br />

To stop generating stack traces, remove the runstacktrace file in the installdir/data<br />

directory.<br />

You can also set the interval for the stack trace monitor to poll for the runstacktrace file. To<br />

set the monitoring interval, set the following property in the installdir/data/<br />

is.properties file:<br />

mksis.monitorInterval=<br />

IMPORTANT By default, the monitoring interval is 30 seconds. Setting a monitoring<br />

interval of less than 10 seconds can have adverse effects on performance.<br />

The mksis.bat (mksis in UNIX) file provides some administrative functionality for the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. The file is located in the following directory:<br />

installdir/bin/mksis[.bat]<br />

where installdir is the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> installation directory.<br />

The following is the syntax for the command:<br />

mksis subcommand<br />

where subcommand is one of the following:<br />

console starts the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in console mode as an application only without<br />

the service as specified in:<br />

installdir/config/<br />

install installs the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as an Windows NT service<br />

remove removes the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> service<br />

restart restarts the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> service<br />

safemode restarts the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in safemode (see “Starting <strong>Server</strong> in Safe<br />

Mode” on page 426)<br />

start starts the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> service (Windows) or daemon (UNIX)<br />

mksis<br />

423


Appendix A: Troubleshooting<br />

isutil<br />

424<br />

stop stops the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> service (Windows) or daemon (UNIX)<br />

To assist with managing the database repository, the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> includes a series<br />

of isutil commands. The isutil commands allow you to perform a variety of<br />

maintenance and configuration tasks related to the database repository while the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is not running.<br />

If you experience cache corruption issues or are restoring your repository from a backup, a<br />

cold restart of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> may be required. The isutil command allows you to<br />

flush and rebuild all or specific caches when you restart the server, resulting in a potentially<br />

lengthy downtime before users can access the server. To determine if you need to perform a<br />

cold restart, contact <strong>MKS</strong> support.<br />

The isutil utility is installed with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in the installdir/bin directory.<br />

CAUTION Certain isutil commands can permanently alter the database and<br />

cannot be undone. <strong>MKS</strong> recommends using these commands only with guidance<br />

from <strong>MKS</strong> Customer Care or <strong>MKS</strong> Professional Services.<br />

Command usage is:<br />

isutil -c command [-?] [-d] [command-arguments]<br />

where command is one of the following:<br />

aclcreate creates or resets the ACL table in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> database.<br />

acldestroy deletes the ACL table in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> database<br />

aclexists tests whether the ACL table exists in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> database.<br />

aclmigrate migrates the ACL entries table to the latest version (database schema). No<br />

action is taken if the tables are already at the current schema level.<br />

blobperf tests the performance of BLOB access in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> database.<br />

cmactiveon enables the maintenance of ArchiveShared and active-project properties.<br />

cmalterarchivebasename changes the archive base name.<br />

cmalterdirname changes the directory tree name.<br />

CAUTION The cmalterdirname command is not intended as a general purpose<br />

rename gesture. Several external references are not updated by the command.<br />

Contact <strong>MKS</strong> Customer Care for more information.<br />

cmalterprojectbasename changes the project base name.


cmdbcreate creates and initializes the configuration management database repository<br />

tables.<br />

cmdbmigrate migrates the configuration management database repository tables to the<br />

latest version (database schema). No action is taken if the tables are already at the<br />

current schema level.<br />

CAUTION The cmdbmigrate command cannot be reversed because there is no<br />

reverse migration tool. Because the new database schema does not operate with<br />

older versions of <strong>MKS</strong> <strong>Integrity</strong>, ensure that you have a backup of your database<br />

before running the command.<br />

cmlist lists the names of the requested object type from the database.<br />

dbinstall sets up the database similar to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> installer.<br />

diag runs an <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> diagnostic. For a list of diagnostics, see “To run<br />

server diagnostics in the CLI” on page 417.<br />

imdbcreate creates and initializes the workflow and document database tables.<br />

imdbdestroy deletes the workflow and document database tables.<br />

imdbgetversion retrieves the current workflow and document database schema<br />

version.<br />

imdbmigrate migrates the workflow and document database tables to the current<br />

Schema.<br />

imdbrebuildtable rebuilds the specified database table. You can specify the location<br />

for the table to be stored, another location for its LOB data, and another location for its<br />

indexes (for example, isutil -c imdbrebuildtable <br />

[ [ []]]).<br />

metrics runs database metrics. For a list of metrics, see “To run server diagnostics in the<br />

CLI” on page 417.<br />

migrateserverconfig migrates your existing <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> configuration to a<br />

new <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> installation.<br />

sidbcreate creates and initializes the configuration management tables.<br />

An example of isutil command usage is as follows:<br />

C:\Program Files\<strong>MKS</strong>\<strong>Integrity</strong><strong>Server</strong><strong>2009</strong>\bin\isutil -c aclcreate<br />

isutil<br />

425


Appendix A: Troubleshooting<br />

Starting <strong>Server</strong> in Safe Mode<br />

426<br />

Starting the server in safe mode provides the application administrator with a way to<br />

perform configuration tasks while preventing all other users from accessing the system.<br />

While in safe mode, from either the GUI or the CLI, the administrator may configure global<br />

permissions and administer the <strong>MKS</strong> Domain.<br />

Note the following about using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in safe mode:<br />

Only one user may log in.<br />

All ACL permission verification is disabled for the user logged in.<br />

The administrator does not have access to workflow and document management, and<br />

configuration management functions.<br />

To start the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in safemode from the CLI<br />

To start the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in safe mode, use the mksis command (see “mksis” on<br />

page 423). The following is the command syntax for starting the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> in safe<br />

mode:<br />

where<br />

installdir/bin/mksis console safemode password<br />

installdir is the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> installation directory<br />

password creates a new password for this safemode session<br />

The user name for logging into the server in safe mode is safemode, and the password is the<br />

password specified on server start.<br />

You can script the server start in safemode by modifying the following file:<br />

installdir/config/<br />

The properties are:<br />

wrapper.java.additional.8=-Dmks.safemode=<br />

wrapper.java.additional.9=-Dmks.safemode.password=


Troubleshooting Database Repository<br />

Starting <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

Troubleshooting Database Repository<br />

To start the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, follow the procedures outlined in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

<strong>2009</strong> Installation and Configuration <strong>Guide</strong>.<br />

NOTE If the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> and database repository are on separate machines,<br />

and both machines are running with JVM, the machines must be set to the same<br />

locale or the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> may not start.<br />

Database Connections After Routine Backups<br />

When performing a routine backup of your database that requires the database to be<br />

disconnected, you should wait until the database is fully online before attempting to run any<br />

commands from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. If the database is not fully online before running a<br />

command, an error message is posted.<br />

Archives for Dropped and Added Migrated Members<br />

When using the database repository option for configuration management, dropping a<br />

migrated project member and re-adding the member of the same name does not cause the<br />

member archive to branch. Instead, a new archive is created without the RCS directory. If you<br />

want to reuse the archive, add the member using the Add From Archive command (see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>).<br />

Controlling Bulk Data Storage in Oracle<br />

Where Oracle is used for the database repository, you can control the storage of bulk data by<br />

controlling the storage of the VALUE column in the CMARCHBULK table. Oracle Locator Object<br />

(LOBs) data is now supported for the database repository.<br />

DB2 and Transaction Log<br />

If you are using a DB2 database and you encounter a “not enough storage” error message in<br />

the transaction log, modify the app_ctl_heap_sz parameter by typing the following from<br />

the DB2 Command Line Processor on the DB2 server:<br />

db2=> update db cfg for DBname using app_ctl_heap_sz 1024<br />

where DBname is the name the local DB2 Client uses to reference the database. For large<br />

transactions, values in the order of 4096 may be required.<br />

Adding Large Files on MS SQL <strong>Server</strong> Database<br />

Adding large files (for example, files larger than 250 MB) is not supported on the MS SQL<br />

<strong>Server</strong> database and can cause a connection timeout to the database.<br />

427


Appendix A: Troubleshooting<br />

428<br />

MS SQL <strong>Server</strong> Database Uses Case-sensitive Collation<br />

If you are using MS SQL <strong>Server</strong> as the backing database for the repository, you must<br />

configure a case-sensitive collation when creating the database or the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

service will not start. A collation specifies the bit patterns that represent each character and<br />

the rules by which characters are sorted and compared.<br />

NOTE Case-sensitive collation is not addressed in the case sensitivity setting for<br />

configuration management project names.<br />

IMPORTANT If the installer cannot alter an existing <strong>MKS</strong> <strong>Integrity</strong> database due to<br />

case mismatches, workflow and document and configuration management<br />

functionality will have to run in separate, named databases on separate<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>s.<br />

Locale Mismatch When Installing With Database Repository Option<br />

When installing the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> with the database repository option, a mismatch<br />

can occur between the installer JVM and server JVM locales when setting the default case<br />

sensitivity for the SQL <strong>Server</strong> database. The mismatch does not occur when the case sensitive<br />

option is enabled for the database.<br />

To correct the locale mismatch problem, run the following SQL statement:<br />

update CMSCHEMAPROP set VALUE='en_US' where<br />

NAME='CMInsensitivityLocale'<br />

If you encounter any problems installing or using the database repository, contact<br />

<strong>MKS</strong> Customer Care.<br />

Troubleshooting Kerberos and Kerberos Single<br />

Sign-On<br />

The following error messages may appear in log files or debugging information if the<br />

Kerberos or Kerberos Single Sign-On has not been set up correctly.<br />

NOTE To turn debugging on, add mks.security.debug=true to<br />

security.properties.<br />

ERROR(0): No valid credentials provided (Mechanism level: <strong>Server</strong> not<br />

found in Kerberos database (7))<br />

If this error message appears in the client side log file, your<br />

mks.security.clientServiceName setting is not correct. Make sure it is set to be the<br />

name of the user the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is running as.


Troubleshooting Kerberos and Kerberos Single Sign-On<br />

WARNING(0): The registry key required to support Kerberos Single-<br />

Sign-On is missing. You may wish to add them manually.<br />

WARNING(0): <strong>Integrity</strong> <strong>Server</strong> does not allow registry key to be<br />

automatically added. Either add the key manually or consult your<br />

<strong>Integrity</strong> <strong>Server</strong> administrator<br />

WARNING(0): On Windows <strong>Server</strong> 2000 and 2003 the key<br />

"allowtgtsessionkey" in HKEY_LOCAL_MACHINESystem\CurrentControlSet\<br />

Control\Lsa\Kerberos\Parameters with value 1 should be added (reboot<br />

may be required).<br />

If any of these error messages appear in the client side log file, the client side registry key<br />

is missing.<br />

ERROR(0): No valid credentials provided (Mechanism level: Failed to<br />

find any Kerberos Ticket)<br />

If this error appears in the client side log file, either the mks.security.<br />

kerberosRealmName or mks.security.kdcAddress setting is wrong, for example, the<br />

realm name is not entered in uppercase.<br />

15:52:35,661 INFO [<strong>Integrity</strong><strong>Server</strong>] DEBUG(10): Login exception<br />

encountered while attempting authentication of user kmorton via<br />

policy default-policy. Details of exception No valid credentials<br />

provided (Mechanism level: Failed to find any Kerberos Key)<br />

If this error message appears in the server side log file, the mks.security.SPN setting<br />

does not match the -princ option given in the ktpass command.<br />

17:37:03,208 INFO [STDOUT] error Message is Client not found in<br />

Kerberos database<br />

If this error message appears in the Kerberos debug information, there is a problem with<br />

the keytab file. It may contain an invalid principal name, or the mks.security.SPN<br />

setting may not match the -princ option given in the ktpass command.<br />

DEBUG(10): Login exception encountered while attempting<br />

authentication of user ldaprealmtest1 via policy default-policy.<br />

Details of exception Pre-authentication information was invalid (24)<br />

If this error message appears in the server log when trying to authenticate using either a<br />

windows_clear or windows_private security policy, the case is wrong in the<br />

mks.security.kerberosRealmName or mks.security.kdcAddress setting in<br />

security.properties.<br />

DEBUG(10): Login exception encountered while attempting<br />

authentication of user ldaprealmtest1 via policy default-policy.<br />

Details of exception Clock skew too great (37)<br />

If this error appears in the server log when trying to authenticate using either a<br />

windows_clear or windows_private security policy, the clock on the server is not<br />

synchronized with the clock on the client machines. For the Kerberos authentication<br />

429


Appendix A: Troubleshooting<br />

430<br />

domain to work, the server and client clocks must be synchronized (within a reasonable<br />

amount of time).<br />

For additional troubleshooting information, visit the following Web page:<br />

http://java.sun.com/j2se/1.4.2/docs/guide/security/jgss/tutorials/<br />

Troubleshooting.html<br />

Troubleshooting Configuration Management<br />

Reporting<br />

For clients to be able to run configuration management reports, you must specify Microsoft<br />

Access as the report application in the <strong>Integrity</strong>ClientInstallDir\<strong>Integrity</strong>ClientSite.rc<br />

file. This file is updated automatically if you select MS Access as the reporting application<br />

during the client installation. However, if MS Access is not installed at the time of the client<br />

installation, you will not be able to select it as your reporting application, and the client will<br />

not be able to run configuration management reports.<br />

If MS Access is installed on a client after <strong>MKS</strong> <strong>Integrity</strong> has been installed, you can manually<br />

set the si.databaseCommand property in the <strong>Integrity</strong>ClientSite.rc file to specify the<br />

path of MS Access and of the MS Access database, for example:<br />

si.databaseCommand="C:\\program files\\microsoft<br />

office\\office10\\msaccess.exe" "C:\\program<br />

files\\<strong>MKS</strong>\\bin\\sirept2000.mdb" /runtime /excl /cmd "{0}"


A PPENDIX B<br />

Glossary<br />

Definitions of Common Terms<br />

B<br />

This glossary provides a glossary of common terms and definitions for <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>, <strong>MKS</strong> <strong>Integrity</strong>, and <strong>MKS</strong> <strong>Integrity</strong>.<br />

author A value for the Reference Mode field which signifies that the user or group has<br />

full permissions to modify the document item. Modification of the document item will<br />

force a branch for all other Reuse references. Changes to the document made in Author<br />

reference mode do not result in a branch of the document.<br />

change orders Change orders are process items that control the authorization of change<br />

to a document or document item.<br />

change requests Change requests are process item that track the request to effect<br />

change to a document or document item. Change requests may or may not be related to<br />

document. When change requests are accepted, change orders are created to authorize<br />

the change.<br />

couplet A couplet is the architectural term for the node and shared item <strong>MKS</strong> <strong>Integrity</strong><br />

items. Together these create a document item and facilitate sharing and reuse use cases.<br />

data model The combination of <strong>MKS</strong> <strong>Integrity</strong> item types, fields, relationships and<br />

other administration objects that define a system and its basic behaviours.<br />

document A document is an <strong>MKS</strong> <strong>Integrity</strong> item type class that represents a container<br />

for grouping and managing document items at a high level.<br />

document class The term used in <strong>MKS</strong> <strong>Integrity</strong> to describe different types of<br />

documents (segment) and content (nodes) in the document model.<br />

document item A generic term for describing a node/shared item or a node/document<br />

pairing. Also substituted for content and couplet in certain instances.<br />

document model The term used to describe the inter-related components that make up<br />

and control the behavior of documents within <strong>MKS</strong> <strong>Integrity</strong>. The document model is<br />

defined and modified through various types within the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client and controls how segments, nodes, and shared items, interact with each other for<br />

the purposes of versioning and reuse. To learn more about the individual document<br />

model components, see see the ALM section of the <strong>MKS</strong> Knowledge Base.<br />

431


Appendix B: Glossary<br />

432<br />

domains Generic term used for describing a discipline or body of work like requirements<br />

management or test management. Encompasses all gestures, actors, and artifacts related to<br />

that discipline.<br />

external relationships The <strong>MKS</strong> <strong>Integrity</strong> relationship fields that link artifacts within a<br />

domain to process items like Change Requests and Change Orders.<br />

meaningful A node or segment is defined as meaningful by editing the Shared Category<br />

FVA field. Artifacts are usefully marked as meaningful and non-meaningful for reporting<br />

purposes. See the field computation for details.<br />

node The internal <strong>MKS</strong> <strong>Integrity</strong> architectural term for content item or subdocument.<br />

non meaningful A node or segment is defined as nonmeaningful by editing the Shared<br />

Category FVA field. Artifacts are usefully marked as meaningful and non-meaningful for<br />

reporting purposes. See the field computation for details.<br />

reuse A value for the Reference Mode field which signifies that the content belongs to<br />

another document and is being referenced by the current document. Any user or group with<br />

the applicable permissions can modify the content and any modification will not affect any<br />

other reference to the same item. If a change is made, the system will branch the item and the<br />

branched item will then have a Share reference to it.<br />

segment The internal <strong>MKS</strong> <strong>Integrity</strong> architectural term for document. A segment is<br />

represented by the Document item type but is also referred to generically as document.<br />

Subsegments are subdocuments. Also Segment Roots.<br />

segment roots The internal <strong>MKS</strong> <strong>Integrity</strong> architectural term for top level document.<br />

Documents that are not included or referenced inside of other documents.<br />

share A value for the Reference Mode field which signifies that the user (or group) of a<br />

document is referencing a shared item. It cannot be edited directly and it will show all<br />

changes made by the Author to the shared item.<br />

shared item An <strong>MKS</strong> <strong>Integrity</strong> item type class that represents the shared or common<br />

content across all instances of a document item.<br />

significant fields The list of <strong>MKS</strong> <strong>Integrity</strong> fields within a document item that cause the<br />

system to version or branch that document item.<br />

solution template A pre-configured set of <strong>MKS</strong> <strong>Integrity</strong> item types, fields, triggers, queries,<br />

reports and other administrative objects used to demonstrate how the platform can be used<br />

to solve the challenges of a particular domain. <strong>MKS</strong> offers solution templates for Iterative,<br />

Waterfall, ITIL, Application Service Management, Test Management, Application Lifecycle<br />

Management (ALM), Re-use Enabled Requirements Management and other processes and<br />

disciplines.<br />

trace relationship The <strong>MKS</strong> <strong>Integrity</strong> relationship field(s) which link artifacts within a<br />

domain or between domains using the Verifies/Verified By relationship between<br />

requirements and tests.


A change package is a group of changes made by a single user that can be considered a<br />

logical unit of work. Only the creator of a change package can add entries to that change<br />

package. Change package entries are added when you specify a change package while<br />

performing member operations. 345<br />

A change package review is a review of changes by specified reviewers before the changes<br />

are committed to the server repository. 346<br />

A change package reviewer is a user specified by your administrator to review change<br />

packages containing members associated with specific projects. The reviewer may be<br />

individually specified or a member of a specified reviewer group. In the case of a reviewer<br />

group, any member of that group casts an accept or reject vote on behalf of the entire group.<br />

346<br />

A change package watcher is a user specified by your administrator who is notified when a<br />

reviewed change package is closed after being successfully committed to the repository.<br />

Change package watchers may be individually specified or a member of a specified watcher<br />

group. 346<br />

A dashboard is a static, user-definable view comprised of any combination of charts, reports,<br />

images, labels, and links to reports, queries and Web sites. 6<br />

A graphical user interface, or GUI, is a program interface that uses a number of visual<br />

components (such as icons, pointers, and pull-down menus) to execute commands. Working<br />

in a GUI allows the user to give instructions to the computer without having to learn a<br />

specific command language. The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client interface is a GUI<br />

designed for carrying out most administrative commands from a central location. 10<br />

A query is a request to select and list the items that meet specific selection criteria. The<br />

selection criteria are a logical expression of specific values, or ranges of values, of the<br />

standard and custom fields of the item type. 240<br />

A shared subproject is a subproject that is a member of more than one configuration<br />

management project. You can share a subproject between two or more projects by referencing<br />

the original subproject. A shared subproject allows you to access common members across<br />

many projects. Shared subprojects are not required to be located within the same directory<br />

structure or project hierarchy. 286<br />

A super reviewer is a user with permission to vote on change packages, but who is not<br />

required to be a listed reviewer for the change package. Voting as a super reviewer overrides<br />

all other votes. For example, casting an accept vote as a super reviewer is sufficient for<br />

accepting the change package. 346<br />

A user is anyone who needs to work with one or both of <strong>MKS</strong> <strong>Integrity</strong> components. Users<br />

are assigned user permissions by the administrator. Users are also assigned to groups that<br />

have specific <strong>MKS</strong> <strong>Integrity</strong> group permissions assigned by the administrator. 4<br />

A ViewSet is a collection of views in a specific configuration that persists each time the user<br />

opens and closes the <strong>MKS</strong> <strong>Integrity</strong> Client. As an administrator, you have the ability to<br />

control the configuration of ViewSets. Each ViewSet can be designed around one or more<br />

433


Appendix B: Glossary<br />

434<br />

tasks, often corresponding to a specific role, such as a developer or project manager. For<br />

example, a developer ViewSet might contain views and actions for items and queries, while a<br />

project manager ViewSet might contain views and actions for charts, reports, and<br />

dashboards. 50<br />

Admin provided objects are objects within the workflow and document object model that<br />

support solution definition and management, as well as workflow migration. 244<br />

Charts are graphs that present trends over time or distributions of the data in your project.<br />

Charts are based on the standard and custom fields of item types. You can display trend<br />

charts as line or bar graphs, and distribution charts as pie or bar graphs. You can also display<br />

data in tabular form. 240<br />

Importing a configuration management project registers it with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Once a project is imported, <strong>MKS</strong> <strong>Integrity</strong> commands can be performed upon it. 268<br />

In workflow and document management, a project contains labels that help you sort and<br />

organize items in a hierarchical structure. 5<br />

<strong>MKS</strong> <strong>Integrity</strong> allows you to create large configuration management projects composed of<br />

smaller component projects. These smaller projects are known as subprojects. Subprojects<br />

behave in the same way as projects and can be accessed with most project and Sandbox<br />

commands. 284<br />

<strong>MKS</strong> <strong>Integrity</strong> project administrators are allowed to edit and view workflow and document<br />

projects. Project administrators can also manage all child projects of the project they are<br />

approved for. Project administrators cannot edit projects assigned to another project<br />

administrator, and they can only create and delete subprojects—they cannot create top level<br />

projects unless they have been granted the CreateProject permission. 262<br />

Presentation templates are customizable layouts for displaying items in <strong>MKS</strong> <strong>Integrity</strong>.<br />

<strong>MKS</strong> <strong>Integrity</strong>’s presentation template designer allows you to customize the layout and<br />

display of items in your <strong>MKS</strong> <strong>Integrity</strong> database. The template designer incorporates drag<br />

and drop functionality to help you create a custom layout for a selected item type. 191<br />

relevance Relevance is a set of field conditions that determine which fields are relevant to<br />

selected groups of users or to specified field values. Fields that do not meet the relevance<br />

rules are not visible to users. 134<br />

state In <strong>MKS</strong> <strong>Integrity</strong>, item types can each have their own set of states to advance through.<br />

They can also follow a state model defined by the project administrator, giving greater<br />

control over who has access to a specific item type at a given time, as well as who has<br />

responsibility for approving the advancement of the state. 77<br />

super administrator For <strong>MKS</strong> <strong>Integrity</strong>, the person who sets up and configures<br />

<strong>MKS</strong> <strong>Integrity</strong> is referred to as the super administrator. The super administrator can also<br />

delegate certain tasks related to projects for workflows and documents and types to a project<br />

administrator and type administrator. 74


The administrator installs and/or configures, workflows and documents; configuration<br />

management; and the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. For <strong>MKS</strong> <strong>Integrity</strong>, the administrator also<br />

installs the database on a network, defines and customizes item types and workflow, and<br />

creates additional user accounts, allowing users to access the program. 4<br />

The CLI is a program that allows a user to enter keywords as instructions to a computer or<br />

device to perform specific tasks. (The MS-DOS® command prompt is an example of a CLI.)<br />

Results are typically output as simple text to the user’s terminal. More specifically, the CLI<br />

provides the means for you to enter <strong>MKS</strong> commands through a text-based interface. The<br />

primary use of the CLI is for scripting. The CLI is also useful for environments where no GUI<br />

is available. 42<br />

To drop a configuration management project means that the project is no longer registered<br />

with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Dropped projects can still be accessed as read only from the<br />

Change Package and Locks views until the project is purged or reclaimed by your<br />

administrator. 272<br />

type administrator <strong>MKS</strong> <strong>Integrity</strong> type administrators are allowed to edit and view types.<br />

Type administrators are not allowed to assign themselves as administrators to any other<br />

types, or to edit types that are assigned to other type administrators. 95<br />

Workflow and document reports are summaries of the data in your project. Reports are<br />

based on the standard and custom fields of types. Reports can be customized to include<br />

images, fonts, and hyperlinks, and can be saved as HTML files for viewing on the Web.<br />

Configuration management reports provide an analysis of projects, members, or individual<br />

archives. Reports and graphs can be printed or viewed on screen. 221<br />

workflow Each item follows a workflow, the process established by your administrator to<br />

capture and track information during your software development cycle. Each item type can<br />

have its own set of states to advance through the development cycle. For example, a change<br />

request may go through states such as submitted, work started, tested, reviewed, and closed.<br />

Items and their current states provide change management information necessary to support<br />

business decisions. 153<br />

435


Appendix B: Glossary<br />

436


A PPENDIX C<br />

Options<br />

Views and Dialog Boxes<br />

This appendix includes detailed information about the available options in<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client views and dialog boxes.<br />

Workflows and Documents View Options<br />

Available Views Options<br />

View Item Display history shows the item history when viewing a single item.<br />

Display relationships shows the relationships when viewing a single item.<br />

C<br />

Display change packages shows associated change packages when viewing a single<br />

item.<br />

Display workflow shows the item type workflow when viewing a single item.<br />

Display attachments shows attachments when viewing a single item.<br />

Display time entries shows time entries when viewing a single item.<br />

History Order shows item history in ascending or descending order. Available options<br />

are: Most recent last and Most recent first.<br />

Display all attachment attributes shows all attachment attributes when viewing a<br />

single item.<br />

View Queries Created By shows the name of the user who created the query.<br />

Image shows any image, whether default or custom, associated with a query.<br />

Name shows the name of the query.<br />

Sort Field shows the field the query is sorted by.<br />

Description shows any information entered for the query description.<br />

Admin Provided shows whether or not the query is a shared administrative object.<br />

Shared With shows which groups and users the query is shared to.<br />

Fields shows the visible fields in the query.<br />

Last Modified shows the date the query was last modified.<br />

Sort Direction shows the direction the query is sorted by.<br />

The Toolbar allows you to customize the toolbar displayed on the interface when<br />

viewing users. For general procedures on customizing toolbars, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

437


Appendix C: Options<br />

Available Views Options<br />

View Reports Created By shows the name of the user who created the report.<br />

438<br />

Last Modified shows the date the report was last modified.<br />

Shared With shows which groups and users the report is shared to.<br />

Description shows any information entered for the report description.<br />

Name shows the name of the report.<br />

Admin Provided shows whether or not the report is a shared administrative object.<br />

Query shows the query the report is based on.<br />

The Toolbar allows you to customize the toolbar displayed on the interface when<br />

viewing users. For general procedures on customizing toolbars, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

View Charts Chart Type shows the type of chart (distribution, item fields, trend, or item fields trend).<br />

Graph Style shows the type of graph used to display the chart data.<br />

Name shows the name of the chart.<br />

Created By shows the name of the user who created the chart.<br />

Admin Provided shows whether or not the chart is a shared administrative object.<br />

Query shows the query the chart is based on.<br />

Description shows any information entered for the chart description.<br />

Last Modified shows the date the chart was last modified.<br />

Shared With shows which groups and users the chart is shared to.<br />

The Toolbar allows you to customize the toolbar displayed on the interface when<br />

viewing users. For general procedures on customizing toolbars, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

View Dashboards Created By shows the name of the user who created the dashboard.<br />

Last Modified shows the date the dashboard was last modified.<br />

Description shows any information entered for the dashboard description.<br />

Name shows the name of the dashboard.<br />

Admin Provided shows whether or not the dashboard is a shared administrative<br />

object.<br />

Shared With shows which groups and users the dashboard is shared to.<br />

The Toolbar allows you to customize the toolbar displayed on the interface when<br />

viewing users. For general procedures on customizing toolbars, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>2009</strong> Getting Started <strong>Guide</strong>.


Available Views Options<br />

View Users Description provides a column to display any information entered for the user<br />

description.<br />

Image shows any image, whether default or custom, associated a user.<br />

Name displays the column showing the name of the user.<br />

Email displays e-mail address information for users.<br />

Is Active displays the column showing whether the user is assigned active or inactive<br />

status.<br />

Notification Rule displays notification rules for users.<br />

Full Name displays the column showing the full name of the user.<br />

Is in Realm displays whether the user exists in the realm.<br />

The Toolbar allows you to customize the toolbar displayed on the interface when<br />

viewing users. For general procedures on customizing toolbars, see the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

View Groups Description provides a column to display any information entered for the group<br />

description.<br />

Is Active displays the column showing whether the group is assigned active or inactive<br />

status.<br />

Email displays e-mail address information for groups.<br />

Name displays the column showing the name of the group.<br />

Image shows any image, whether default or custom, associated a group.<br />

Query Timeout displays the query timeout setting, if set, for groups.<br />

The Toolbar allows you to customize the toolbar displayed on the interface when<br />

viewing groups. For general procedures on customizing toolbars, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

View Dynamic Groups Description provides a column to display any information entered for the dynamic<br />

group description.<br />

Image shows any image, whether default or custom, associated with a dynamic group.<br />

Name displays the column showing the name of the dynamic group.<br />

The Toolbar allows you to customize the toolbar displayed on the interface when<br />

viewing dynamic groups. For general procedures on customizing toolbars, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

View Projects Backing Item displays the ID of the item backing the project.<br />

Is Active displays whether or not the project is displayed in filtered project lists.<br />

Closed Image displays the image for closed projects.<br />

Name displays the column showing the name of the project.<br />

Description provides a column to display any information entered for the project<br />

description.<br />

Open Image displays the image for open projects.<br />

The Toolbar button allows you to customize the toolbar displayed on the interface<br />

when viewing projects. For general procedures on customizing toolbars, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

439


Appendix C: Options<br />

Available Views Options<br />

View Item States Description provides a column to display any information entered for the state<br />

description.<br />

Position displays the column showing the sequence of the state relative to other<br />

states.<br />

Image shows any image, whether default or custom, associated with a state.<br />

Name displays the column showing the name of the item state.<br />

The Toolbar button allows you to customize the toolbar displayed on the interface<br />

when viewing states. For general procedures on customizing toolbars, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

440


Available Views Options<br />

View Item Types Name displays the column showing the name of the item type.<br />

Attributes<br />

Show Workflow indicates whether the item type displays the workflow in items.<br />

Phase Field indicates the workflow phase field for the item.<br />

Time Tracking indicates whether the item type allows time tracking.<br />

Backs Project indicates whether the item type is used to back a project.<br />

Copy Tree indicates whether items of this type and all related items within the<br />

hierarchy to be copied.<br />

Branch indicates that items of this type can be branched by users who have<br />

applicable project visibility based on the branching rules set up for item types.<br />

Label indicates whether the items of this type can have labels applied.<br />

Delete Item indicates whether a type rule exists that specifies which users can<br />

delete items of the type.<br />

Image shows any image, whether default or custom, associated with an item type.<br />

Description provides a column to display any information entered for the type<br />

description.<br />

Change Packages indicates whether the item type can be associated with change<br />

packages.<br />

Document Model<br />

Document Class indicates the document class on a type: None, Segment, Node,<br />

Shared Item.<br />

Associated Type displays the associated type for segments and nodes. If the<br />

document class is Segment, the associated type is Node. If it is Node, the type is<br />

Shared Item.<br />

Associated State indicates the initial state to apply when a document is branched.<br />

Significant Edit Fields indicates whether or not to display the fields that are<br />

defined as significant; that is, that when they are changed, it results in an update to<br />

the revision.<br />

Group Document indicates whether items of this type are used to group test cases<br />

for test execution.<br />

Default Reference Mode applies the default reference mode to the type you are<br />

defining. Reference modes are Author, Share, Reference and are typically used in a<br />

document sharing scenario.<br />

Test Management displays the test role and settings for items that are part of test<br />

management.<br />

Permissions displays the groups that are allowed access to this type.<br />

Position displays the column showing the sequence of the item type relative to other<br />

types.<br />

Copy Fields indicates which fields are to be copied when items of this type are<br />

copied.<br />

The Toolbar button allows you to customize the toolbar displayed on the interface<br />

when viewing types. For general procedures on customizing toolbars, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

441


Appendix C: Options<br />

Available Views Options<br />

View Fields Allowed Types displays the types that the relationship fields can relate to. Valid only<br />

for fields of type relationship.<br />

Allowed Types are uneditable for the following relationship fields: Contains,<br />

Contained By, Referenced By, Shares, and Shared By.<br />

442<br />

The only Allowed Types on the References relationship field are those of type<br />

Segment.<br />

Display Location shows the display location of the field. Can be either the fields or<br />

relationship tab. Relevant only for fields of type relationship.<br />

Forward specifies whether the relationship field allows forward relationships. If<br />

cleared, it specifies a backward relationship field. Relevant only for fields of type<br />

relationship.<br />

Name displays the column showing the name of the field.<br />

Relationship Flags displays any relationship flags associated with the field. Only<br />

relevant for relationship fields.<br />

Cycle Detection specifies whether the system prevents relationship loops. Relevant<br />

only for fields of type relationship.<br />

Display Name shows the display name of the field, if any is assigned.<br />

Is Multi-Valued displays the column showing whether the field allows multiple values.<br />

Valid for pick, user, group, and relationship fields.<br />

Paired Field is the related backward/forward relationship field. Relevant only for fields<br />

of type relationship.<br />

Trace specifies whether the field is defined as a trace relationship.<br />

Description provides a column to display any information entered for the field<br />

description.<br />

Display Style shows the display style (table or CSV) of the field. Relevant only for fields<br />

of type relationship.<br />

Last Evaluation Time allows you to view the last time the static computed field (if<br />

enabled as this type of field) was computed.<br />

Position displays the column showing the sequence of the field relative to other fields.<br />

Type displays the type of field (for example, integer, pick, or long text, etc.).<br />

The Toolbar button allows you to customize the toolbar displayed on the interface<br />

when viewing fields. For general procedures on customizing toolbars, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

For more information on options, see “Creating Fields” on page 127.


Available Views Options<br />

View <strong>Server</strong> Triggers Assignments displays the column showing values assigned to specific fields when the<br />

trigger runs.<br />

Last Run Time allows you to view the last time the trigger was run.<br />

Position displays the column showing the sequence of the trigger relative to other<br />

triggers.<br />

Run As displays the column showing .<br />

Type displays the column showing the type of trigger (rule or scheduled).<br />

Attachment Fields: Values Tab<br />

Field Description<br />

Integer Fields: Values Tab<br />

Description provides a column to display any information entered for the trigger<br />

description.<br />

Name displays the column showing the name assigned to the trigger.<br />

Query displays the column showing the name of the query used in the trigger.<br />

Script displays the column showing the name of the script used in the trigger.<br />

Frequency displays the column showing the frequency at which the trigger runs.<br />

Parameters displays the column showing parameters assigned to the trigger.<br />

Rule Timing displays the column showing the timing of the trigger.<br />

The Toolbar button allows you to customize the toolbar displayed on the interface<br />

when viewing triggers. For general procedures on customizing toolbars, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> Getting Started <strong>Guide</strong>.<br />

Display Style Display the attachment field in table format or comma separated values (CSV) forma.<br />

Table format allows you to sort the attachments and manipulate the columns that<br />

display in the table. CSV format displays comma separated links to the attachments.<br />

Display Rows The number of rows to display for the attachment field when editing the item.<br />

Field Description<br />

Set Default Value Default value (maximum of 9 digits)<br />

Set Minimum Value Minimum value (maximum of 9 digits)<br />

Set Maximum Value Maximum value (maximum of 9 digits)<br />

Display as Progress Bar Show the field’s current value graphically as a proportion of its maximum value<br />

Computation Values Configure the field as a computed field. For information on configuring the<br />

Computation Definition, Store to History Frequency, and How to Run Computations<br />

fields, see “Creating Computed Fields” on page 313.<br />

Note: Setting the Computation Values option disables the Set Default Value, Set<br />

Minimum Value, and Set Maximum Value options.<br />

Display Pattern Select or type a pattern to assign a format to integer field values. For more information<br />

on, see “Display Patterns” on page 28.<br />

443


Appendix C: Options<br />

444<br />

Item Backed Picklist Fields: Values Tab<br />

Field Description<br />

Display As Link Displays the value selected in the IBPL as a hyperlink to the backing item.<br />

Allow Multiple<br />

Values<br />

Allow users to select more than one item in the IBPL field.<br />

Backing Type Item type containing the short text field you want to reference<br />

Item Identifier The field or fields in the backing item type that you want to use as pick text.<br />

For a single field, select the field name from the dropdown list and click Insert Field to add it to<br />

the Item Identifier field.<br />

For multiple fields, type the field names in the Item Identifier field, surrounding each with "{" and<br />

"}". For example: {ID}:{Project}/{Summary}. Make sure you specify actual names of<br />

fields not their display names.<br />

You cannot specify the following types of field:<br />

computed fields<br />

field value attribute<br />

item backed picklist fields<br />

relationship fields<br />

attachment fields<br />

Active States States used to populate the IBPL with backing items. Populating an IBPL with backing items in<br />

specific states essentially allows you to deactivate entries in an IBPL. For example, if an<br />

Employee item contains an Active and Inactive state, and you select Active as the Active<br />

States, only Employee items in a state of Active display as pick text in the IBPL field.<br />

Filter Filter values from the backing items based on specific criteria. The filter is defined the same way<br />

as a query filter. For information on how to define a filter, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Note: This filter is applied in addition to the filtering provided by the Backing Type and Active<br />

States options.<br />

Field Value Attribute Fields: Values Tab<br />

Field Description<br />

Relationship The field containing the backing item for the FVA field. This field can be any of the<br />

following:<br />

a relationship field (must be single-valued)<br />

an item backed pick list field<br />

the project field (if backing projects are enabled for the item type)<br />

Field The field in the backing item type that contains the value to display in the FVA field.<br />

The field must be visible in the backing item.<br />

Note: Do not select a relationship field. Use of relationship fields for FVA fields is not<br />

supported.


Pick Fields: Values Tab<br />

Field Description<br />

Allow Multiple Values Allow users to select more than one value from the picklist. For example, if three<br />

company offices are defined in <strong>MKS</strong> <strong>Integrity</strong>, users could select one, two, or all three<br />

offices when submitting an item or creating a query.<br />

Set Default Value Type the default value for the pick field. The default value can be any text string.<br />

Add Add picklist values. See “Add Pick Dialog Options” on page 445.<br />

Edit Edit the selected picklist value.<br />

Move Up<br />

Move Down<br />

Add Pick Dialog Options<br />

Change the order of the selected picklist value in the list.<br />

Sort Alphabetically Sort the picklist values by alphabetical label.<br />

Remove Remove selected picklist value(s) from the list that have not yet been saved.<br />

Field Description<br />

Label Text string for the picklist value.<br />

Value Number for the picklist value.<br />

Active Make picklist value active. By default, picklist values are active. To deactivate the<br />

picklist value, clear the Active check box. For more information on deactivating picklist<br />

values, see “Deactivating Picklist Values” on page 141.<br />

Use Custom Image Browse for the image file. If you choose to use your own custom icon image, the image<br />

must be in GIF or JPEG format, and no larger than 24 (width) by 16 (height) pixels.<br />

No Image No image associated with the value.<br />

Floating Point Fields: Values Tab<br />

Field Description<br />

Set Default Value<br />

Set Minimum Value<br />

Set Maximum Value<br />

Set the default, minimum, or maximum value. You can enter a negative exponent using<br />

the E number notation, for example, -123.1E-3.<br />

Specify a maximum of 15 digits. When edited in the Web interface only 12 digits are<br />

simultaneously visible.<br />

Computation Values Configure as a computed field. For information on configuring the Computation<br />

Definition, Store to History Frequency, and How to Run Computations fields, see<br />

“Creating Computed Fields” on page 313.<br />

Note: Setting the Computation Values option disables the Set Default Value, Set<br />

Minimum Value, and Set Maximum Value options.<br />

Display Pattern Select or type a display pattern to assign a format to floating point field values. For<br />

more information on, see “Display Patterns” on page 28.<br />

445


Appendix C: Options<br />

446<br />

Logical Data Fields: Values Tab<br />

Field Description<br />

Set Default Value true or false<br />

Computation Values Configure the field as a computed field. For information on configuring the<br />

Computation Definition, Store to History Frequency, and How to Run Computations<br />

fields, see “Creating Computed Fields” on page 313.<br />

Note: Setting the Computation Values option disables the Set Default Value options.<br />

Date Fields: Values Tab<br />

Field Description<br />

Include time Include the time with the date. Time is specified from 00:00:00 to 23:59:59<br />

inclusive in 24 hour format; however, <strong>MKS</strong> <strong>Integrity</strong> displays the time in 12 hour format.<br />

For example, specifying 13:56:45 displays the time as 1:56:45 PM.<br />

Important:<br />

Once you include the time and save the date field, you cannot change the date field<br />

to display the date only.<br />

Displayed date fields do not change based on the time zone that a user is operating<br />

in; however, displayed date/time fields vary based on the time zone that a user is<br />

operating in.<br />

Set Default Value<br />

Set MInimum Value<br />

Set Maximum Value<br />

Specify default, minimum, and maximum values, by selecting one or more of these<br />

options and clicking Change<br />

Computation Values Configure the field as a computed field. For information on configuring the<br />

Computation Definition, Store to History Frequency, and How to Run Computations<br />

fields, see “Creating Computed Fields” on page 313.<br />

Note: Selecting the Computation Values option disables the Set Default Value, Set<br />

Minimum Value, and Set Maximum Value options.


Short Text Fields: Values Tab<br />

Field Description<br />

Set Default Value Type a default value<br />

Maximum Length Maximum length for the field. Note the following:<br />

Decreasing the value does not truncate existing data nor affect how data is<br />

displayed in the Items view.<br />

When editing an item with a field containing legacy data that exceeds the new<br />

maximum value, submitting the item is unaffected if the affected field contents are<br />

unaltered by the user.<br />

When editing legacy field data that exceeds the new maximum value, the user is<br />

bound by the new maximum value and must reduce the data in order to submit the<br />

item.<br />

If logging is enabled for the field prior to reducing the maximum value, the logging<br />

field effectively becomes read-only.<br />

Caution: Increasing the maximum number of characters for a field contributes to the<br />

portion of the maximum row width used in the database table. Ensure that the changes<br />

you make are sustainable for future table data in your database. For more information,<br />

consult the documentation provided by the vendor for the database used.<br />

This value is used for both the <strong>MKS</strong> <strong>Integrity</strong> Client and Web interface. However,<br />

when the user edits a field in the Web interface, only 70 characters are<br />

simultaneously visible in the editable box.<br />

Suggestions Suggestions are text that appear in the short text field and can be overwritten by the<br />

user. Use the buttons on the right side of the field to work with suggestions.<br />

Substitute Parameters If a user specifies a parameter in this field using the following format {{}}, then this parameter name is replaced with a parameter value when you view<br />

the item through a view or report that supports parameter substitution.<br />

Computation Values Configure the field as a computed field. For information on configuring the<br />

Computation Definition, Store to History Frequency, and How to Run Computations<br />

fields, see “Creating Computed Fields” on page 313.<br />

Note: Selecting the Computation Values option disables the Set Default Value option.<br />

Create a Text Search Index Queries against the field are treated as word searches. The field is searched by the<br />

All Fields text search query.<br />

447


Appendix C: Options<br />

448<br />

Long Text Fields: Values Tab<br />

When viewing a parameter or parameter value field, all the fields on the Values tab are<br />

hidden except for Maximum Length, Display Rows and Create a Text Search Index.<br />

Field Description<br />

Set Default Value Type a default value.<br />

Note: If you enable the Rich Content option, a toolbar displays, allowing you to apply<br />

rich content. For more information on applying rich content, see the <strong>MKS</strong> <strong>Integrity</strong><br />

2007 User <strong>Guide</strong>.<br />

Maximum Length Enter a maximum length for the field. Note the following:<br />

Decreasing the value does not truncate existing data nor affect how data is<br />

displayed in the Items view.<br />

When editing an item with a field containing legacy data that exceeds the new<br />

maximum value, submitting the item is unaffected if the affected field contents are<br />

unaltered by the user.<br />

When editing legacy field data that exceeds the new maximum value, the user is<br />

bound by the new maximum value and must reduce the data in order to submit the<br />

item.<br />

If logging is enabled for the field prior to reducing the maximum value, the logging<br />

field effectively becomes read-only.<br />

When you set the maximum field length for long text fields that are configured for<br />

rich text, keep in mind that some symbols, especially those used outside the USA,<br />

may require multiple characters worth of storage for their representation. Use the<br />

maximum field length as a general guideline rather than as an absolute number.<br />

Caution: Increasing the maximum number of characters for a field contributes to the<br />

portion of the maximum row width used in the database table. Ensure that the changes<br />

you make are sustainable for future table data in your database. For more information,<br />

consult the documentation provided by the vendor for the database used.<br />

Display Rows Number of rows to display in the Item Details. The maximum is 80 rows.<br />

Logging Specify if the field logs user entries. Logging text fields limit the user to making new<br />

entries in the field and, therefore, do not permit the user to edit data that was entered<br />

previous to the last time the item was saved.<br />

Each time the user saves an item after making an entry in a logging text field, the user<br />

ID, entry date, and entry time are logged and then displayed as a stamp above the<br />

entry. The stamp uses approximately 30 characters per entry and must be taken into<br />

account when setting the maximum field length.<br />

The following are the available options :<br />

None specifies that the field is not a logging field.<br />

Most Recent First specifies that the order of the data in the log is always<br />

ascending with the user’s editable area located above the log.<br />

Most Recent Last specifies that the order of the data in the log is always<br />

descending with the user’s editable area located below the log.


Field Description<br />

Rich Content Configure field as a rich content field. Rich content enhances the display of text in long<br />

text fields by adding formatted text, tables, background colors, images, and hyperlinks.<br />

This option is enabled by default and does not support logging text fields.<br />

User Fields: Values Tab<br />

Caution: You can convert rich content fields back to long text fields; however, any<br />

existing rich content is displayed as HTML tags and attributes.<br />

Because rich content is expressed using a limited set of HTML elements and<br />

attributes, you can define screen and printer Cascading Style Sheets (CSS) that<br />

ensure a consistent look when viewing and printing rich content field data in different<br />

Web browsers. For more information, see “Customizing Rich Content Fields” on<br />

page 216.<br />

Default Attachment Field The field that images are retrieved from in the item when images are inserted into a<br />

rich content field using an attachment field. The default is the default Attachment field.<br />

Substitute Parameters If a user specifies a parameter in this field using the following format {{}}, then this parameter name is replaced with a parameter value when you view<br />

the item through a view or report that supports parameter substitution.<br />

Create a Text Seach Index Queries against the field will be treated as word searches. The field will be searched<br />

by the All Fields text search query.<br />

Field Description<br />

Allow Multiple Values Allow multiple users to be selected in the user list. Allowing multiple values for a user<br />

field facilitates group development. For example, if you allowed multiple values for the<br />

Assigned User field, you could assign multiple users to an item, enabling them to work<br />

in parallel on the same item.<br />

Set Default Value Click the list, and select a default user from the selection panel that displays. If the field<br />

allows multiple values, you can select multiple default values. For information on<br />

selecting users, see “Filtering Data” on page 18.<br />

Note: If you change a multi-valued field to a single-valued field and multiple default<br />

values are selected, all selections are cleared except the first selection in the list.<br />

Note: The symbolic -me- is not available for custom user fields.<br />

449


Appendix C: Options<br />

450<br />

Group Fields: Values Tab<br />

Field Description<br />

Allow Multiple Values Allow multiple groups to be selected in the group list. Allowing multiple values for a<br />

group field facilitates group development. For example, if you allowed multiple values<br />

for the Assigned Group field, you could assign multiple groups to an item, enabling<br />

them to work in parallel on the same item.<br />

Set Default Value Click the list, and select a group from the selection panel that displays. If the field<br />

allows multiple values, you can select multiple default values. For information on<br />

selecting users, see “Filtering Data” on page 18.<br />

Note: If you change a multi-valued field to a single-valued field and multiple default<br />

values are selected, all selections are cleared except the first selection in the list.<br />

Note: The symbolic -me- is not available for custom user fields.<br />

Relationship Fields: Values Tab<br />

Field Description<br />

Types Item type that is to use the relationship field<br />

Allowed Types Item types that can be linked to using the relationship field.<br />

For example, to allow the field to be used to create relationships between<br />

documentation items and bugs, select Docs under Available Types and add Bugs to<br />

the Allowed Types. Then select Bugs under AvailableTypes, and add Docs to the<br />

Allowed Types.<br />

Allowed Types are uneditable for the following fields: Contains, Contained By,<br />

Referenced By, Shares, and Shared By.<br />

Repeat the selection process for additional item types.<br />

Note: You can create heterogeneous and homogenous segments using allowed types.<br />

To learn how to create homogeneous subsegments, see “Setting Up Documents” on<br />

page 97.<br />

To learn how to create heterogeneous subsegments, see the ALM Knowledge Base.<br />

Cycle Detection To prevent relationship loops from occurring. A relationship loop occurs when an item<br />

has both a forward and a backward relationship with another item within the same<br />

relationship hierarchy. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong> User <strong>Guide</strong>.<br />

Trace Sets the field as a trace relationship.Trace relationships are defined via field pairs are<br />

and presented to the user in domain-specific language, for example, Test and<br />

Requirements. To learn more about trace relationships, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>2009</strong><br />

User <strong>Guide</strong>.<br />

Forward and Backward<br />

tabs<br />

The fields used for forward and backward relationships.<br />

For example, if you are defining a relationship field to track defects related to an item,<br />

the forward relationship field could be named Defects and the backward relationship<br />

field could be named Defects Of.<br />

Name Name of the relationship field. The name you enter is also used for the backward<br />

relationship field and prefixed with the word Backward. You can edit this name.<br />

Note: Once the field is created, changes to the name of the forward relationship field<br />

are not carried over to the backward relationship field name.


Field Description<br />

Multi Valued Allow links to multiple items. For example, a field used to track defects on an item<br />

would need to allow multiple linked items; a field used to identify the documentation<br />

item used for documenting the changes made by a change order item would only need<br />

to allow a single linked item.<br />

Note: If you want a single-valued relationship field to be able to be changed using<br />

drag-and-drop in the Relationships view, you must make it visible on the appropriate<br />

item types. For example, if you have Documented By and Documentation For as a set<br />

of relationship fields, and the Documented By field is single-valued, if you want users<br />

to be able to change the related documentation item for a change order item using<br />

drag-and-drop, the Documented By field must be visible on the change order item<br />

type.<br />

Set Default Browse Query Sets a default query to use when browsing for items to add to the relationship field.<br />

Use the data filter to select an Admin query as the default browse query. If there are no<br />

Admin queries, this option is unavailable. For more information on creating Admin<br />

queries, see “Admin Provided Objects” on page 242.<br />

Display Style Display the relationship field in table format or in a comma separated values (CSV)<br />

format. The table format allows you to sort the linked items and manipulate the<br />

columns that display in the table. The CSV format only displays the IDs and<br />

relationship flags of the linked items.<br />

Display Rows Number of rows to display for the relationship field when editing the item.<br />

Show Variable Height<br />

Rows<br />

Variable height rows allow you to view rows expanded to the height of the data<br />

contained in them.<br />

Relationship Flags Relationship flags are used to indicate when a related item has changed. To add<br />

relationship flags for the field click Add. For more information, see “Add Relationship<br />

Flag Dialog Box Options” on page 451.<br />

Notes:<br />

A user must be licensed for configuration management to be able to use relationship<br />

flags in an item.<br />

Relationship flags defined for relationship fields can be set automatically through a<br />

field rule. For more information on defining rules for fields, see “Setting Field Rules”<br />

on page 137.<br />

Add Relationship Flag Dialog Box Options<br />

Field Description<br />

Name Name of the relationship flag<br />

Character Single character to display when the flag is set on a relationship field using the CSV<br />

display style or when the relationship is viewed through the CLI. You cannot use<br />

numbers as relationship flag characters.<br />

Select Locate the image you want to use for this type of relationship flag in a relationship field<br />

using a table format. The image must be in a JPEG or GIF format and no larger than<br />

24 by 16 pixels.<br />

451


Appendix C: Options<br />

Field Description<br />

Suspect Allows you to define a suspect flag for items at the field level. When a there is a<br />

significant edit to a document item with a field pointing to it that is flagged as suspect,<br />

all related items using that field will be flagged as suspect.<br />

Enabled You are using this relationship flag<br />

452<br />

Phase Fields: Values Tab<br />

Field Description<br />

Add Add a phase to the Phases list. See “Add Phase Dialog Box Options” on page 452.<br />

Edit Edit the phase selected in the Phases list.<br />

Move Up<br />

Move Down<br />

Remove<br />

Remove All<br />

Note: You cannot edit the Out of Phase phase. This phase identifies the states that<br />

are not included in any user defined phase.<br />

Change the order of a selected phase in the list<br />

Remove one or more selected phases from the list, or remove all phases<br />

Add Phase Dialog Box Options<br />

Field Description<br />

Label Assign a text string to the phase<br />

Available States Select the states that are included in the phase, and add them to the Phase States.<br />

Note: No two phases can use the same state.<br />

Use Custom Image Assign an icon image to the phase. Browse for the image file. The image must be in<br />

GIF or JPEG format, and no larger than 24 (width) by 16 (height) pixels.<br />

No Image No image associated with the phase<br />

Query Backed Relationship Fields: Values Tab<br />

Field Description<br />

Query Select a query that determines what items are displayed in the field. Only administrator<br />

queries appear in the list.<br />

Field Correlation Correlate a field contained in the item with a field in the items returned by the query.<br />

This allows you to return even more specific query results.<br />

For example, if you create a query backed relationship field called Defects for the<br />

Feature type, and select Project as the Source Field and Project as the Target<br />

Field, the Defects field displays all Defect items that have the same project as the one<br />

specified in the Feature type’s Project field.<br />

This option is not mandatory; however, if it is not specified, the list of relationships<br />

returned does not change with different items.


Field Description<br />

Display Style Display the items in table format or in a comma separated values (CSV) format. The<br />

table format allows you to sort the items and manipulate the columns that display in the<br />

table. The CSV format only displays the IDs of the items.<br />

Display Rows The number of rows to display for the query backed relationship field when editing the<br />

item. You can specify from five to 80 rows.<br />

Show Variable Height<br />

Rows<br />

Range Fields: Values Tab<br />

Field Description<br />

Display variable height rows for the query backed relationship field when editing the<br />

item.<br />

Associated Field A numeric field to associate with the range field.<br />

You can associate a numeric field with any number of range fields.<br />

Add Add a range to the Ranges list. See “Add Range Dialog Box Options” on page 453.<br />

Move Up<br />

Move Down<br />

Remove<br />

Remove All<br />

Change the order of a selected range in the list.<br />

Remove one or more selected ranges from the list, or remove all ranges.<br />

Add Range Dialog Box Options<br />

Field Description<br />

Label Text string for the range category. Range labels can be up to 100 characters.<br />

Value Use the From and To lists to specify values for the lower and upper range limits.<br />

If a lower limit is not set, -Infinity is automatically entered in the From field. If an<br />

upper limit is not set, Infinity is automatically entered in the To field.<br />

A numeric value must be contained in one defined range; range intersections are<br />

invalid. For example, the following ranges are invalid: 0–5 and 4–8, or 0–5 and 5–10.<br />

For an integer field, an acceptable range would be 0–5 and 6–10. For a floating<br />

point field, an acceptable range would be 0–5 and 5.01–10.<br />

If a value is entered in the associated numeric field that is beyond the set range<br />

values, the range field displays Out of Range in the item. If no value is entered in<br />

the associated numeric field, the range field is empty.<br />

Use Custom Image Assign an icon image to the range. Browse for the image file. The image must be in<br />

GIF or JPEG format, and no larger than 24 (width) by 16 (height) pixels.<br />

No Image No image associated with the range<br />

453


Appendix C: Options<br />

454


Index<br />

A<br />

access keys<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client 17<br />

admin migration<br />

copying database 168<br />

e-mail notification 167<br />

managing admin locks 169<br />

staging server startup 168<br />

testing configuration 169<br />

using admin locks 171<br />

wizard 161–177<br />

using 171<br />

admin provided object<br />

converting to 243<br />

admin provided objects, described 242<br />

<strong>Administration</strong> Client<br />

application window 13<br />

command line interface 42<br />

connecting to an <strong>Integrity</strong> <strong>Server</strong> 29<br />

disconnecting from an <strong>Integrity</strong> <strong>Server</strong> 31<br />

opening the interface 10<br />

preferences<br />

setting 38<br />

shutting down the interface 12<br />

workflows and documents<br />

Change Package Types view 325<br />

Fields view 125<br />

Projects view 249<br />

States view 77<br />

Types view 83<br />

administrator<br />

assigning 74–77<br />

described 4<br />

<strong>MKS</strong> <strong>Integrity</strong><br />

project 74, 260<br />

super 74<br />

type 94<br />

project<br />

assigning 262<br />

super 4<br />

role 6<br />

super, described 74<br />

type<br />

assigning 96<br />

aggregated function<br />

described 297<br />

aggregation expression<br />

described 293<br />

alert messages 32<br />

allow<br />

branching 89<br />

labels 90<br />

project backing 89<br />

time entries 88<br />

arithmetic function<br />

described 297<br />

arithmetic operators<br />

computed expression 293<br />

assessing process 70<br />

attachment data type<br />

described 127<br />

attachment size<br />

configuring in <strong>MKS</strong> <strong>Integrity</strong> 237<br />

Authorization <strong>Administration</strong><br />

preferences, setting 41<br />

B<br />

boolean operators<br />

computed expression 294<br />

branching<br />

enabling 89<br />

building block<br />

<strong>MKS</strong> <strong>Integrity</strong><br />

deleting 179<br />

C<br />

calculate<br />

computed field<br />

dynamic 314<br />

static 315<br />

state metrics 319<br />

capabilities, state-based 79, 119<br />

455


Index<br />

categories<br />

defining 101<br />

cell properties, default 195<br />

change package<br />

allowing 79, 80, 85, 119<br />

described 324, 343<br />

review process<br />

how it works 345<br />

type 324<br />

customizing 327<br />

viewing 330<br />

Change Package Types view<br />

workflows and documents<br />

<strong>Administration</strong> Client 325<br />

changing<br />

configuration management event trigger<br />

resolution order 381<br />

order of states 81<br />

character sets<br />

controlling 181<br />

chart<br />

described 238<br />

historical trends using computed fields<br />

316<br />

checkmark, tab 210<br />

choose<br />

groups 22<br />

principals 22<br />

users 22<br />

workflow and document projects 22<br />

client<br />

<strong>Administration</strong> 10<br />

<strong>Administration</strong> window 13<br />

logging<br />

HTTP messages 409<br />

client-side<br />

event triggers, configuration management<br />

383<br />

environment variables 387<br />

closing<br />

client 11<br />

collecting<br />

properties and log files 421<br />

command<br />

im logging 412<br />

si createproject 266<br />

si dropproject 271<br />

si import 270<br />

si importproject 268<br />

si logging 410<br />

command line interface<br />

<strong>Administration</strong> Client 42<br />

456<br />

described 42<br />

common project<br />

potential problems 290<br />

components<br />

configuration management event trigger<br />

382<br />

subproject 282<br />

computed expression<br />

described 291<br />

function classes 296<br />

group fields 296<br />

rules 293<br />

types 292<br />

user fields 296<br />

computed field<br />

charting historical trends 316<br />

computation times<br />

scheduling 318<br />

creating 313<br />

performance 321<br />

scalability 321<br />

security 321<br />

state metrics<br />

calculating 319<br />

static<br />

calculating 315<br />

conditions<br />

defining 43<br />

configuration management 265<br />

change package<br />

allowing 79, 80, 85, 119<br />

client-side triggers<br />

environment variables 387<br />

event 375<br />

event trigger 350–399<br />

client-side 383<br />

member event 375<br />

planning 389, 390<br />

post-test 380<br />

pre-test 380<br />

project context 380<br />

project event 376<br />

properties file 382<br />

revision event 376<br />

sequence of operations 379<br />

server event 376, 377<br />

subproject 381<br />

type 380<br />

writing 383<br />

events definition file 382<br />

global event trigger 380<br />

project 265–271


eporting<br />

troubleshooting 430<br />

subproject 282<br />

configuring<br />

attachment size 237<br />

preferences 34<br />

query limit<br />

group timeout 239<br />

maximum item count 239<br />

query limit, workflows and documents<br />

238<br />

subproject 286<br />

text searching, workflows and documents<br />

240<br />

connecting<br />

to an <strong>Integrity</strong> <strong>Server</strong> 29<br />

content<br />

customizing in a document 101<br />

meaningful and non-meaningful 101<br />

context based text search<br />

workflows and documents 240<br />

converting<br />

user objects to admin provided 243<br />

copy<br />

item tree 89<br />

copying<br />

event triggers<br />

workflows and documents 371<br />

item presentation template 214<br />

type 92<br />

create<br />

computed field 313<br />

state metrics 319<br />

creating<br />

a support package 421<br />

event triggers<br />

workflows and documents 363<br />

field 127<br />

field relationships 146<br />

item presentation template 198<br />

project 252<br />

using CLI 266<br />

state 78<br />

type 84<br />

workflow 155<br />

custom reports<br />

workflows and documents 219<br />

images 221<br />

report tags 222<br />

template files 221<br />

customize<br />

rich content fields 216<br />

customizing item presentation 188<br />

cells 205<br />

designer 189<br />

grids 204<br />

images 212<br />

labels 206<br />

logos 212<br />

previewing 197<br />

properties 191<br />

default cell 195<br />

default grid 195<br />

default text style 194<br />

general 192<br />

text style 193<br />

setting template 201<br />

D<br />

dashboard<br />

described 6<br />

data<br />

filtering 18<br />

searching 18<br />

data conversion<br />

computed expression 296<br />

data type<br />

attachment<br />

described 127<br />

date<br />

described 127<br />

field value attribute<br />

described 127<br />

floating point<br />

described 127<br />

group<br />

described 127<br />

integer<br />

described 127<br />

item backed picklist<br />

described 127<br />

logical<br />

described 127<br />

long text<br />

described 127<br />

phase<br />

described 128<br />

pick<br />

described 127<br />

query backed relationship<br />

described 128<br />

range<br />

Index<br />

457


Index<br />

described 128<br />

short text<br />

described 127<br />

SI project<br />

described 131<br />

user<br />

described 127<br />

database<br />

copying for admin migration 168<br />

date data type<br />

described 127<br />

date operations<br />

computed expression 296<br />

day/time function<br />

described 297<br />

deactivating<br />

pick list values 141<br />

project 259<br />

test verdicts 237<br />

default cell properties 195<br />

default grid properties 195<br />

default text style properties 194<br />

defining logical conditions 43<br />

deleting<br />

building block 179<br />

field 142<br />

field relationships 152<br />

item 179<br />

item presentation template 215<br />

project 257<br />

state 81<br />

type 94<br />

designing<br />

custom presentation template 188<br />

project 289–290<br />

subproject 289<br />

diagnostics<br />

client logging level 408<br />

differencing files 406<br />

environment information 402<br />

FLEXnet logs 413<br />

IDE log 413<br />

log files 406<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

running 414<br />

running server as application 405<br />

dialog box<br />

option prompts 35<br />

directory tree 263<br />

hierarchical structures 264<br />

disconnecting<br />

from an <strong>Integrity</strong> <strong>Server</strong> 31<br />

458<br />

from server 11<br />

display<br />

type workflow 88<br />

display pane<br />

graphical user interface 16<br />

display pattern 28<br />

document domain<br />

create all three types 104<br />

creating 97<br />

document model<br />

high-level set up 103<br />

documents<br />

checklist for setting up 103<br />

content 101<br />

create domain 103<br />

creating pre-condition rules 46<br />

field relationships<br />

edit references field 110<br />

function classes 297<br />

print<br />

define report 111<br />

print format 111<br />

relationships<br />

relationships<br />

in document model 100<br />

set up tasks 103<br />

setting up 97<br />

terms and concepts 98<br />

triggers<br />

location for use cases 365<br />

understanding structure 98<br />

domain<br />

documents<br />

create 103<br />

Dr. Watson logs 413<br />

drop project, described 270<br />

E<br />

editing<br />

field 140<br />

field relationships 151<br />

item presentation template 203<br />

project 256<br />

state 80<br />

type 91<br />

electronic signatures 241<br />

customizing triggers 241<br />

e-mail<br />

controlling character sets 181<br />

notification 5


permission 181<br />

notification of admin lock break 167<br />

empty fields<br />

computed expression 294<br />

enable<br />

branching 89<br />

labels for items 90<br />

project backing 89<br />

time entries 88<br />

encrypted archives 267<br />

environment information, for diagnostics 402<br />

environment variables<br />

configuration management triggers 387<br />

event<br />

configuration management 375<br />

event trigger<br />

client-side 383<br />

configuration management 350–399<br />

changing resolution order 381<br />

client-side 383<br />

components 382<br />

event definition files 382<br />

event trigger scripts 382<br />

global context 380<br />

planning 389, 390<br />

post-test 380<br />

pre-test 380<br />

project context 380<br />

project event 376<br />

properties file 382<br />

revision event 376<br />

scripts 382<br />

sequence of operations 379<br />

server event 376, 377<br />

subproject 381<br />

type 380<br />

updating global events definition<br />

template 383<br />

writing 383<br />

described 349<br />

member event 375<br />

<strong>MKS</strong> <strong>Integrity</strong><br />

post-event 350<br />

pre-event 350<br />

workflows and document<br />

copying 371<br />

workflows and documents<br />

assigning field values 367<br />

creating 363<br />

creating rule based change trigger<br />

363<br />

creating scheduled trigger 367<br />

creating time entry trigger 370<br />

defining rule based change trigger<br />

365<br />

deleting 373<br />

disable scheduled 369<br />

editing 372<br />

how to use 356<br />

managing 362<br />

planning 358<br />

pre-created scripts 359<br />

resolution order 373<br />

rule based event 356<br />

running a scheduled trigger 371<br />

schedule event 356<br />

schedule frequency 369<br />

schedule query 369<br />

schedule running using CLI 369<br />

schedule running using GUI 372<br />

script library 358<br />

selecting scripts 366<br />

time entry event 356<br />

viewing 372<br />

external information function<br />

described 297<br />

F<br />

favorites<br />

selecting 27<br />

field<br />

computed<br />

creating 313<br />

creating 127<br />

deleting 142<br />

editing 140<br />

managing 121<br />

moving 143<br />

pick, multiple values 445<br />

rich content<br />

customizing 216<br />

setting field relevance 133<br />

shared category<br />

edit pick list 110<br />

viewing 141<br />

visibility 120<br />

field relationships<br />

creating 146<br />

default columns 133<br />

deleting 152<br />

editing 151<br />

managing 143<br />

Index<br />

459


Index<br />

field value attribute data type<br />

described 127<br />

Fields view<br />

workflows and documents<br />

<strong>Administration</strong> Client 125<br />

file<br />

importing 268<br />

importing using CLI 269, 270<br />

filter<br />

data 18<br />

groups 22<br />

principals 22<br />

users 22<br />

workflow and document projects 22<br />

finding<br />

properties and log files 421<br />

FLEXlm<br />

log files 413<br />

floating point data type<br />

described 127<br />

format<br />

numeric values 28<br />

function<br />

aggregate<br />

described 297<br />

arithmetic<br />

described 297<br />

day/time<br />

described 297<br />

external information<br />

described 297<br />

text<br />

described 297<br />

function classes<br />

computed expression 296<br />

FVA field<br />

described 127<br />

G<br />

general<br />

template properties 192<br />

graphical user interface<br />

described 10<br />

display pane 16<br />

menu bar 13<br />

shortcut menu 14<br />

status bar 16<br />

title bar 13<br />

toolbars 14<br />

tooltips 17<br />

460<br />

tree pane 14<br />

workspace 17<br />

grid properties, default 195<br />

group<br />

deleting 179<br />

project permission 250<br />

selecting 22<br />

group data type<br />

described 127<br />

group fields<br />

computed expression 296<br />

H<br />

hide<br />

data 18<br />

I<br />

IBPL field<br />

described 127<br />

im diag<br />

command 417<br />

im logging command 412<br />

im recomputehistory command 316<br />

image, saving workflow 161<br />

images for reports 221<br />

importing<br />

files 268<br />

project<br />

using CLI 268<br />

viewset 50<br />

integer data type<br />

described 127<br />

<strong>Integrity</strong> Client<br />

logging level 408<br />

logs 407<br />

preferences<br />

setting 35<br />

version number 403<br />

<strong>Integrity</strong> <strong>Server</strong><br />

connecting to 29<br />

disconnecting from 31<br />

logging levels 407<br />

version number 403<br />

intra-item expression<br />

described 292, 293<br />

is.properties file<br />

controlling character sets 181<br />

isutil<br />

command 424


item<br />

copying tree 89<br />

copying tree hierarchy 89<br />

deleting 179<br />

linking with a project 257<br />

item backed picklist data type<br />

described 127<br />

item presentation template 188, 189<br />

cells 205<br />

copying 214<br />

creating 198<br />

deleting 215<br />

editing 203<br />

grids 204<br />

images 212<br />

labels 206<br />

logos 212<br />

previewing 197<br />

properties 191<br />

default cell 195<br />

default grid 195<br />

default text style 194<br />

general 192<br />

text style 193<br />

setting 201<br />

tabs 209<br />

viewing 214<br />

K<br />

kerberos<br />

troubleshooting 428<br />

L<br />

labels<br />

enabling 90<br />

launching<br />

the <strong>Administration</strong> Client 10<br />

limit<br />

query<br />

group timeout 239<br />

maximum item count 239<br />

lock<br />

managing admin 169<br />

using admin 171<br />

log files<br />

collecting 421<br />

Dr. Watson 413<br />

FLEXnet server 413<br />

for diagnostics 406<br />

integrations 413<br />

<strong>Integrity</strong> Client 407<br />

logging<br />

configuration management 410<br />

HTTP messages 409<br />

levels<br />

<strong>Integrity</strong> Client 408<br />

<strong>Integrity</strong> <strong>Server</strong> 407<br />

workflows and documents 412<br />

logging on<br />

<strong>Administration</strong> Client 10<br />

logical conditions<br />

defining 43<br />

logical data type<br />

described 127<br />

logo<br />

adding to custom template 212<br />

long text data type<br />

described 127<br />

long text fields<br />

customizing 216<br />

M<br />

managing<br />

field 121<br />

creating 127<br />

editing 140<br />

moving 143<br />

viewing 141<br />

field relationships 143<br />

pick list values<br />

deactivating 141<br />

project 248<br />

creating 252<br />

deactivating 259<br />

deleting 257<br />

editing 256<br />

moving 257<br />

reparenting 257<br />

viewing 256<br />

project metadata 257<br />

state 77–81<br />

creating 78<br />

deleting 81<br />

editing 80<br />

metrics 82<br />

moving 81<br />

viewing 80<br />

type 82<br />

copying 92<br />

Index<br />

461


Index<br />

creating 84<br />

deleting 94<br />

editing 91<br />

moving 94<br />

repositioning 94<br />

viewing 93<br />

maximum item count, query timeout 239<br />

meaningful<br />

marking content as 110<br />

meaningful content<br />

non-meaningful content 101<br />

member<br />

event<br />

configuration management 375<br />

importing 268<br />

importing using CLI 270<br />

importing using GUI 269<br />

menu bar<br />

graphical user interface 13<br />

messages<br />

HTTP-related 409<br />

server 32<br />

metrics<br />

state 82<br />

creating 319<br />

tracking for projects 280<br />

migrate<br />

shared field 177<br />

state override 177<br />

<strong>MKS</strong> <strong>Integrity</strong><br />

e-mail notification 5<br />

event trigger<br />

described 349<br />

post-event 350<br />

pre-event 350<br />

printing views 31<br />

project administrator 74, 260<br />

setting up 4–8<br />

super administrator 74<br />

understanding 4–8<br />

using 4–8<br />

workflow 5<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

access keys 17<br />

ACLs 41<br />

shortcut keys 17<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

diagnostics<br />

running 414<br />

serial number 402<br />

mksis<br />

command 423<br />

462<br />

monitor<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 414<br />

moving<br />

field 143<br />

project 257<br />

state 81<br />

type 94<br />

multiple servers<br />

configuring 37<br />

multiple value<br />

pick field 445<br />

N<br />

node<br />

type<br />

create 106<br />

non-meaningful<br />

marking content as 110<br />

notification<br />

e-mail 5<br />

permission 181<br />

numeric values<br />

formatting 28<br />

O<br />

opening the <strong>Administration</strong> Client 10<br />

logging on 10<br />

organizing projects 263<br />

P<br />

performance<br />

computed fields 321<br />

permission<br />

e-mail notification 181<br />

phase data type<br />

described 128<br />

pick data type<br />

described 127<br />

pick field<br />

allowing multiple values 445<br />

pick list values<br />

deactivating 141<br />

planning configuration management event<br />

trigger<br />

performance 390<br />

pre- or post-event 389<br />

post-test configuration management event<br />

trigger 380


pre-conditions<br />

document<br />

use case location 149<br />

preferences<br />

<strong>Administration</strong> Client<br />

setting 38<br />

Authorization <strong>Administration</strong><br />

setting 41<br />

<strong>Integrity</strong> Client<br />

setting 35<br />

server<br />

setting 37<br />

setting 34<br />

toolbar<br />

setting 39<br />

presentation template 188<br />

cells 205<br />

copying 214<br />

creating 198, 203, 214, 215<br />

described 189<br />

designer 189<br />

grids 204<br />

images 212<br />

labels 206<br />

logos 212<br />

previewing 197<br />

properties 191<br />

default grid 195<br />

general 192, 194, 195<br />

text style 193<br />

setting 201<br />

tabs 209<br />

presentation templates<br />

reports 219<br />

pre-test configuration management event<br />

trigger 380<br />

principal<br />

selecting 22<br />

printing<br />

<strong>MKS</strong> <strong>Integrity</strong> views 31<br />

workflow 160<br />

process<br />

assessing 70<br />

production server<br />

installing and starting 166<br />

project 265–271, 280<br />

administrator<br />

assigning 262<br />

administrator, described 260<br />

administrator, <strong>MKS</strong> <strong>Integrity</strong> 260<br />

browsing configuration management<br />

projects 26<br />

common 289<br />

creating 252<br />

deactivating 259<br />

deleting 179, 257<br />

designing 289<br />

directory 263<br />

editing 256<br />

event<br />

configuration management 376<br />

linking with an item 257<br />

managing 248<br />

member<br />

sharing 287<br />

metadata<br />

managing 257<br />

moving 257<br />

organization 263<br />

permission 250<br />

reparenting 257<br />

restoring<br />

in CLI 273<br />

restoring to a previous checkpoint 271<br />

selecting configuration management<br />

projects 26<br />

selecting workflow and document 22<br />

sharing archive 287<br />

sharing member 287<br />

single directory 263<br />

viewing 256<br />

visibility 250<br />

project backing<br />

enabling 89<br />

Projects view<br />

workflows and documents<br />

<strong>Administration</strong> Client 249<br />

prompts<br />

dialog boxes 35<br />

properties<br />

collecting 421<br />

proxy server<br />

preferences<br />

setting 37<br />

Q<br />

quantify<br />

numeric values 28<br />

query<br />

described 238<br />

limit<br />

configuring in <strong>MKS</strong> <strong>Integrity</strong> 238<br />

Index<br />

463


Index<br />

group timeout 239<br />

maximum item count 239<br />

query backed relationship data type<br />

described 128<br />

quick access keys<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

access keys 17<br />

shortcut keys 17<br />

R<br />

range data type<br />

described 128<br />

RCS<br />

directory 264<br />

references field<br />

document types 110<br />

references, viewing 244<br />

relationship data type<br />

default columns 133<br />

relevance 133<br />

described 133<br />

reparenting<br />

project 257<br />

reports 219<br />

described 219<br />

document print format 111<br />

images 221<br />

tags 222<br />

template files 221<br />

repositioning<br />

type 94<br />

restoring project<br />

in CLI 273<br />

restoring project to a previous checkpoint 271<br />

result<br />

customizing test result 234<br />

review<br />

process<br />

change packages, how it works 345<br />

revision<br />

event<br />

configuration management 376<br />

rich content fields<br />

customizing 216<br />

role<br />

super administrator 6<br />

rule selection 47<br />

rules<br />

computed expressions 293<br />

documents<br />

464<br />

S<br />

creating preconditions 46<br />

selecting 47<br />

saving workflow, as image 161<br />

scalability<br />

computed fields 321<br />

schedule<br />

computed field computations times 318<br />

script library 358, 359<br />

search<br />

data 18<br />

groups 22<br />

principals 22<br />

users 22<br />

workflow and document projects 22<br />

searching<br />

context based 240<br />

secure sockets layer 7<br />

security<br />

computed fields 321<br />

realm<br />

debugging 409<br />

segment<br />

print format 111<br />

type<br />

create 108<br />

segments and nodes<br />

exposing to users<br />

FVA<br />

from shared item to nodes 100<br />

select<br />

favorites 27<br />

group 22<br />

user 22<br />

workflow and document projects 22<br />

selecting<br />

rules 47<br />

serial number<br />

locating 402<br />

server<br />

disconnecting 11<br />

event<br />

configuration management 376, 377<br />

preferences, setting 37<br />

session<br />

closing client 11<br />

shutting down client 12<br />

setting<br />

administrators 74–77


preferences 34<br />

setting up<br />

<strong>MKS</strong> <strong>Integrity</strong> 4–8<br />

shared category field<br />

defining categories on 101<br />

shared field<br />

migrating 177<br />

shared item<br />

type<br />

create 105<br />

shared subproject<br />

adding 284<br />

sharing<br />

archive<br />

with other project 287<br />

member 287<br />

file ownership 288<br />

solution 289<br />

update/compatibility concerns 288<br />

short text data type<br />

described 127<br />

shortcut<br />

keys<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client<br />

17<br />

menu<br />

<strong>Administration</strong> Client 14<br />

show<br />

data 18<br />

shutting down<br />

<strong>Administration</strong> Client 12<br />

<strong>Integrity</strong> Client 12<br />

si command<br />

createproject 266<br />

dropproject 271<br />

import 270<br />

importproject 268<br />

logging 410<br />

si diag<br />

command 417<br />

SI project data type<br />

described 131<br />

signatures<br />

electronic 241<br />

customizing triggers 241<br />

significant fields<br />

explained 102<br />

SSL<br />

See secure sockets layer<br />

staging server<br />

installing and starting 166<br />

starting 168<br />

starting<br />

the <strong>Administration</strong> Client 10<br />

the <strong>Integrity</strong> <strong>Server</strong><br />

in Safemode 426<br />

using mksis 423<br />

state<br />

capabilities 79, 119<br />

creating 78<br />

deleting 81<br />

described<br />

workflows and documents 77<br />

edit workflow 160<br />

editing 80<br />

managing 77–81<br />

metrics 82<br />

moving 81<br />

transitions<br />

workflow 159<br />

viewing 80<br />

state metrics<br />

creating 319<br />

state override<br />

migrating 177<br />

States view<br />

workflows and documents<br />

<strong>Administration</strong> Client 77<br />

status bar<br />

graphical user interface 16<br />

subproject 282<br />

adding 283<br />

adding shared 284<br />

components 283<br />

configuring 286<br />

creating 283<br />

defined 282<br />

designing 289<br />

event triggers 381<br />

super administrator, described 74<br />

support package<br />

creating 421<br />

syntax<br />

computed expression 293<br />

system provided object<br />

references 244<br />

T<br />

tab<br />

checkmark 210<br />

item presentation template 209<br />

tags, for reports 222<br />

Index<br />

465


Index<br />

template<br />

designer<br />

cells 205<br />

grids 204<br />

images 212<br />

images, logo 212<br />

labels 206<br />

files, for reports 221<br />

item presentation<br />

copying 214<br />

creating 198<br />

deleting 215<br />

designer 189<br />

editing 203<br />

previewing 197<br />

properties 191<br />

tabs 209<br />

viewing 214<br />

test management<br />

types<br />

setting role for 112<br />

test result<br />

customizing 234<br />

test verdict<br />

creating 235<br />

customizing 234<br />

editing 236<br />

view 234<br />

test verdicts<br />

deactivating 237<br />

text fields<br />

customizing 216<br />

text function<br />

described 297<br />

text searching<br />

configuring in <strong>MKS</strong> <strong>Integrity</strong> 240<br />

text style properties 193<br />

time entry<br />

allowing 80, 119<br />

enabling 88<br />

timeout<br />

query<br />

group 239<br />

maximum item count 239<br />

timestamps<br />

computed expression 295<br />

title bar<br />

graphical user interface 13<br />

toolbar<br />

graphical user interface 14<br />

preferences<br />

setting 39<br />

466<br />

tooltips<br />

graphical user interface 17<br />

tracking metrics for 280<br />

tree pane<br />

graphical user interface 14<br />

troubleshooting<br />

client logging level 408<br />

configuration management<br />

reporting 430<br />

differencing files 406<br />

environment information 402<br />

FLEXnet logs 413<br />

IDE log 413<br />

kerberos 428<br />

log files 406<br />

running server as application 405<br />

type<br />

administrator<br />

assigning 96<br />

described 94<br />

administrator, <strong>MKS</strong> <strong>Integrity</strong> 94<br />

branching<br />

enabling for type 89<br />

change package 324<br />

customizing 327<br />

viewing 330<br />

copying 92<br />

creating 84<br />

deleting 94, 179<br />

editing 91<br />

field visibility 120<br />

labelling for items 90<br />

managing 82<br />

moving 94<br />

project backing<br />

enabling 89<br />

repositioning 94<br />

time entries<br />

enabling 88<br />

viewing 93<br />

workflow<br />

displaying 88<br />

type properties<br />

<strong>MKS</strong> Solution global type 103<br />

types<br />

document<br />

create 104<br />

edit field relationships 110<br />

node<br />

create 106<br />

segment<br />

create 108


shared item<br />

create 105<br />

test management<br />

setting role 112<br />

Types view<br />

workflows and documents<br />

<strong>Administration</strong> Client 83<br />

U<br />

understanding <strong>MKS</strong> <strong>Integrity</strong> 4–8<br />

updating configuration management global<br />

events<br />

definition template 383<br />

user<br />

deleting 179<br />

described 4<br />

group<br />

project permission 250<br />

selecting 22<br />

user data type<br />

described 127<br />

user fields<br />

computed expression 296<br />

user objects<br />

converting to admin provided 243<br />

using <strong>MKS</strong> <strong>Integrity</strong> 4–8<br />

V<br />

variables<br />

environment<br />

client-side triggers 387<br />

verdict<br />

creating 235<br />

customizing test verdict 234<br />

deactivating 237<br />

editing 236<br />

version number<br />

<strong>Integrity</strong> Client 403<br />

<strong>Integrity</strong> <strong>Server</strong> 403<br />

view<br />

test verdict view 234<br />

viewing<br />

change package types 330<br />

field 141<br />

item presentation template 214<br />

project 256<br />

state 80<br />

system provided object references 244<br />

type 93<br />

workflow 157<br />

views<br />

printing 31<br />

test verdict view 234<br />

viewset<br />

importing 50<br />

managing 50<br />

visibility 120, 250<br />

fields 120<br />

project 250<br />

W<br />

workflow 5, 153<br />

creating 155<br />

described 152<br />

edit<br />

state 160<br />

managing (editing) 158<br />

printing 161<br />

save as image 161<br />

state transitions 159<br />

type<br />

displaying 88<br />

view 153<br />

described 152<br />

viewing 157<br />

workflow migration 161–177<br />

coping database 168<br />

e-mail notification 167<br />

installing<br />

production server 166<br />

staging server 166<br />

managing admin locks 169<br />

shared fields 177<br />

staging server startup 168<br />

state overrides 177<br />

summary steps 164, 165<br />

testing configuration 169<br />

using admin locks 171<br />

using wizard 171<br />

workflows and documents<br />

admin provided objects 242<br />

attachment size 237<br />

custom reports 219<br />

images 221<br />

report tags 222<br />

template files 221<br />

event trigger<br />

assigning field values 367<br />

Index<br />

467


Index<br />

468<br />

creating rule based change trigger<br />

363<br />

creating scheduled trigger 367<br />

creating time entry trigger 370<br />

defining rule based change trigger<br />

365<br />

deleting 373<br />

disable scheduled 369<br />

editing 372<br />

how to use 356<br />

managing 362<br />

planning 358<br />

pre-created scripts 359<br />

resolution 373<br />

rule based event 356<br />

running a scheduled trigger 371<br />

schedule event 356<br />

schedule frequency 369<br />

schedule query 369<br />

schedule running using CLI 369<br />

schedule running using GUI 372<br />

script library 358<br />

selecting scripts 366<br />

time entry event 356<br />

viewing 372<br />

query limit 238<br />

group timeout 239<br />

maximum item count 239<br />

states<br />

described 77<br />

time entry<br />

allowing 80, 119<br />

type administrator 94<br />

workflow migration<br />

e-mail notification 167<br />

summary steps 164, 165<br />

workspace<br />

graphical user interface 17<br />

writing configuration management event<br />

triggers 383


Product Notices<br />

Copyright © 2001–<strong>2009</strong> <strong>MKS</strong> Software Inc.; in Canada copyright owned by <strong>MKS</strong> Inc. All rights reserved.<br />

U.S. Government Rights. The software and documentation (the<br />

“Software and Documentation”) are “commercial items”<br />

developed exclusively at private expense, consisting of<br />

“commercial computer software” and “commercial computer<br />

software documentation” as such terms are defined or used in the<br />

applicable U.S. acquisition regulations. If you are the U.S.<br />

Government or any agency or department thereof the Software<br />

and Documentation are licensed hereunder (i) only as a<br />

commercial item and (ii) with only those rights as are granted to<br />

all other end users pursuant to the terms and conditions of the<br />

Software License Agreement (“Agreement”) accompanying the<br />

Software. The Software or Documentation shall not be used,<br />

duplicated, or disclosed in any way not specifically permitted by<br />

the terms of the Agreement. Nothing in the Agreement requires<br />

<strong>MKS</strong> to produce or furnish technical data for or to the U.S.<br />

Government or any agency or department thereof.<br />

This product contains Qooxdoo version 0.7.4. This library is free<br />

software; you can redistribute it and/or modify it under the<br />

terms of the GNU Lesser General Public License as published by<br />

the Free Software Foundation; either version 2.1 of the License, or<br />

(at your option) any later version. Copyright © 1991, 1999 Free<br />

Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,<br />

MA 02110-1301 USA. This library is distributed in the hope that it<br />

will be useful, but WITHOUT ANY WARRANTY; without even<br />

the implied warranty of MERCHANTABILITY or FITNESS FOR<br />

A PARTICULAR PURPOSE. See the GNU Lesser General Public<br />

License for more details. You should have received a copy of the<br />

GNU Lesser General Public License along with this library; if not,<br />

write to the Free Software Foundation, Inc., 51 Franklin Street,<br />

Fifth Floor, Boston, MA 02110-1301 USA.<br />

This product contains JSON-RPC JavaScript client software v. 1.0.<br />

Copyright (c) 2003-2004 Jan-Klaas Kollhof. Copyright (c) 2005<br />

Michael Clark, Metaparadigm Pte. Ltd. This code is based on Jan-<br />

Klaas’ JavaScript lait library (jsolait). Licensed under the Apache<br />

License, Version 2.0 (the “License”); you may not use this file<br />

except in compliance with the License. You may obtain a copy of<br />

the License at http://www.apache.org/licenses/LICENSE-2.0.<br />

Unless required by applicable law or agreed to in writing,<br />

software distributed under the License is distributed on an “AS<br />

IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF<br />

ANY KIND, either express or implied. See the License for the<br />

specific language governing permissions and limitations under<br />

the License.<br />

This product contains JIDE stock icons. Copyright (c) 2002-2008<br />

JIDE Software, Inc. All rights reserved.<br />

This product contains Apache Derby v. 10.3.3 software developed<br />

by The Apache Software Foundation (http://www.apache.org/).<br />

Copyright 2004-2008 The Apache Software Foundation. Licensed<br />

under the Apache License, Version 2.0 (the “License”); you may<br />

not use this file except in compliance with the License. You may<br />

obtain a copy of the License at http://www.apache.org/licenses/<br />

LICENSE-2.0. Unless required by applicable law or agreed to in<br />

writing, software distributed under the License is distributed on<br />

an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS<br />

OF ANY KIND, either express or implied. See the License for the<br />

specific language governing permissions and limitations under<br />

the License.<br />

Portions of Derby were originally developed by International<br />

Business Machines Corporation and are licensed to the Apache<br />

Software Foundation under the “Software Grant and Corporate<br />

Contribution License Agreement",informally known as the<br />

“Derby CLA”. The following copyright notice(s) were affixed to<br />

portions of the code with which this file is now or was at one time<br />

distributed and are placed here unaltered. (C) Copyright<br />

1997,2004 International Business Machines Corporation. All<br />

rights reserved. (C) Copyright IBM Corp. 2003. The portion of the<br />

functionTests under ‘nist’ was originally developed by the<br />

National Institute of Standards and Technology (NIST), an<br />

agency of the United States Department of Commerce, and<br />

adapted byInternational Business Machines Corporation in<br />

accordance with the NIST Software Acknowledgment and<br />

Redistribution document at http://www.itl.nist.gov/div897/<br />

ctg/sql_form.htm.<br />

This product contains TreeTableModel.java,<br />

AbstractTreeTableModel.java, TreeTableModelAdapter.java,<br />

AbstractCellEditor.java and JTreeTable.java. Copyright 1997,<br />

1998 Sun Microsystems, Inc. All Rights Reserved. Redistribution<br />

and use in source and binary forms, with or without<br />

modification, are permitted provided that the following<br />

conditions are met: Redistributions of source code must retain the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer. Redistribution in binary form must reproduce the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided<br />

with the distribution. Neither the name of Sun Microsystems, Inc.<br />

or the names of contributors may be used to endorse or promote<br />

products derived from this software without specific prior<br />

written permission. This software is provided “AS IS,” without a<br />

warranty of any kind. ALL EXPRESS OR IMPLIED<br />

CONDITIONS, REPRESENTATIONS AND WARRANTIES,<br />

INCLUDING ANY IMPLIED WARRANTY OF<br />

MERCHANTABILITY, FITNESS FOR A PARTICULAR<br />

PURPOSE OR NON-INFRINGEMENT, ARE HEREBY<br />

EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE<br />

LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY<br />

LICENSEE AS A RESULT OF OR RELATING TO USE,<br />

MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR<br />

ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS<br />

LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT<br />

OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,<br />

CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,<br />

HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF<br />

LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO<br />

USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF<br />

THE POSSIBILITY OF SUCH DAMAGES.You acknowledge that<br />

this software is not designed, licensed or intended for use in the<br />

design, construction, operation or maintenance of any nuclear<br />

facility.<br />

This product contains Xinha which is licensed under the<br />

htmlArea License (based on BSD license). Copyright (c) 2002-<br />

2004, interactivetools.com, inc. Copyright (c) 2003-2004<br />

dynarch.com. All rights reserved. Redistribution and use in<br />

source and binary forms, with or without modification, are<br />

permitted provided that the following conditions are met: 1)<br />

Redistributions of source code must retain the above copyright<br />

notice, this list of conditions and the following disclaimer. 2)<br />

Redistributions in binary form must reproduce the above<br />

copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided<br />

with the distribution. 3) Neither the name of interactivetools.com,<br />

inc. nor the names of its contributors may be used to endorse or<br />

promote products derived from this software without specific<br />

prior written permission. THIS SOFTWARE IS PROVIDED BY<br />

THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”<br />

AND ANY EXPRESS OR IMPLIED WARRANTIES,<br />

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED<br />

WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A<br />

PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT<br />

SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE<br />

LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,<br />

SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES<br />

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF<br />

SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR<br />

PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<br />

CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER<br />

IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING<br />

NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT


Product Notices<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

This product contains JGo software. Copyright (c) 1999-2004<br />

Northwoods Software Corporation. All rights reserved.<br />

This product contains NLog 1.0. Copyright (c) 2004-2006 Jaroslaw<br />

Kowalski (jaak@jkowalski.net). All rights reserved.<br />

Redistribution and use in source and binary forms, with or<br />

without modification, are permitted provided that the following<br />

conditions are met: Redistributions of source code must retain the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer. Redistributions in binary form must reproduce the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided<br />

with the distribution. Neither the name of Jaroslaw Kowalski nor<br />

the names of its contributors may be used to endorse or promote<br />

products derived from this software without specific prior<br />

written permission. THIS SOFTWARE IS PROVIDED BY THE<br />

COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND<br />

ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT<br />

NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR<br />

ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,<br />

EXEMPLARY, OR CONSEQUENTIAL DAMAGES<br />

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF<br />

SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR<br />

PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<br />

CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER<br />

IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING<br />

NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

This product contains Runtime Modules of IBM(R) 32-bit (or 64bit)<br />

SDK for AIX(TM), Java(TM) Technology Edition, Version 6<br />

(c) Copyright Sun Microsystems Inc, 1992, 2008<br />

(c) Copyright IBM Corporation, 1998 - 2008<br />

(c) Copyright The Apache Software Foundation, 1999-2007<br />

All Rights Reserved.<br />

This product contains Apache Jakarta Commons HttpClient<br />

software developed by The Apache Software Foundation (http://<br />

www.apache.org/). Licensed under the Apache License, Version<br />

2.0 (the “License”); you may not use this file except in compliance<br />

with the License. You may obtain a copy of the License at http://<br />

www.apache.org/licenses/LICENSE-2.0. Unless required by<br />

applicable law or agreed to in writing, software distributed under<br />

the License is distributed on an “AS IS” BASIS, WITHOUT<br />

WARRANTIES OR CONDITIONS OF ANY KIND, either express<br />

or implied. See the License for the specific language governing<br />

permissions and limitations under the License.<br />

This product contains Apache Tomcat v. 5.5.17 software<br />

developed by The Apache Software Foundation (http://<br />

www.apache.org/). Licensed under the Apache License, Version<br />

2.0 (the “License”); you may not use this file except in compliance<br />

with the License. You may obtain a copy of the License at http://<br />

www.apache.org/licenses/LICENSE-2.0. Unless required by<br />

applicable law or agreed to in writing, software distributed under<br />

the License is distributed on an “AS IS” BASIS, WITHOUT<br />

WARRANTIES OR CONDITIONS OF ANY KIND, either express<br />

or implied. See the License for the specific language governing<br />

permissions and limitations under the License.<br />

This product includes the Extreme! Computing XPP3-1.1.3.2.<br />

software developed by the Indiana University Extreme! Lab<br />

(http://www.extreme.indiana.edu/). Copyright (c) 2002<br />

Extreme! Lab, Indiana University. All rights reserved.<br />

Redistribution and use in source and binary forms, with or<br />

without modification, are permitted provided that the following<br />

conditions are met: 1. Redistributions of source code must retain<br />

the above copyright notice, this list of conditions and the<br />

following disclaimer. 2. Redistributions in binary form must<br />

reproduce the above copyright notice, this list of conditions and<br />

the following disclaimer in the documentation and/or other<br />

materials provided with the distribution. 3. The end-user<br />

documentation included with the redistribution, if any, must<br />

include the following acknowledgment: “This product includes<br />

software developed by the Indiana University Extreme! Lab<br />

(http://www.extreme.indiana.edu/).”; Alternately, this<br />

acknowledgment may appear in the software itself, if and<br />

wherever such third-party acknowledgments normally appear. 4.<br />

The names “Indiana University” and “Indiana University<br />

Extreme! Lab” must not be used to endorse or promote products<br />

derived from this software without prior written permission. For<br />

written permission, please contact http://<br />

www.extreme.indiana.edu/. 5. Products derived from this<br />

software may not use “Indiana Univeristy” name nor may<br />

“Indiana University” appear in their name, without prior written<br />

permission of the Indiana University. THIS SOFTWARE IS<br />

PROVIDED “AS IS” AND ANY EXPRESSED OR IMPLIED<br />

WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE<br />

IMPLIED WARRANTIES OF MERCHANTABILITY AND<br />

FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.<br />

IN NO EVENT SHALL THE AUTHORS, COPYRIGHT<br />

HOLDERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY<br />

DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,<br />

OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT<br />

LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br />

SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br />

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />

THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br />

SUCH DAMAGE.<br />

This product contains Glazed Lists software developed by<br />

publicobject.com and O’Dell Engineering. Copyright © 2003-2006,<br />

publicobject.com, O'Dell Engineering Ltd. This library is free<br />

software; you can redistribute it and/or modify it under the<br />

terms of the GNU Lesser General Public License as published by<br />

the Free Software Foundation; either version 2.1 of the License, or<br />

(at your option) any later version. Copyright © 1991, 1999 Free<br />

Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,<br />

MA 02110-1301 USA.This library is distributed in the hope that it<br />

will be useful, but WITHOUT ANY WARRANTY; without even<br />

the implied warranty of MERCHANTABILITY or FITNESS FOR<br />

A PARTICULAR PURPOSE. See the GNU Lesser General Public<br />

License for more details. You should have received a copy of the<br />

GNU Lesser General Public License along with this library; if not,<br />

write to the Free Software Foundation, Inc., 51 Franklin Street,<br />

Fifth Floor, Boston, MA 02110-1301 USA.<br />

This product contains Bean Scripting Framework software<br />

version 2.2 developed by The Apache Software Foundation<br />

(http://www.apache.org/). Licensed under the Apache License,<br />

Version 2.0 (the “License”); you may not use this file except in<br />

compliance with the License. You may obtain a copy of the<br />

License at http://www.apache.org/licenses/LICENSE-2.0.<br />

Unless required by applicable law or agreed to in writing,<br />

software distributed under the License is distributed on an “AS<br />

IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF<br />

ANY KIND, either express or implied. See the License for the<br />

specific language governing permissions and limitations under<br />

the License.<br />

This product contains IBM Toolbox for Java – JT Open software.<br />

Copyright © up to and including <strong>2009</strong>, International Business<br />

Machines Corporation (“IBM”) and others. All Rights Reserved.<br />

Licensed under the IBM Public License Version 1.0 (the<br />

“License”); you may not use this file except in compliance with<br />

the License. See the License at http://www-128.ibm.com/<br />

developerworks/library/os-ipl.html for the specific language<br />

governing permissions and limitations under the License. THE<br />

SOFTWARE IS PROVIDED “AS IS", WITHOUT WARRANTY OF<br />

ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT<br />

LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br />

FITNESS FOR A PARTICULAR PURPOSE AND NON-<br />

INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR<br />

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,


DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION<br />

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,<br />

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR<br />

THE USE OR OTHER DEALINGS IN THE SOFTWARE. IN NO<br />

EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY<br />

DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,<br />

OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT<br />

LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br />

SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br />

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />

THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br />

SUCH DAMAGE.<br />

This product contains ICU v. 1.8.1. Copyright © 1995-2008<br />

International Business Machines Corporation and others. All<br />

rights reserved. Permission is hereby granted, free of charge, to<br />

any person obtaining a copy of this software and associated<br />

documentation files (the “Software”), to deal in the Software<br />

without restriction, including without limitation the rights to use,<br />

copy, modify, merge, publish, distribute, and/or sell copies of the<br />

Software, and to permit persons to whom the Software is<br />

furnished to do so, provided that the above copyright notice(s)<br />

and this permission notice appear in all copies of the Software<br />

and that both the above copyright notice(s) and this permission<br />

notice appear in supporting documentation. THE SOFTWARE IS<br />

PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,<br />

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO<br />

THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A<br />

PARTICULAR PURPOSE AND NONINFRINGEMENT OF<br />

THIRD PARTY RIGHTS. IN NO EVENT SHALL THE<br />

COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS<br />

NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL<br />

INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY<br />

DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,<br />

DATA OR PROFITS, WHETHER IN AN ACTION OF<br />

CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,<br />

ARISING OUT OF OR IN CONNECTION WITH THE USE OR<br />

PERFORMANCE OF THIS SOFTWARE. Except as contained in<br />

this notice, the name of a copyright holder shall not be used in<br />

advertising or otherwise to promote the sale, use or other<br />

dealings in this Software without prior written authorization of<br />

the copyright holder.<br />

This product contains Java BEEP Core Version 0.9.08 developed<br />

by The Apache Software Foundation (http://www.apache.org/)<br />

licensed under the Apache License, Version 1.1. Copyright (c)<br />

1999-2001 The Apache Software Foundation. All rights reserved.<br />

Redistribution and use in source and binary forms, with or<br />

without modification, are permitted provided that the following<br />

conditions are met: 1. Redistributions of source code must retain<br />

the above copyright notice, this list of conditions and the<br />

following disclaimer. 2. Redistributions in binary form must<br />

reproduce the above copyright notice, this list of conditions and<br />

the following disclaimer in the documentation and/or other<br />

materials provided with the distribution. 3. The end-user<br />

documentation included with the redistribution, if any, must<br />

include the following acknowledgment: “This product includes<br />

software developed by the Apache Software Foundation (http://<br />

www.apache.org/).” Alternately, this acknowlegement may<br />

appear in the software itself, if and wherever such third-party<br />

acknowlegements normally appear 4. The names “The Jakarta<br />

Project”, “Commons” and “Apache Software Foundation” must<br />

not be used to endorse or promote products derived from this<br />

software without prior written permission. For written<br />

permission, please contact apache@apache.org. 5. Products<br />

derived from this software may not be called “Apache”, nor may<br />

“Apache” appear in their name, without prior written permission<br />

of the Apache Software Foundation. THIS SOFTWARE IS<br />

PROVIDED “AS IS” AND ANY EXPRESSED OR IMPLIED<br />

WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE<br />

IMPLIED WARRANTIES OF MERCHANTABILITY AND<br />

FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.<br />

Product Notices<br />

IN NO EVENT SHALL THE APACHE SOFTWARE<br />

FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY<br />

DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,<br />

OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT<br />

LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br />

SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br />

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />

THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br />

SUCH DAMAGE.<br />

This product contains Java BEEP Core Version 0.9.08. Blocks<br />

Public License Copyright © 2000-2001, Invisible Worlds, Inc. All<br />

Rights Reserved. Redistribution and use in source and binary<br />

forms, with or without modification, are permitted provided that<br />

the following conditions are met: Redistributions of source code<br />

must retain the above copyright notice, this list of conditions and<br />

the following disclaimer. Redistributions in binary form must<br />

reproduce the above copyright notice, this list of conditions and<br />

the following disclaimer in the documentation and/or other<br />

materials provided with the distribution. Neither the name,<br />

trademarks, or trade names of Invisible Worlds, Inc., nor the<br />

names, trademarks, or trade names of its contributors may be<br />

used to endorse or promote products derived from this software<br />

without specific prior written permission. THIS SOFTWARE IS<br />

PROVIDED BY THE COPYRIGHT HOLDERS AND<br />

CONTRIBUTORS “AS IS” AND ANY EXPRESSED OR IMPLIED<br />

WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE<br />

IMPLIED WARRANTIES OF MERCHANTABILITY AND<br />

FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.<br />

IN NO EVENT SHALL INVISIBLE WORLDS OR ITS<br />

CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL<br />

DAMAGES (INCLUDING, BUT NOT LIMITED TO,<br />

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;<br />

LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br />

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />

THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br />

SUCH DAMAGE.<br />

Cryptix General License Copyright © 1995, 1997, 1998, 2000. The<br />

Cryptix Foundation Limited. All rights reserved. Redistribution<br />

and use in source and binary forms, with or without<br />

modification, are permitted provided that the following<br />

conditions are met: Redistribution of source code must retain the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer. Redistributions in binary form must reproduce the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided<br />

with the distribution. THIS SOFTWARE IS PROVIDED BY THE<br />

CRYPTIX FOUNDATION LIMITED AND CONTRIBUTORS “AS<br />

IS” AND ANY EXPRESSED OR IMPLIED WARRANTIES,<br />

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED<br />

WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A<br />

PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT<br />

SHALL THE CRYPTIX FOUNDATION LIMITED OR ITS<br />

CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL<br />

DAMAGES (INCLUDING, BUT NOT LIMITED TO,<br />

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;<br />

LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br />

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />

THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br />

SUCH DAMAGE.<br />

This package is a SSLv3/TLS implementation written by Eric<br />

Rescorla (ekr\@rtfm.com) and licensed by Claymore Systems,<br />

Inc. Redistribution and use in source and binary forms, with or


Product Notices<br />

without modification, are permitted provided that the following<br />

conditions are met: Redistributions of source code must retain the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer. Redistributions in binary form must reproduce the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided<br />

with the distribution. All advertising materials mentioning<br />

features or use of this software must display the following<br />

acknowledgement: This product includes software developed by<br />

Claymore Systems, Inc. Neither the name or Claymore Systems,<br />

Inc. nor the name of Eric Rescorla may be used to endorse or<br />

promote products derived from this software without specific<br />

prior written permission. THIS SOFTWARE IS PROVIDED BY<br />

THE REGENTS AND CONTRIBUTORS “AS IS” AND ANY<br />

EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT<br />

NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,<br />

INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br />

CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT<br />

LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br />

SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br />

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />

THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br />

SUCH DAMAGE.<br />

This product contains Java Service Wrapper v.3.2.3 developed by<br />

Tanuki Software. Copyright © 1999, 2006 Tanuki Software Inc.<br />

Permission is hereby granted, free of charge, to any person<br />

obtaining a copy of the Java Service Wrapper and associated<br />

documentation files (the “Software”), to deal in the Software<br />

without restriction, including without limitation the rights to<br />

use, copy, modify, merge, publish, distribute, sub-license, and/or<br />

sell copies of the Software, and to permit persons to whom the<br />

Software is furnished to do so, subject to the following conditions:<br />

The above copyright notice and this permission notice shall be<br />

included in all copies or substantial portions of the Software. THE<br />

SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF<br />

ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT<br />

LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br />

FITNESS FOR A PARTICULAR PURPOSE AND NON-<br />

INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR<br />

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,<br />

DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION<br />

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT<br />

OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE<br />

OR OTHER DEALINGS IN THE SOFTWARE. Portions of Java<br />

Service Wrapper have been derived from source code developed<br />

by Silver Egg Technology under the following license: Copyright<br />

© 2001 Silver Egg Technology. Permission is hereby granted, free<br />

of charge, to any person obtaining a copy of this software and<br />

associated documentation files (the “Software”), to deal in the<br />

Software without restriction, including without limitation the<br />

rights to use, copy, modify, merge, publish, distribute, sublicense,<br />

and/or sell copies of the Software, and to permit persons to<br />

whom the Software is furnished to do so, subject to the following<br />

conditions: The above copyright notice and this permission<br />

notice shall be included in all copies or substantial portions of the<br />

Software.<br />

This product contains JavaScript for Java which is subject to the<br />

Netscape Public License Version 1.1 (the “License”); you may not<br />

use this file except in compliance with the License. You may<br />

obtain a copy of the License at http://www.mozilla.org/NPL/.<br />

Software distributed under the License is distributed on an “AS<br />

IS” basis, WITHOUT WARRANTY OF ANY KIND, either express<br />

or implied. See the License for the specific language governing<br />

rights and limitations under the License. The Original Code is<br />

Rhino code, released May 6, 1999. The Initial Developer of the<br />

Original Code is Netscape Communications Corporation.<br />

Portions created by Netscape are Copyright (C) 1997-1999<br />

Netscape Communications Corporation. All Rights Reserved.<br />

Contributor(s): Norris Boyd<br />

This product contains JBoss Application <strong>Server</strong> version 4.2.0.,<br />

JBoss AOP version 1.5.5.GA and JBoss Web version 2.0.0.GA.<br />

Copyright © 2006, Red Hat Middleware LLC, and individual<br />

contributors as indicated by the @author tags. See the<br />

copyright.txt file in the distribution for a full listing of individual<br />

contributors This library is free software; you can redistribute it<br />

and/or modify it under the terms of the GNU Lesser General<br />

Public License as published by the Free Software Foundation;<br />

either version 2.1 of the License, or (at your option) any later<br />

version. Copyright © 1991, 1999 Free Software Foundation, Inc.,<br />

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. This<br />

library is distributed in the hope that it will be useful, but<br />

WITHOUT ANY WARRANTY; without even the implied<br />

warranty of MERCHANTABILITY or FITNESS FOR A<br />

PARTICULAR PURPOSE. See the GNU Lesser General Public<br />

License for more details. You should have received a copy of the<br />

GNU Lesser General Public License along with this library; if not,<br />

write to the Free Software Foundation, Inc., 51 Franklin Street,<br />

Fifth Floor, Boston, MA 02110-1301 USA.<br />

This product contains JFree Chart version 1.0.1. Copyright 2000-<br />

2006, by Object Refinery Limited and Contributors. This library is<br />

free software; you can redistribute it and/or modify it under the<br />

terms of the GNU Lesser General Public License as published by<br />

the Free Software Foundation; either version 2.1 of the License, or<br />

(at your option) any later version. Copyright © 1991, 1999 Free<br />

Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,<br />

MA 02111-1307 USA. This library is distributed in the hope that it<br />

will be useful, but WITHOUT ANY WARRANTY; without even<br />

the implied warranty of MERCHANTABILITY or FITNESS FOR<br />

A PARTICULAR PURPOSE. See the GNU Lesser General Public<br />

License for more details. You should have received a copy of the<br />

GNU Lesser General Public License along with this library; if not,<br />

write to the Free Software Foundation, Inc., 51 Franklin Street,<br />

Fifth Floor, Boston, MA 02110-1301 USA.<br />

This product contains jTDS Drivers version 1.2.2 for MS SQL<br />

<strong>Server</strong>. This library is free software; you can redistribute it and/<br />

or modify it under the terms of the GNU Lesser General Public<br />

License as published by the Free Software Foundation; either<br />

version 2.1 of the License, or (at your option) any later version.<br />

Copyright © 1991, 1999 Free Software Foundation, Inc., 59<br />

Temple Place, Suite 330, Boston, MA 02111-1307 USA. This<br />

library is distributed in the hope that it will be useful, but<br />

WITHOUT ANY WARRANTY; without even the implied<br />

warranty of MERCHANTABILITY or FITNESS FOR A<br />

PARTICULAR PURPOSE. See the GNU Lesser General Public<br />

License for more details. You should have received a copy of the<br />

GNU Lesser General Public License along with this library; if not,<br />

write to the Free Software Foundation, Inc., 51 Franklin Street,<br />

Fifth Floor, Boston, MA 02110-1301 USA.<br />

This product contains software developed by JXML, Inc. and its<br />

contributors:http://www.jxml.com/mdsax/contributors.html<br />

Copyright (c) 1998, 1999, JXML, Inc. All rights reserved.<br />

Redistribution and use in source and binary forms, with or<br />

without modification, are permitted provided that the following<br />

conditions are met: Redistributions of source code must retain the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer. Redistributions in binary form must reproduce the<br />

above copyright notice, this list of conditions and the following<br />

disclaimer in the documentation and/or other materials provided<br />

with the distribution. All product materials mentioning features<br />

or use of this software must display the following<br />

acknowledgement: This product includes software developed by<br />

JXML, Inc. and its contributors: http://www.jxml.com/mdsax/<br />

contributors.html. Neither name of JXML nor the names of its<br />

contributors may be used to endorse or promote products<br />

derived from this software without specific prior written<br />

permission. THIS SOFTWARE IS PROVIDED BY JXML, INC.<br />

AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR<br />

IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,<br />

THE IMPLIED WARRANTIES OF MERCHANTABILITY AND<br />

FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.


IN NO EVENT SHALL JXML OR CONTRIBUTORS BE LIABLE<br />

FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,<br />

EXEMPLARY, OR CONSEQUENTIAL DAMAGES<br />

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF<br />

SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR<br />

PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<br />

CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER<br />

IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING<br />

NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

This product contains Log4J software v. 1.2.15 developed by The<br />

Apache Software Foundation (http://www.apache.org/).<br />

Licensed under the Apache License, Version 2.0 (the “License”);<br />

you may not use this file except in compliance with the License.<br />

You may obtain a copy of the License at http://<br />

www.apache.org/licenses/LICENSE-2.0. Unless required by<br />

applicable law or agreed to in writing, software distributed under<br />

the License is distributed on an “AS IS” BASIS, WITHOUT<br />

WARRANTIES OR CONDITIONS OF ANY KIND, either express<br />

or implied. See the License for the specific language governing<br />

permissions and limitations under the License.<br />

This product contains NSPR Library software. The contents of<br />

this file are subject to the Mozilla Public License Version 1.1 (the<br />

“License”); you may not use this file except in compliance with<br />

the License. You may obtain a copy of the License at http://<br />

www.mozilla.org/MPL/. Software distributed under the License<br />

is distributed on an “AS IS” basis, WITHOUT WARRANTY OF<br />

ANY KIND, either express or implied. See the License for the<br />

specific language governing rights and limitations under the<br />

License. The Original Code is the Netscape Portable Runtime<br />

(NSPR). The Initial Developer of the Original Code is Netscape<br />

Communications Corporation. Portions created by Netscape are<br />

Copyright (C) 1998-2000 Netscape Communications Corporation.<br />

All Rights Reserved.<br />

This product contains OpenSSL software and is licensed under<br />

the terms of the OpenSSL License and the SSLeay License.<br />

Copyright © 1998-2008 The OpenSSL Project. All rights reserved.<br />

Redistribution and use in source and binary forms, with or<br />

without modification, are permitted provided that the following<br />

conditions are met: 1. Redistributions of source code must retain<br />

the above copyright notice, this list of conditions and the<br />

following disclaimer. 2. Redistributions in binary form must<br />

reproduce the above copyright notice, this list of conditions and<br />

the following disclaimer in the documentation and/or other<br />

materials provided with the distribution. 3. All advertising<br />

materials mentioning features or use of this software must<br />

display the following acknowledgment: “This product includes<br />

software developed by the OpenSSL Project for use in the<br />

OpenSSL Toolkit. (http://www.openssl.org/)” 4. The names<br />

“OpenSSL Toolkit” and “OpenSSL Project” must not be used to<br />

endorse or promote products derived from this software without<br />

prior written permission. For written permission, please contact<br />

openssl-core@openssl.org. 5. Products derived from this software<br />

may not be called “OpenSSL” nor may “OpenSSL” appear in<br />

their names without prior written permission of the OpenSSL<br />

Project. 6. Redistributions of any form whatsoever must retain the<br />

following acknowledgment: “This product includes software<br />

developed by the OpenSSL Project for use in the OpenSSL Toolkit<br />

(http://www.openssl.org/)” THIS SOFTWARE IS PROVIDED<br />

BY THE OpenSSL PROJECT “AS IS” AND ANY EXPRESSED OR<br />

IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,<br />

THE IMPLIED WARRANTIES OF MERCHANTABILITY AND<br />

FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.<br />

IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS<br />

CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL<br />

DAMAGES (INCLUDING, BUT NOT LIMITED TO,<br />

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;<br />

LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br />

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

Product Notices<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />

THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br />

SUCH DAMAGE. This product includes cryptographic software<br />

written by Eric Young (eay@cryptsoft.com). This product<br />

includes software written by Tim Hudson (tjh@cryptsoft.com).<br />

Copyright © 1995-1998 Eric Young (eay@cryptsoft.com). All<br />

rights reserved. Original SSLeay License. Copyright © 1995-1998<br />

Eric Young (eay@cryptsoft.com). All rights reserved. This<br />

package is an SSL implementation written by Eric Young<br />

(eay@cryptsoft.com). Redistribution and use in source and binary<br />

forms, with or without modification, are permitted provided that<br />

the following conditions are met: 1. Redistributions of source<br />

code must retain the copyright notice, this list of conditions and<br />

the following disclaimer. 2. Redistributions in binary form must<br />

reproduce the above copyright notice, this list of conditions and<br />

the following disclaimer in the documentation and/or other<br />

materials provided with the distribution. 3. All advertising<br />

materials mentioning features or use of this software must<br />

display the following acknowledgement: “This product includes<br />

cryptographic software written by Eric Young<br />

(eay@cryptsoft.com)” The word 'cryptographic' can be left out if<br />

the routines from the library being used are not cryptographic<br />

related. 4. If you include any Windows specific code (or a<br />

derivative thereof) from the apps directory (application code) you<br />

must include an acknowledgement: “This product includes<br />

software written by Tim Hudson (tjh@cryptsoft.com)” THIS<br />

SOFTWARE IS PROVIDED BY ERIC YOUNG “AS IS” AND ANY<br />

EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<br />

LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,<br />

INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br />

CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT<br />

LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br />

SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY<br />

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<br />

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF<br />

THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF<br />

SUCH DAMAGE.<br />

This product includes Sapia Ubik software developed by Sapia<br />

Open Source Software. Copyright © 2002, 2003 Sapia Open<br />

Source Software (http://www.sapia-oss.org/). All rights<br />

reserved. Redistribution and use in source and binary forms, with<br />

or without modification, are permitted provided that the<br />

following conditions are met: Redistributions of source code must<br />

retain the above copyright notice, this list of conditions and the<br />

following disclaimer. Redistributions in binary form must<br />

reproduce the above copyright notice, this list of conditions and<br />

the following disclaimer in the documentation and/or other<br />

materials provided with the distribution. The end-user<br />

documentation included with the redistribution, if any, must<br />

include the following acknowledgment: “This product includes<br />

software developed by Sapia Open Source Software Organization<br />

(http://www.sapia-oss.org/).” Alternately, this<br />

acknowledgment may appear in the software itself, if and<br />

wherever such third-party acknowledgments normally appear.<br />

The names “Sapia", “Sapia Open Source Software” and “Sapia<br />

OSS” must not be used to endorse or promote products derived<br />

from this software without prior written permission. For written<br />

permission, please contact info@sapia-oss.org. Products derived<br />

from this software may not be called “Sapia”, nor may “Sapia”<br />

appear in their name, without prior written permission of Sapia<br />

OSS. THIS SOFTWARE IS PROVIDED “AS IS” AND ANY<br />

EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT<br />

NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

SAPIA OSS ORGANIZATION OR ITS CONTRIBUTORS BE<br />

LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,<br />

SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES<br />

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF


Product Notices<br />

SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR<br />

PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<br />

CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER<br />

IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING<br />

NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

This product contains software code that is Copyright 2007,<br />

Microsoft Corporation. All rights reserved.<br />

This product contains XML Parsing Library for C version 2.6.32.<br />

Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved.<br />

Permission is hereby granted, free of charge, to any person<br />

obtaining a copy of this software and associated documentation<br />

files (the “Software”), to deal in the Software without restriction,<br />

including without limitation the rights to use, copy, modify,<br />

merge, publish, distribute, sublicense, and/or sell copies of the<br />

Software, and to permit persons to whom the Software is<br />

furnished to do so, subject to the following conditions: The above<br />

copyright notice and this permission notice shall be included in<br />

all copies or substantial portions of the Software. THE<br />

SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF<br />

ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT<br />

LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br />

FITNESS FOR A PARTICULAR PURPOSE AND<br />

NONINFRINGEMENT. IN NO EVENT SHALL THE DANIEL<br />

VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR<br />

OTHER LIABILITY, WHETHER IN AN ACTION OF<br />

CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF<br />

OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR<br />

OTHER DEALINGS IN THE SOFTWARE.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!