02.05.2013 Views

MKS Integrity Server Administration Guide

MKS Integrity Server Administration Guide

MKS Integrity Server 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 />

2007<br />

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


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

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

Copyright © 2001–2007 <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>, <strong>MKS</strong> Source <strong>Integrity</strong>, <strong>MKS</strong> <strong>Integrity</strong> Manager, Implementer, <strong>MKS</strong> Toolkit, Sandbox, NuTCRACKER, <strong>MKS</strong> <strong>Integrity</strong> Solution,<br />

AlertCentre, <strong>MKS</strong> <strong>Integrity</strong> Suite, and <strong>MKS</strong> Federated <strong>Server</strong> are trademarks or registered trademarks of <strong>MKS</strong> Inc. All other trademarks<br />

or registered trademarks 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 />

Ebisu Garden Place Tower 18F<br />

Ebisu 4-20-3<br />

Shibuya-ku, Tokyo, Japan<br />

150-6018<br />

tel: 03-5789-5862<br />

fax: 03-5789-5757


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 />

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

<strong>MKS</strong> Source Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

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

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

Filtering Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

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

Display Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

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

Print Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

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

Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

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

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

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

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

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

<strong>MKS</strong> Deploy Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

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

Defining Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

Rule Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

Nodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Conditions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

Selecting Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />

Viewing <strong>Administration</strong> History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

Editing ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

Copying ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

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

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

Process Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

Publish New ViewSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

Publish Personal ViewSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

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

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

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

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

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

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

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

Editing ViewSet Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />

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

Updating Published ViewSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

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

Working in Types View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82


Table of Contents<br />

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

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

Editing Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90<br />

Copying Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

Viewing Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

Deleting Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

Moving Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

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

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

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

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

Overrides for Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

Overrides for States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

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

Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

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

Available Menu Commands for Fields. . . . . . . . . . . . . . . . 105<br />

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

Creating Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

Setting Possible Values for Fields . . . . . . . . . . . . . . . . . . . . 107<br />

Specifying Default Columns . . . . . . . . . . . . . . . . . . . . . . . . 124<br />

Setting Field Relevance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br />

Setting Field Editability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Setting Field Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128<br />

Setting Field Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />

Editing Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />

Viewing Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130<br />

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

Deleting Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131<br />

Moving Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />

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

Creating Field Relationships . . . . . . . . . . . . . . . . . . . . . . . . 134<br />

Editing Field Relationships . . . . . . . . . . . . . . . . . . . . . . . . . 137<br />

Deleting Field Relationships . . . . . . . . . . . . . . . . . . . . . . . . 137<br />

Workflows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138<br />

Workflow View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138<br />

Creating Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

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

Viewing Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br />

Managing Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143<br />

Printing Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br />

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

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

Installing and Starting Production <strong>Server</strong> . . . . . . . . . . . . . 150<br />

Installing and Configuring Staging <strong>Server</strong> . . . . . . . . . . . . 150<br />

iii


Table of Contents<br />

iv<br />

Copying <strong>MKS</strong> <strong>Integrity</strong> Database . . . . . . . . . . . . . . . . . . . . 152<br />

Starting Staging <strong>Server</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

Testing <strong>MKS</strong> <strong>Integrity</strong> Configuration . . . . . . . . . . . . . . . . . 153<br />

Managing Administrative Locks . . . . . . . . . . . . . . . . . . . . . 154<br />

Using Admin Migration Wizard . . . . . . . . . . . . . . . . . . . . . 156<br />

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

Deleting Admin Objects and Items . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

Deleting Admin Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

Deleting Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

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

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

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

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

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

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

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

Available Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

Modifying Template Properties. . . . . . . . . . . . . . . . . . . . . . 174<br />

Tips for Working With Template Designer . . . . . . . . . . . . 178<br />

Templates for Viewing, Submitting, and Printing Items . 179<br />

Previewing Presentation Template . . . . . . . . . . . . . . . . . . . 179<br />

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

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

Working With Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186<br />

Working With Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187<br />

Working With Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189<br />

Working With Tabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192<br />

Filtering Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

Adding Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

Working With Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

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

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

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

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

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

Report Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

Report Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />

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

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

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

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

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

Configuring Context Based Text Searching . . . . . . . . . . . . . . . . . . . . 217


Table of Contents<br />

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

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

Admin Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219<br />

Converting User Objects to Admin Objects. . . . . . . . . . . . . . . . 219<br />

Viewing Admin Object References . . . . . . . . . . . . . . . . . . . . . . . 220<br />

Charts View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221<br />

Dashboards View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222<br />

Queries View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223<br />

Reports View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223<br />

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

Operations for Type Properties . . . . . . . . . . . . . . . . . . . . . . . . . . 225<br />

6 Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227<br />

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

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

Projects View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229<br />

Setting Project Visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230<br />

Creating Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232<br />

Editing Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235<br />

Viewing Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

Deleting Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

Managing Project Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

Deactivating Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

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

<strong>MKS</strong> Source Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242<br />

<strong>MKS</strong> Source Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242<br />

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

Single-tree Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243<br />

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

Creating Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

Importing Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

Importing Members. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247<br />

Dropping Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249<br />

Restoring Project to Previous Checkpoint . . . . . . . . . . . . . 250<br />

Restoring Deleted Projects . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

Using Project Metrics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

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

Creating Subprojects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260<br />

Adding Subprojects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />

Adding Shared Subprojects . . . . . . . . . . . . . . . . . . . . . . . . . 262<br />

Configuring Subprojects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263<br />

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

Shared Subprojects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266<br />

Common Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266<br />

Potential Problems With Common Projects. . . . . . . . . . . . 267<br />

v


Table of Contents<br />

vi<br />

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

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

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

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

General Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271<br />

Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271<br />

Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

Empty Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

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

Timestamp Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

Date Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

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

Data Conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

Function Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

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

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

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

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

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

Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

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

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

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

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

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

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

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

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

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

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

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

Viewing Change Package Attributes . . . . . . . . . . . . . . . . . 306<br />

Viewing Change Package Attribute Details. . . . . . . . . . . . 306<br />

Creating Change Package Attributes . . . . . . . . . . . . . . . . . 307<br />

Editing Change Package Attributes . . . . . . . . . . . . . . . . . . 308<br />

Deleting Change Package Attributes . . . . . . . . . . . . . . . . . 308<br />

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

Viewing Change Package Entry Attributes . . . . . . . . . . . . 309<br />

Viewing Change Package Entry Attribute Details . . . . . . 310<br />

Creating Change Package Entry Attributes. . . . . . . . . . . . 310<br />

Editing Change Package Entry Attributes . . . . . . . . . . . . . 311<br />

Deleting Change Package Entry Attributes . . . . . . . . . . . . 312<br />

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

Creating Change Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 313


Table of Contents<br />

Editing Change Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

Deleting Change Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

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

Creating Change Package Entries . . . . . . . . . . . . . . . . . . . . 314<br />

Editing Change Package Entries . . . . . . . . . . . . . . . . . . . . . 314<br />

Deleting Change Package Entries . . . . . . . . . . . . . . . . . . . . 315<br />

<strong>MKS</strong> Source Change Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

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

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

Review Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318<br />

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

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

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

<strong>MKS</strong> <strong>Integrity</strong> Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323<br />

Event Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323<br />

How to Use <strong>MKS</strong> <strong>Integrity</strong> Event Triggers . . . . . . . . . . . . 323<br />

Transactionality of Event Triggers . . . . . . . . . . . . . . . . . . . 324<br />

Planning Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325<br />

Using Event Triggers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326<br />

Managing Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . 326<br />

Creating Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327<br />

Running Scheduled Triggers . . . . . . . . . . . . . . . . . . . . . . . . 335<br />

Viewing Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335<br />

Editing Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336<br />

Deleting Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336<br />

Resolving Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . 337<br />

<strong>MKS</strong> <strong>Integrity</strong> Script Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337<br />

Available Pre-created Scripts . . . . . . . . . . . . . . . . . . . . . . . . 337<br />

Adding Scripts to Library. . . . . . . . . . . . . . . . . . . . . . . . . . . 338<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers. . . . . . . . . . . . . . . . . . . . . . . 340<br />

Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340<br />

<strong>MKS</strong> Source Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343<br />

Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345<br />

Event Trigger Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346<br />

Subproject Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . 346<br />

Components of Event Triggers . . . . . . . . . . . . . . . . . . . . . . 347<br />

Creating <strong>Server</strong>-side Event Triggers. . . . . . . . . . . . . . . . . . . . . . 347<br />

Configuring Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . 348<br />

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

Writing Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350<br />

Updating Events Definition File . . . . . . . . . . . . . . . . . . . . . 351<br />

Event Trigger Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352<br />

Sample <strong>Server</strong>-side Event Triggers . . . . . . . . . . . . . . . . . . . . . . . 353<br />

Sample Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353<br />

vii


Table of Contents<br />

vii<br />

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

Additional Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355<br />

Configuring Client-side Event Triggers . . . . . . . . . . . . . . . . . . . 355<br />

Trigger Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356<br />

Target Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357<br />

Sample Client-side Triggers . . . . . . . . . . . . . . . . . . . . . . . . . 358<br />

Modifying <strong>MKS</strong> <strong>Integrity</strong> Item Fields. . . . . . . . . . . . . . . . . . . . . 364<br />

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

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

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

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

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

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

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

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

FLEXnet Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384<br />

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

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

si diag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386<br />

im diag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387<br />

runstacktrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387<br />

mksis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388<br />

isutil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389<br />

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

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

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

Troubleshooting <strong>MKS</strong> Source Reporting . . . . . . . . . . . . . . . . . . . . . . 394<br />

B Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395<br />

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401<br />

Product Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415


C HAPTER ONE<br />

Introduction<br />

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

1<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 <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 <strong>MKS</strong> <strong>Integrity</strong>, <strong>MKS</strong> Source, and the associated product access control lists and event<br />

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> 2007<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 />

<strong>MKS</strong> <strong>Integrity</strong> projects and types to a project administrator and type 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> Client 2007 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> and <strong>MKS</strong> Source<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 />

and <strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source 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 169<br />

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

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

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


Assumptions<br />

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

Provides information on arithmetic operations between fields and their uses.<br />

Chapter 8: “Change Packages” on page 295<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 321<br />

Describes how to use event triggers with global and project applications.<br />

Appendix A: “Troubleshooting” on page 373<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 395<br />

Defines many of the common terms used when talking about the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>,<br />

<strong>MKS</strong><strong>Integrity</strong>, and <strong>MKS</strong>Source.<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 />

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

templates for <strong>MKS</strong> <strong>Integrity</strong> or making changes to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page.<br />

TIP For useful information on HTML, browse to www.w3.org/MarkUp.<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 />

3


Chapter 1: Introduction<br />

4<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> 2007 Installation and<br />

Configuration <strong>Guide</strong>.<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 />

If you are implementing <strong>MKS</strong> <strong>Integrity</strong> or <strong>MKS</strong> Source event triggers, you have<br />

experience with JavaScript.<br />

If you are implementing <strong>MKS</strong> <strong>Integrity</strong> event triggers, you understand logical rules.<br />

You understand the character set encoding requirements of your e-mail system.<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 the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, <strong>MKS</strong> <strong>Integrity</strong>, and<br />

<strong>MKS</strong> Source. For <strong>MKS</strong> <strong>Integrity</strong>, the administrator also installs the database on a network,<br />

defines and customizes item types and workflow, and creates additional user accounts,<br />

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<br />

<strong>MKS</strong> <strong>Integrity</strong> projects 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.<br />

<strong>MKS</strong> <strong>Integrity</strong> Setup<br />

Additional tasks required of a super administrator for the <strong>MKS</strong> <strong>Integrity</strong> component include:<br />

defining and creating item types<br />

customizing fields<br />

assigning users and user groups<br />

determining privileges<br />

defining workflow


setting up any event triggers<br />

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

The super administrator can also restrict the visibility and editability of <strong>MKS</strong> <strong>Integrity</strong><br />

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

scope of their user privileges.<br />

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

administrator needs to define other <strong>MKS</strong> <strong>Integrity</strong> objects (building blocks) before the rest of<br />

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 <strong>MKS</strong> <strong>Integrity</strong>, a project contains labels that help you sort and organize items in a<br />

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 />

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 <strong>MKS</strong> <strong>Integrity</strong> event triggers, “Event Triggers” on page 321.<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 />

5


Chapter 1: Introduction<br />

6<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 <strong>MKS</strong> <strong>Integrity</strong> standard fields. The standard fields are Summary, State,<br />

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

data types, values, visibility, relevance, editability, and description. Both standard and<br />

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

changing the state of 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 in <strong>MKS</strong> <strong>Integrity</strong>. Graphical<br />

charts show users a summary of the data in <strong>MKS</strong> <strong>Integrity</strong>.<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.<br />

<strong>MKS</strong> Source Setup<br />

Before using <strong>MKS</strong> Source to manage the projects in a development environment, the<br />

administrator is responsible for taking a careful look at how projects and directories are<br />

currently organized on the file system. This allows the administrator to make decisions about<br />

how best to organize projects, use subprojects, or 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> Source, 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


secure sockets layer (SSL) protocol<br />

access control lists (ACLs)<br />

file level security<br />

Setting Up and Using <strong>MKS</strong> <strong>Integrity</strong><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> 2007 Installation and Configuration <strong>Guide</strong>.<br />

The overall security environment for <strong>MKS</strong> <strong>Integrity</strong> is divided into three major 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 />

<strong>MKS</strong> Source, you should set yourself up as an administrator. As administrator, you are<br />

responsible for assigning appropriate permissions to users and groups.<br />

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

<strong>MKS</strong> Source environment by creating projects and subprojects. For more information on<br />

setting up projects, see “<strong>MKS</strong> Source Projects” on page 242.<br />

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

to customize your <strong>MKS</strong> Source environment further and to control the way users may<br />

operate in that environment. For more information on event triggers, see “<strong>Server</strong>-side<br />

<strong>MKS</strong> Source Event Triggers” on page 340.<br />

7


Chapter 1: Introduction<br />

Where to Go Next<br />

8<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 admin objects.<br />

Create <strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source projects<br />

to manage tasks and members.<br />

Create <strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source change<br />

packages to control, record, and apply member<br />

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 169<br />

“Projects” on page 227<br />

“Change Packages” on page 295


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), set up <strong>MKS</strong> <strong>Integrity</strong>, and configure <strong>MKS</strong> Source policies through a GUI. The<br />

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

administration tasks.<br />

For 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 32<br />

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

“Defining Rules” on page 41<br />

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

9


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

Introduction<br />

Opening Interface<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 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 />

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 />

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> 2007 Installation and<br />

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

To open the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client from the GUI<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 using the GUI<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 28.<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 in the GUI<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 34.<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 from the GUI<br />

Application Window<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.<br />

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

explained in this section.


Title Bar<br />

Menu Bar<br />

Toolbars<br />

Application<br />

Window<br />

Tree Pane<br />

Status Bar<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 />

Introduction<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 />

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

example, working with permissions or <strong>MKS</strong> Source policies).<br />

13


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

14<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 <strong>MKS</strong> <strong>Integrity</strong> is not installed on the server, the <strong>MKS</strong> <strong>Integrity</strong> node is not<br />

displayed 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 <strong>MKS</strong> Source policies under the<br />

<strong>MKS</strong> Source section. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation and<br />

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.<br />

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> 2007 Installation and<br />

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

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

Configuration <strong>Guide</strong>.


View Node Location<br />

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

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

Display Pane<br />

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

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

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

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

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

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

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

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

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

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

Charts See “Charts View” on page 221.<br />

Dashboards See “Dashboards View” on page 222.<br />

Queries See “Queries View” on page 223.<br />

Reports See “Reports View” on page 223.<br />

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

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

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

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

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

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

<strong>MKS</strong> Deploy See the <strong>MKS</strong> Deploy 2007 <strong>Administration</strong> <strong>Guide</strong>.<br />

Introduction<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: a blank check box ( ) means the option is not enabled, a<br />

check mark ( ) means the option is enabled, and a question mark ( ) denotes to be<br />

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

15


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

16<br />

Status Bar<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.<br />

Workspace<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 <strong>MKS</strong> <strong>Integrity</strong> objects is<br />

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:


Filtering Data<br />

Introduction<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 />

( ) buttons.<br />

^<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 />

Text Filter Attribute Filters<br />

A typical data filter<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:<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 />

17


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

18<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:<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.


Filtering Data in List<br />

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

Introduction<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 />

19


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

20<br />

Filtering Data in View<br />

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

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

view or dialog box.<br />

Data filter for the Fields view


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 />

<strong>MKS</strong> <strong>Integrity</strong> objects (queries, charts, reports, and dashboards) can be marked as favorites,<br />

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

using the my favorites or not my favorites filters. For more information, see<br />

“Working With Favorites” on page 26.<br />

Active and Inactive Values<br />

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

values are users, groups, <strong>MKS</strong> <strong>Integrity</strong> projects, and pick list items that are currently<br />

active in <strong>MKS</strong> <strong>Integrity</strong>. Inactive values represent obsolete values in <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 />

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

realm.<br />

21


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

22<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 />

<strong>MKS</strong> <strong>Integrity</strong> Projects<br />

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

<strong>MKS</strong> Source 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 />

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, <strong>MKS</strong> <strong>Integrity</strong> projects, or pick list<br />

values.<br />

inactive Displays inactive users, groups, <strong>MKS</strong> <strong>Integrity</strong> projects, or pick list<br />

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.


Filter Description<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 />

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 />

To filter data<br />

Introduction<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 />

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.<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 />

23


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

24<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 />

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.


Introduction<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 an <strong>MKS</strong> Source 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.<br />

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 />

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

25


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

26<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 <strong>MKS</strong> <strong>Integrity</strong> objects (queries, charts, reports, and dashboards) that you created and<br />

use, you configure these objects as favorites. In the relevant view, favorites display with the my<br />

favorites filter (for more information, see “Filtering Data” on page 17). In the GUI and<br />

Web interface, favorites are indicated by and non-favorite objects by . By default, all<br />

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 an Admin 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 />

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.


Display Patterns<br />

Introduction<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<br />

field 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.<br />

To specify a display pattern<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 />

27


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

<strong>Server</strong> Connections<br />

28<br />

Symbol Description<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.<br />

‘ Escapes special characters. Use '' to create a single quote.<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 />

To connect to an <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><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.


Introduction<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, <strong>MKS</strong> <strong>Integrity</strong>, and <strong>MKS</strong> Source on that server. To open a<br />

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.<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 />

To disconnect from an <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

1 Select File > <strong>Server</strong> Connection, and select the target server from the list.<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 />

29


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

Print Functions<br />

30<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 />

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 />

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 />

Collecting Properties and Log Files<br />

If you are unable to diagnose a problem with the <strong>MKS</strong> <strong>Integrity</strong> Client or <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>, you can use the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client to collect client and server logs<br />

and properties into a compressed ZIP file (called a support package). When your support<br />

package is assembled, you can e-mail it to <strong>MKS</strong> Customer Care for further diagnosis. For<br />

more information, see “Troubleshooting” on page 373.


Note the following:<br />

Introduction<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 />

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 />

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, you must have Admin<strong>Server</strong> and AdminProxy permissions for<br />

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

To create a support package from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client 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 />

31


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

32<br />

2 From the tree pane, right click the <strong>MKS</strong> <strong>Integrity</strong> or <strong>MKS</strong> Source node, and select Collect<br />

Support Package. A standard save dialog box displays.<br />

3 Type a name for the ZIP file, for example, support.zip.<br />

4 Click Save. 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 374.<br />

To create a support package from the CLI when the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is not running<br />

From a command line, go to /bin and type one of the<br />

following commands:<br />

On Windows:<br />

NOTE This command collects server files only.<br />

collectSupportPackage.exe zipFilename<br />

On UNIX:<br />

where<br />

Preferences<br />

collectSupportPackage zipFilename<br />

zipFilename specifies the name of the ZIP file, for example, support.zip.<br />

The <strong>MKS</strong> <strong>Integrity</strong> Client contains a common Preferences Configuration window that<br />

displays in <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, <strong>MKS</strong> <strong>Integrity</strong>, <strong>MKS</strong> Source, and<br />

Authorization <strong>Administration</strong>. The Preferences Configuration window allows you to<br />

configure preferences for each component installed on your local machine.


Preferences<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 33.<br />

To configure server preferences, see “<strong>Server</strong> Preferences” on page 35.<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 37.<br />

To configure <strong>MKS</strong> Source preferences, refer to the <strong>MKS</strong> Source 2007 User <strong>Guide</strong>.<br />

To configure <strong>MKS</strong> <strong>Integrity</strong> preferences, refer to the <strong>MKS</strong> <strong>Integrity</strong> 2007 User <strong>Guide</strong>.<br />

To configure Authorization <strong>Administration</strong> preferences, see “Authorization<br />

<strong>Administration</strong> Preferences” on page 39.<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 />

The confirmation dialog box that appears when you shut down the <strong>MKS</strong> <strong>Integrity</strong><br />

Client<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 />

33


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

34<br />

To set <strong>MKS</strong> <strong>Integrity</strong> Client preferences from the GUI<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 />

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.


To set <strong>MKS</strong> <strong>Integrity</strong> Client command preferences from the GUI<br />

<strong>Server</strong> Preferences<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.<br />

Preferences<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—<strong>MKS</strong> Source, <strong>MKS</strong> <strong>Integrity</strong>, <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client,<br />

and Authorization <strong>Administration</strong>—close and shut down.<br />

3 To save your preferences, click OK.<br />

To address the needs of geographically dispersed organizations, the <strong>MKS</strong> <strong>Integrity</strong> Federated<br />

<strong>Server</strong> architecture (FSA) serves <strong>MKS</strong> Source client requests through a proxy. The proxy<br />

provides access to project members residing on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> by retrieving<br />

information from its local cache or, if changes are detected, directly from the server.<br />

The Proxies node in the <strong>Server</strong>s folder allows you to configure proxy preferences.<br />

Optionally, you can specify a network proxy to connect to by configuring the SOCKS node.<br />

For a detailed discussion about using a proxy, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation<br />

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

To set proxy preferences from the GUI<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> Source 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> Source prompts you only<br />

once for your user name and password. If the authentication schemes used do not<br />

match, <strong>MKS</strong> Source prompts you for your user name and password again.<br />

35


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

36<br />

b) Select Always confirm proxy username and password if you want <strong>MKS</strong> Source 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 />

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> Source 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.


To set SOCKS preferences from the GUI<br />

1 Select Tools > Preferences. The Preferences Configuration window displays.<br />

Preferences<br />

2 In the tree pane under <strong>Integrity</strong> Client, open the <strong>Server</strong>s folder, and select the SOCKS<br />

node. The SOCKS pane displays.<br />

3 In the Host Name field, type the name of the server or the numerical IP address.<br />

4 In the Port field, type the port number.<br />

5 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 />

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 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 GUI. When you restart the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client GUI, 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 . The Configure toolbar for: Desktop View dialog box displays.<br />

37


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

38<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 . The target button moves to the list of Toolbar Contents and<br />

displays on the main toolbar.<br />

b) To remove a button from the main toolbar:<br />

Under Toolbar Contents, select the target button.<br />

Click . The target button moves to the list of Available Buttons and<br />

no 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 . 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 />

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 />

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.


In the Port field, type the port number.<br />

Preferences<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> 2007 Installation and Configuration<br />

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

4 To save your preferences, click OK.<br />

Setting <strong>MKS</strong> <strong>Integrity</strong> View 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 />

GUI.<br />

To set view preferences in the <strong>MKS</strong> <strong>Integrity</strong> GUI<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, and choose the view you want to configure.<br />

3 Configure the options as required. For detailed information on options, see the online<br />

help.<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 />

39


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

40<br />

To configure Authorization <strong>Administration</strong> preferences from the GUI<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 />

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> 2007 Installation and Configuration<br />

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

4 To save your preferences, click OK.<br />

<strong>MKS</strong> Deploy Preferences<br />

To use features set in the <strong>MKS</strong> Deploy preferences, you must be licensed for <strong>MKS</strong> Deploy.<br />

For more information, see the <strong>MKS</strong> Deploy 2007 <strong>Administration</strong> <strong>Guide</strong>.


<strong>Administration</strong> Command Line Interface<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 />

2007 <strong>Administration</strong> CLI Reference <strong>Guide</strong>.<br />

Defining Rules<br />

Rule Format<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 />

A rule is a statement that sets a specified outcome when certain conditions are met. For<br />

example, you could create a rule to send e-mail notification to all users in the QA group when<br />

an item has been fixed and incorporated into a build.<br />

Rules are composed of nodes and conditions. Nodes are the logical connectors that describe<br />

the relationship between two statements (or conditions). Conditions are a statement of the<br />

requirements that must be satisfied, and can involve either user or field values.<br />

The following example shows an e-mail notification rule that asks <strong>MKS</strong> <strong>Integrity</strong> to notify the<br />

user (admin@xyzBusiness.com) each time a feature request is submitted or whenever a bug<br />

is assigned to them. With the or node, the notification occurs whenever either of the events<br />

occurs.<br />

41


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

42<br />

Nodes<br />

The logical and indicates that all of the specified conditions must be true to meet the<br />

requirements of the rule.<br />

The logical or indicates that one or more of the specified conditions must be true to meet the<br />

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 />

To create a node<br />

1 Select the and or or node where you want to insert the new node.<br />

2 Do one of the following:<br />

To insert an or, click Or.<br />

To insert an and, click And.<br />

To toggle a node between or and and, select the node, and click Swap.<br />

3 Under Condition:<br />

Select the condition.<br />

Specify the values you want to add (for information on using the data filter, see<br />

“Filtering Data” on page 17).<br />

Click Add.<br />

4 Repeat steps 1 to 3 as required to build your rule.<br />

5 To accept the completed rule, click OK.<br />

Conditions<br />

NOTE To delete a node, select the node, and click Remove. A confirmation dialog<br />

box displays. To confirm the deletion, click Yes.<br />

Conditions are a statement of the requirements that must be satisfied. They can involve either<br />

user values, field values, or properties associated with an item type.


To create a condition involving user groups<br />

1 Select the and or or node where you want to insert the new condition.<br />

Defining Rules<br />

2 Under Condition, select Check the group membership of the user performing<br />

the action.<br />

3 Select is or is not from the list.<br />

4 Select a group name from the a member of list. For detailed information on using the<br />

data filter, see “Filtering Data” on page 17.<br />

5 When you are finished constructing the condition, click Add. The condition displays<br />

under the selected node.<br />

To create a condition involving field values<br />

1 Select the and or or node where you want to insert the new condition.<br />

2 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 />

3 Select the Boolean operator from the list (see “Operators” on page 44).<br />

4 Specify fields and field values for the condition. For detailed information on using the<br />

data filter, see “Filtering Data” on page 17.<br />

NOTE You cannot specify <strong>MKS</strong> Source project and attachment fields.<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 />

c) To save the specified value, click OK.<br />

5 For each field, specify an Existing Value or a New Value.<br />

43


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

44<br />

6 When you are finished constructing the condition, click Add. The condition displays<br />

under the selected node.<br />

To replace an existing rule statement with a new one<br />

1 Select the existing statement.<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 />

To check a property associated with an item type<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 Select the and or or node where you want to insert the new condition.<br />

2 Under Condition, select Check a property associated with the item's type.<br />

3 Select a type property name from the filtered list. For information on using the data<br />

filter, see “Filtering Data” on page 17.<br />

4 Select the operator from the list (see “Operators” on page 44).<br />

5 Enter a value for the property in the subsequent field.<br />

6 When you are finished constructing the condition, click Add. The condition displays<br />

under the selected node.<br />

Operators<br />

The meaning of the operator depends on whether the field you are using in the rule is single-<br />

or multi-valued.<br />

Operator Description<br />

= Equals (single valued fields)<br />

Contains (multi-valued fields)<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)


Selecting Rules<br />

Operator Description<br />

< Less than (single valued fields)<br />

When working with rules, you can copy them from other existing items, such as users,<br />

groups, fields, or triggers.<br />

Defining Rules<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 />

Contains at least one element less than (multi-valued fields)<br />


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

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

46<br />

Setting up <strong>MKS</strong> <strong>Integrity</strong> involves modifying a number of administrative objects to<br />

customize the configuration to suit your work environment. <strong>MKS</strong> <strong>Integrity</strong> administrative<br />

objects are users, groups, dynamic groups, projects, states, types, fields, triggers, change<br />

package types, and change package attributes. Whenever changes are made to these objects,<br />

<strong>MKS</strong> <strong>Integrity</strong> tracks the changes and then provides reports on the change history through<br />

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> 2007 <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.<br />

For example, the following diagram shows the record of administrative changes for the<br />

<strong>MKS</strong> <strong>Integrity</strong> project QA Scripts. In this example, changes were made to the project<br />

administrators responsible for the QA Scripts project.


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

47


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

48


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 2007 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 57<br />

“Administering Published ViewSets” on page 63<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 57<br />

“Administering Published ViewSets” on page 63<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 />

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 />

51


Chapter 3: ViewSets<br />

52<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 />

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 55 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 63).<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.


Viewing ViewSets<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.<br />

Unpublished <strong>MKS</strong> <strong>Integrity</strong><br />

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

Default 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 />

IT Executive<br />

ViewSet for monitoring all activities within an organization at a high-level. This ViewSet<br />

includes views and actions for dashboards.<br />

Business Analyst<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 63).<br />

ViewSet for for creating and managing requirements. This ViewSet includes views and<br />

actions for items, queries, charts, and reports. It also includes custom actions that launch<br />

Microsoft Word, Microsoft Excel, and Microsoft PowerPoint, if installed in the default<br />

directories on your client.<br />

53


Chapter 3: ViewSets<br />

54<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 />

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

ViewSet for managing queries, charts, reports, and dashboards. This ViewSet includes<br />

views and actions for items, queries, charts, reports, dashboards, and column sets.<br />

Project Manager<br />

ViewSet for tracking project status and activities. This ViewSet includes views and<br />

actions for change packages, items, queries, charts, reports, dashboards, and column<br />

sets.<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 />

ViewSet for creating, updating, and monitoring items. This ViewSet includes views and<br />

actions for change packages, items, queries, charts, reports, dashboards, and column<br />

sets.<br />

iSeries Developer<br />

ViewSet for reviewing iSeries 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 <strong>MKS</strong> Source, see the <strong>MKS</strong> Implementer<br />

2007 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 55<br />

“Editing ViewSets” on page 55


Creating ViewSets<br />

Editing ViewSets<br />

“Copying ViewSets” on page 56<br />

“Deleting ViewSets” on page 56<br />

Basic ViewSet Operations<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 />

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 55). The Edit ViewSet GUI is automatically<br />

launched so you can customize the ViewSet (see “Editing ViewSets” on page 55).<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<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 interface<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 />

55


Chapter 3: ViewSets<br />

Copying ViewSets<br />

Deleting ViewSets<br />

56<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 2007 Getting Started <strong>Guide</strong>.<br />

IMPORTANT The customizing ViewSet documentation in the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

2007 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 interface<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 />

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 55).<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.


Making ViewSets Available to Users<br />

To delete 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 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<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 55) 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 />

57


Chapter 3: ViewSets<br />

Process Overview<br />

58<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 />

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 />

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 55).<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 65.<br />

Publish Personal ViewSet<br />

Create Unpublished Publish<br />

Published<br />

ViewSet<br />

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


Making ViewSets Available to Users<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 59).<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 65.<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.<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 56). 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 59.<br />

To publish a ViewSet using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client GUI<br />

1 From the ViewSets view (see “Viewing ViewSets” on page 51), select the ViewSet you<br />

want to publish.<br />

59


Chapter 3: ViewSets<br />

60<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 56).<br />

To advance to the next step, click Next.<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.


Testing ViewSets<br />

Making ViewSets Available to Users<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.<br />

6 When you are finished with the Publish ViewSet wizard, click Finish.<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 2007<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 />

61


Chapter 3: ViewSets<br />

62<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 2007 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 />

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.


Administering Published ViewSets<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<br />

Published ViewSet Properties<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 interface<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 />

63


Chapter 3: ViewSets<br />

64<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 />

The following attributes are editable:<br />

Attribute Description<br />

Name Contains the name for the ViewSet. ViewSet names are not<br />

required to be unique. <strong>MKS</strong> <strong>Integrity</strong> tracks the ViewSet<br />

independently of the name you assign it. However, no two<br />

published ViewSets on the same server may have the same<br />

name.<br />

Description Contains an optional description for a ViewSet. For example,<br />

tell users why and how they should use the ViewSet.<br />

Optional Specifies that the ViewSet is optional to users. Users who<br />

have permission to import the ViewSet may do so at their<br />

discretion, but they are not required to do so. When importing<br />

ViewSets, users can see if a change to this ViewSet is made<br />

and then can choose to import the updated ViewSet.<br />

Mandatory Specifies that the ViewSet is mandatory to users who have<br />

permission to import it. Users do not have a choice if the<br />

ViewSet is imported. Instead, the ViewSet is automatically<br />

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.<br />

For more information, see “Mandatory ViewSets” on page 61.<br />

Customizable Specifies if users can customize the ViewSet. Users cannot<br />

customize 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 client, and save it as an unpublished ViewSet (see<br />

“ViewSet Types and Locations” on page 52). Editing a ViewSet (see “Editing ViewSets” on<br />

page 55) automates that process for you. However, you can manually fetch the published<br />

ViewSet without editing by creating a local duplicate (as an unpublished ViewSet) to be<br />

modified at a later date.<br />

To fetch a published 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 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.


Updating Published ViewSets<br />

Administering 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 Sever ViewSet.<br />

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 />

1 Identify a need to modify a published ViewSet.<br />

Fetch <strong>Server</strong><br />

ViewSet<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 55) 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 />

65


Chapter 3: ViewSets<br />

66<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 />

ViewSet Permissions<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 56).<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> 2007<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.


The following are available permission settings:<br />

ViewSets FAQ<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>.<br />

For information on filtering data (in this case users and groups) see “Filtering Data” on<br />

page 17.<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 />

67


Chapter 3: ViewSets<br />

68<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 56).<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 55 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. <strong>MKS</strong> <strong>Integrity</strong> items and their<br />

current states provide change management information necessary to support business<br />

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 102<br />

“Workflows” on page 138<br />

“Considerations When Modifying Visibility, Editability, and Types” on page 160<br />

“Deleting Admin Objects and Items” on page 161<br />

“Setting Up E-mail Notification” on page 162<br />

69


Chapter 4: Workflow Management<br />

Where to Go Next<br />

70<br />

The following table summarizes the steps you should follow to set up an <strong>MKS</strong> <strong>Integrity</strong><br />

workflow.<br />

To Do This … See …<br />

Manage states, including creating and editing<br />

states.<br />

Manage types, including creating and editing<br />

types.<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 <strong>MKS</strong> <strong>Integrity</strong> workflow<br />

using the Admin Migration Wizard.<br />

Assessing Your Current Product Development<br />

Process<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 <strong>MKS</strong> <strong>Integrity</strong> project to suit your<br />

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 />

“Fields” on page 102<br />

“Managing Field Relationships” on page 132<br />

“Workflows” on page 138<br />

“Considerations When Modifying Visibility,<br />

Editability, and Types” on page 160<br />

“Testing Workflow With Admin Migration Wizard”<br />

on page 147


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 <strong>MKS</strong> <strong>Integrity</strong>?<br />

2 Can you predict requiring different privileges for users in these groups?<br />

everyone is required to administer the <strong>MKS</strong> <strong>Integrity</strong> project<br />

one administrator, with the rest of the team having a subset of the administrator’s<br />

privileges<br />

What <strong>MKS</strong> <strong>Integrity</strong> privileges do you grant to your users?<br />

3 What are the user groups you can identify?<br />

<strong>MKS</strong> <strong>Integrity</strong> 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 objects in <strong>MKS</strong> <strong>Integrity</strong>:<br />

The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client does not lock admin objects, making it possible<br />

for two or more administrators to edit a common object at the same time. The final state<br />

of the option is the state set by the administrator who last saved the option. For example,<br />

if two administrators are creating workflows at the same time, only the last saved<br />

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 />

73


Chapter 4: Workflow Management<br />

74<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 />

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<br />

<strong>MKS</strong> <strong>Integrity</strong> projects 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 objects. For day-to-day management, once <strong>MKS</strong> <strong>Integrity</strong> is configured you may want<br />

to delegate a subset of administrative responsibilities by allowing certain users to manage<br />

projects and types. <strong>MKS</strong> <strong>Integrity</strong> allows you to limit access to these two key <strong>MKS</strong> <strong>Integrity</strong><br />

objects and, in this way, delegate responsibilities for the associated 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 240. For more information on type<br />

administrators, see “Assigning Type Administrator” on page 93.<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 />

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

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


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

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 subprojectsa View<br />

View<br />

No access Create<br />

Edit b<br />

View<br />

Deleteb Type Overridesc No access Edit<br />

View<br />

Create/edit<br />

presentation<br />

templates<br />

No access Create<br />

Edit b<br />

View<br />

Type Overrides c<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 />

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

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 Type administrators can only delete/modify a field or state if they are an administrator of all types that<br />

refer to it.<br />

c<br />

Type administrators can only modify the overrides for the type they administer. Other overrides for the<br />

field cannot be 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 <strong>MKS</strong> <strong>Integrity</strong> admin<br />

objects, including users, groups, dynamic groups, projects, states, types, fields, and triggers.<br />

Project and type administrators are not granted the Admin permission, and <strong>MKS</strong> <strong>Integrity</strong><br />

limits their access to the specific projects and types they are 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 <strong>MKS</strong> <strong>Integrity</strong><br />

project and allows the project administrator to assign another <strong>MKS</strong> <strong>Integrity</strong> project<br />

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> 2007 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> 2007 <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 <strong>MKS</strong> <strong>Integrity</strong> states from<br />

one convenient location. Managing states is carried out through the States view.<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 />

<strong>MKS</strong> <strong>Integrity</strong> 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 17.<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.


To create a state in the GUI<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.<br />

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 time entries to exist while an item is in a given state. For more<br />

information on creating, editing, viewing, and deleting time entries, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> 2007 User <strong>Guide</strong>.<br />

In <strong>MKS</strong> Source, state based capabilities allow change packages that are under review or<br />

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> Source<br />

2007 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 <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> Source, select<br />

<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 />

79


Chapter 4: Workflow Management<br />

Editing States<br />

Viewing States<br />

80<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 />

7 When you are finished setting the properties, click OK.<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 />

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 79.<br />

4 To determine which states are referenced by any given type, click the Usage tab for the<br />

state in question. The Usage panel shows what types refer to the state and what<br />

attributes have been 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 “Viewing Admin Object References” on page 220.<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 />

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 79.<br />

TIP You can double click a state in the States view to view it.


Deleting States<br />

Moving States<br />

State Metrics<br />

3 To determine which states are referenced by any given type, click the Usage tab for the<br />

state in question. The Usage panel shows what types refer to the state and what<br />

attributes have been 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 “Viewing Admin Object References” on page 220.<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 />

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 />

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 />

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<br />

81


Chapter 4: Workflow Management<br />

Types<br />

82<br />

a 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 290.<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 93.<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.<br />

Working in Types View<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage <strong>MKS</strong> <strong>Integrity</strong> types from<br />

one convenient location. Managing types is carried out through the Types view.<br />

To open the Types view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

<strong>MKS</strong> <strong>Integrity</strong> node, and select Types. The Types view displays.


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 17.<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 132 and “Workflows” on page 138.<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 for use in <strong>MKS</strong> <strong>Integrity</strong><br />

copy a type<br />

reposition, or change the order of presentation for, a type in <strong>MKS</strong> <strong>Integrity</strong><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 />

Access to workflow functionality occurs in the Workflow view, which is contained in the Edit<br />

Type dialog box.<br />

83


Chapter 4: Workflow Management<br />

Creating Types<br />

84<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 93.<br />

To create a type in the GUI<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<br />

See “Assigning Type Administrator” on page 93.<br />

Attributes<br />

See “Configuring Type Attributes” on page 87.<br />

Properties<br />

See “Using Type Properties” on page 224.


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 />

Item Editability<br />

See “Setting Item Editability for Types” on page 95.<br />

Field Relationships<br />

See “Managing Field Relationships” on page 132.<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 />

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 />

NOTE The Overrides for Fields and Overrides for States nodes are<br />

type 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 97.<br />

Overrides for Fields and Overrides for States<br />

See “Setting Type Overrides” on page 97.<br />

85


Chapter 4: Workflow Management<br />

86<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<br />

<strong>MKS</strong> <strong>Integrity</strong> uses. Use the Move Up or Move Down buttons to change the position<br />

of the new type.<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.<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 101. If there are no fields defined for your installation, see “Creating<br />

Fields” on page 106.<br />

Workflow<br />

Design the workflow for the type. For more information, see “Workflows” on<br />

page 138.<br />

Presentations<br />

Customize the item presentation using the presentation template designer. For more<br />

information, see “Customizing Item Presentation” on page 170.<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:


Types<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, Query, Column Set.<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 />

From the Create Type or Edit Type dialog box (see “Creating Types” on page 84 or “Editing<br />

Types” on page 90), in the tree pane, select Attributes. The Attributes view displays.<br />

87


Chapter 4: Workflow Management<br />

88<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 “To set possible values for a phase data type” on<br />

page 120.<br />

Time Tracking allows one or more users to allocate time spent working on items of this<br />

type. When enabled, a Time Entries tab displays in the Edit Item and Item Detail views.<br />

You can use time entries to develop metrics (in the form of queries, charts, and reports)<br />

that measure the amount of effort spent on projects.<br />

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 />

Items of this type back Projects enables the type to back a project, allowing you to create<br />

a link between an item of this type and a project in the Project field. Backing a project<br />

with an item allows you to link the current project to a specific item that stores project<br />

metadata and metrics. For more information, see “Managing Project Metadata” on<br />

page 237.<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 Items of this type back Projects option, creating items of this<br />

type and linking them to projects is useful only to certain users. You may want to<br />

prevent most users from being able to create items of this type, for example, you<br />

can allow only users in the ProjectManagers group to create Project items. To<br />

restrict type visibility, see “Setting Type Visibility” on page 96.


Types<br />

Items of this type may have their tree copied allows items of this type and all related<br />

items within the hierarchy to be copied. Copy tree is disabled by default and is available<br />

primarily for the use of <strong>MKS</strong> solution templates.<br />

When this option is selected, the Copy Tree Rule button is enabled. Selecting this button<br />

displays the Edit Copy Tree Rule dialog box, which closely resembles the Item Editability<br />

dialog box.<br />

To learn more about item editability, see “Setting Item Editability for Types” on page 95.<br />

To learn more about rules, see “Defining Rules” on page 41.<br />

Items of this type may be branched allows items of this type to be branched by users who<br />

have applicable project visibility based on the branching rules you set up for item types.<br />

A branch is an identical copy of the original item and is added to the project history<br />

based on a current 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> interface after an item is branched, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 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 Branch Rule button is enabled. Selecting this button<br />

displays the Edit Branch Rule dialog box, which closely resembles the Item Editability<br />

dialog box. This rule allows you to define the rules for the branching specific item types<br />

for users and user groups.<br />

To learn more about item editability, see “Setting Item Editability for Types” on page 95.<br />

To learn more about rules, see “Defining Rules” on page 41.<br />

Items of this type 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> interface after an<br />

item is labelled, see <strong>MKS</strong> <strong>Integrity</strong> 2007 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 Add Label Rule and Delete Label Rule 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 page 95.<br />

To learn more about rules, see “Defining Rules” on page 41.<br />

89


Chapter 4: Workflow Management<br />

Editing Types<br />

90<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.<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 />

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 93.<br />

Attributes, see “To create a type in the GUI” on page 84.<br />

Properties, see “Using Type Properties” on page 224.<br />

Change Packages, see “To create a type in the GUI” on page 84.<br />

Item Editability, see “Setting Item Editability for Types” on page 95.<br />

Field Relationships, see “Managing Field Relationships” on page 132.<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 97.<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 138.<br />

Presentations, see “Customizing Item Presentation” on page 170.<br />

References, see “To create a type in the GUI” on page 84.<br />

History, see “Viewing <strong>Administration</strong> History” on page 46<br />

4 To save your changes, click OK.


Copying Types<br />

Viewing Types<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 />

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 93.<br />

Attributes, see “To create a type in the GUI” on page 84.<br />

Properties, see “Using Type Properties” on page 224.<br />

Change Packages, see “To create a type in the GUI” on page 84.<br />

Item Editability, see “Setting Item Editability for Types” on page 95.<br />

Field Relationships, see “Managing Field Relationships” on page 132.<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 97.<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 138.<br />

Presentations, see “Customizing Item Presentation” on page 170.<br />

References, “To create a type in the GUI” on page 84<br />

History, see “Viewing <strong>Administration</strong> History” on page 46.<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 />

Types<br />

91


Chapter 4: Workflow Management<br />

Deleting Types<br />

92<br />

To view a type in the GUI<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 93.<br />

Attributes, see “To create a type in the GUI” on page 84.<br />

Properties, see “Using Type Properties” on page 224.<br />

Change Packages, see “To create a type in the GUI” on page 84.<br />

Item Editability, see “Setting Item Editability for Types” on page 95.<br />

Field Relationships, see “Managing Field Relationships” on page 132.<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 97.<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 138.<br />

Presentations, see “Customizing Item Presentation” on page 170.<br />

References, “To create a type in the GUI” on page 84<br />

History, see “Viewing <strong>Administration</strong> History” on page 46.<br />

4 When you are finished viewing the information, click Close.<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 />

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.


Moving Types<br />

3 To confirm the deletion, click Yes.<br />

NOTE You can delete a type only if it has not appeared in your history, that is, if no<br />

one has created an item of that type.<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 />

Types<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.<br />

3 Click Move Up or Move Down as required.<br />

4 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.<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> 2007 Installation and Configuration <strong>Guide</strong>.<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> 2007<br />

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

93


Chapter 4: Workflow Management<br />

94<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 and view custom presentation templates.<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 and delete custom presentation<br />

templates.<br />

Example<br />

Edit field or states that reference type assigned<br />

to another administrator.<br />

Delete states that reference type assigned to<br />

another administrator,<br />

Delete a type.<br />

Note: Fields cannot be deleted.<br />

Edit users, groups, dynamic groups, projects, or<br />

triggers.<br />

Create/import or delete users, groups, dynamic<br />

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 />

Type Fields Referenced<br />

Feature Date<br />

Description<br />

ReleaseID<br />

Defect Date<br />

Description<br />

Priority<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.


Types<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 />

1 From the Types view, select the type you want to create a type administrator for.<br />

2 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.<br />

3 Click the Administrators node.<br />

To assign a specified user or group as a type administrator, see “Filtering Data” on<br />

page 17. You can assign more than one user or group as a type administrator.<br />

4 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 Item Editability for Types<br />

You can define the conditions that give users permission to edit items of a specific type.<br />

95


Chapter 4: Workflow Management<br />

96<br />

To define item editability for a type in the GUI<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 91, or “Editing Types” on page 90.) 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 41. For information on using the data filter, see “Filtering Data” on page 17.<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<br />

or modified by another group. All <strong>MKS</strong> <strong>Integrity</strong> items and e-mail notification are subject to<br />

type visibility rules.<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.


Types<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> 2007<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 />

Ranges<br />

Phases<br />

Display Pattern<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 124.<br />

97


Chapter 4: Workflow Management<br />

98<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 127.<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 129.<br />

To set a type override for fields<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.<br />

Column headers display the field attributes that are available for override, including<br />

Description, Relevance, Editability, Ranges, Display Pattern, and Phases.<br />

You can set the following overrides:<br />

To set an override for a field, highlight the field in the list, and click Edit. The Edit<br />

Field 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<br />

the global value. A checkmark in the tab indicates an override.<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 27.<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 “To set possible values for a<br />

range data type” on page 122.


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 “To set possible values for a phase data type” on<br />

page 120.<br />

Types<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 124.<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 124.<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 127.<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 To view the existing sequence of fields referenced by this type, click the<br />

Position tab. The list of fields displays.<br />

To view the administrative changes made to fields referenced by this type, click the<br />

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 />

4 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 <strong>MKS</strong> Source change packages;<br />

however, you could set an override that allowed open <strong>MKS</strong> Source change packages in the<br />

Build state only when referenced by the Web Development type.<br />

99


Chapter 4: Workflow Management<br />

100<br />

For more information on state attributes, see “Creating States” on page 78.<br />

To set a type override for states<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 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 />

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 by 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> 2007 User <strong>Guide</strong>.<br />

In <strong>MKS</strong> Source, state-based capabilities allow change packages that are under review or<br />

change packages that are open to exist while an item is in a given state. For more


information on the change package review and approval process, see the <strong>MKS</strong> Source<br />

2007 User <strong>Guide</strong>.<br />

Types<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 <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> Source, select<br />

<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 />

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 />

101


Chapter 4: Workflow Management<br />

Fields<br />

102<br />

use queries to search on fields that are not visible to them<br />

IMPORTANT In the Create Query and Column Sets dialog boxes, users are able to see<br />

the field name. In the Create Query dialog box, users are able to see all possible<br />

values within a given field, if that field is a picklist.<br />

Standard fields (Type, ID, Created By, Created Date, Modified By, Modified Date) are not<br />

subject to field visibility rules and always visible to users.<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 124.<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. 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 105.<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 131).<br />

NOTE Certain standard fields are always visible and cannot be edited. For these<br />

standard fields, only the Description and Position panels display. The standard<br />

fields are: Type, ID, Modified By, Created By, Modified Date, Created Date, Signed<br />

By, and Signature Comment. You can provide a description for each standard field.


Some fields can be edited by users, while others can only be set by <strong>MKS</strong> <strong>Integrity</strong>. Default<br />

<strong>MKS</strong> <strong>Integrity</strong> fields that you can include in your workflow are as follows:<br />

Field Name Editable? Description<br />

Type No Item type that pertains to particular workflow.<br />

ID No Unique ID assigned to each item upon creation.<br />

Created By No User who created item.<br />

Created Date No Date item was created.<br />

Modified By No User who last modified item.<br />

Modified Date No Date item was last changed.<br />

Summary Yes Brief summary of item, up to 250 alphanumeric<br />

characters.<br />

State Yes Step or stage of workflow process.<br />

Assigned User Yes User responsible for item.<br />

Assigned Group Yes Group responsible for item.<br />

Project Yes Project item belongs to. Projects are groupings of related<br />

items.<br />

Forward Relationships Yes Related child items. For more information on item<br />

relationships, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 User <strong>Guide</strong>.<br />

Backward Relationships Yes Related parent items. For more information on item<br />

relationships, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 User <strong>Guide</strong>.<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 218.<br />

Signature Comment No Any comments entered as part of electronic signature. For<br />

more information, see “Setting Up Electronic Signatures”<br />

on page 218.<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> 2007 User <strong>Guide</strong>.<br />

Key Considerations<br />

Fields<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 101.<br />

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 />

103


Chapter 4: Workflow Management<br />

Working in Fields View<br />

104<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage <strong>MKS</strong> <strong>Integrity</strong> fields from<br />

one convenient location. Managing fields is carried out through the Fields view.<br />

To open the Fields view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

<strong>MKS</strong> <strong>Integrity</strong> 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 17.<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 101.


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 />

Available Menu Commands for Fields<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 for use in <strong>MKS</strong> <strong>Integrity</strong><br />

reposition, or change the order of presentation for, a field in <strong>MKS</strong> <strong>Integrity</strong><br />

delete an existing field<br />

Fields<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 />

105


Chapter 4: Workflow Management<br />

Creating Fields<br />

106<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 170.<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.<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 />

To create a field in the GUI<br />

1 From the Fields view (see “Fields” on page 102), select Field > Create. The Create Field<br />

dialog box displays.<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 105.<br />

3 On the Values panel, from the Data Type list select a data type for the field. For details of<br />

the data type options, see “Setting Possible Values for Fields” on page 107.<br />

If you create a field with an incorrect type, you cannot delete it, or change its type or<br />

definition. You can either rename it or make it invisible for all types.<br />

When you select a data type, the values the field can accept display below. For more<br />

information, see “Setting Possible Values for Fields” on page 107.<br />

<strong>MKS</strong> <strong>Integrity</strong> can also perform calculations between specific field types, storing the<br />

result as a read-only value in a computed field. To create a computed field, see “Creating<br />

Computed Fields” on page 284.


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.<br />

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 124.<br />

To set field relevance, click the Relevance tab. For more information, see “Setting<br />

Field Relevance” on page 124.<br />

To set field editability, click the Editability tab. For more information, see “Setting<br />

Field Editability” on page 127.<br />

To set field rules, click the Rules tab. For more information, see “Setting Field Rules”<br />

on page 128.<br />

5 When you are finished setting the field’s properties, click OK.<br />

Setting Possible Values for Fields<br />

The settings in the Values panel vary according to the data type you have selected.<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 />

To set possible values for an attachment data type<br />

Use the attachment data type for including attachments, such as design documents.<br />

NOTE Attachment fields cannot be specified in any type of rule.<br />

1 From the Create Field dialog box, select Attachment from the Data Type list. The<br />

attachment data type settings display.<br />

2 In the Display Style field, specify whether to display the attachment field in table format<br />

or comma separated values (CSV) format. The table format allows you to sort the<br />

attachments and manipulate the columns that display in the table. The CSV format<br />

displays comma separated links to the attachments.<br />

3 From the Display Rows field, specify the number of rows to display for the attachment<br />

field when editing the item.<br />

4 Click OK to save your changes.<br />

107


Chapter 4: Workflow Management<br />

108<br />

To set possible values for an integer data type<br />

Use the integer data type for simple, countable items, such as call tracking numbers.<br />

1 From the Create Field dialog box, select Integer from the Data Type list. The integer<br />

data type settings display.<br />

2 If you want to specify default, minimum, and maximum values, select one or more of the<br />

Set Default Value, Set Minimum Value, and Set Maximum Value options, and type a<br />

number in the appropriate field.<br />

NOTE You can specify a maximum of nine digits.<br />

3 To show the field’s current value graphically as a proportion of its maximum value,<br />

select the Display as Progress Bar option.<br />

4 To configure the field as a computed field, select the Computation Values option, and<br />

configure the Computation Definition, Store to History Frequency, and How to Run<br />

Computations fields. For information on configuring these fields, see “Creating<br />

Computed Fields” on page 284.<br />

NOTE Selecting the Computation Values option disables the Set Default Value, Set<br />

Minimum Value, and Set Maximum Value options.<br />

5 To assign a format to integer field values, select or type a Display Pattern. For more<br />

information on, see “Display Patterns” on page 27.<br />

6 Click OK to save your changes.<br />

To set possible values for an item backed picklist data type<br />

Use the item backed picklist (IBPL) data type to share information in one or more items with<br />

other items. By creating an item type that acts as a table of information (known as the backing<br />

item type), then creating items of that type with a short text field containing the information<br />

you want to share, an IBPL field in another item type can display the values of the short text<br />

field as pick text. Whenever a short text field is updated in a backing item, all items with IBPL<br />

fields that reference the short text field value update to reflect the new value.<br />

For example, if you create a Department item type with a Manager field, then create several<br />

Department items to record the different departments and managers in your organization,<br />

Manager field values in all Department items appear as pick text in the Department Manager<br />

IBPL field in the Defect item type. If a Department item’s Manager field has a value of Fred<br />

and it changes to Ted, all Defect items with a value of Fred in the Department Manager field<br />

automatically update to display Ted.


NOTE<br />

The name of the IBPL field cannot be the same as the referenced field in the<br />

backing item type.<br />

Non-computed short text fields and computed short text fields can be referenced<br />

in an IBPL field.<br />

1 From the Create Field dialog box, select Item Backed Picklist from the Data Type<br />

list. The IBPL data type settings display.<br />

2 From the Backing Type list, select the item type containing the short text field you want<br />

to reference.<br />

3 From the Field Containing Pick Text list, select the short text field in the backing item<br />

type that you want to use as pick text. For example, if you select the Manager field and<br />

James Riley, Sherry Robertson, and Dan Evans are field values in some of the<br />

backing items, those names display as pick text in the IBPL field.<br />

Fields<br />

To populate the IBPL with backing items in specific states, select one or more states from<br />

the Active States list. Populating an IBPLwith backing items in specific states essentially<br />

allows you to deactivate entries in an IBPL. For example, if an Employee item contains<br />

an Active and Inactive state, and you select Active as the Active States, only<br />

Employee items in a state of Active display pick text entries in the IBPL.<br />

4 To allow multiple values in the IBPL, enable Allow Multiple Values.<br />

5 Click OK to save your changes.<br />

To set possible values for a field value attribute data type<br />

Building upon the concept of an item backed picklist field (IBPL), a field value attribute<br />

(FVA) data type allows you to share field information in an IBPL field’s backing item with<br />

other items, displaying the field information in the FVA field (for more information on IBPLs,<br />

see “To set possible values for an item backed picklist data type” on page 108). An FVA data<br />

type is useful for maintaining field information in one item and sharing the field information<br />

with other items.<br />

For example, if a Defect item has an IBPL field named Department Manager and a value of<br />

Jim, the FVA field named Extension to Call displays x626 because the backing Department<br />

item displays Jim in the Manager field and x626 in the Phone Extension field (the backing<br />

field for the FVA field). If the Extension to Call field value changes, the Phone Extension field<br />

value updates to reflect the new field value.<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 />

You cannot create an FVA field backed by a relationship field.<br />

Users cannot edit an FVA field if it has no backing relationship.<br />

109


Chapter 4: Workflow Management<br />

110<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 />

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 visible attachment fields<br />

visible to the user in the GUI or Web interface. Fom the CLI, the user must know which<br />

attachment fields to use with rich content fields.<br />

1 From the Create Field dialog box, select Field Value Attribute from the Data Type<br />

list. The FVA data type settings display.<br />

2 From the Field list, select the field in the backing item type whose value you want to<br />

display in the FVA field. The field must be visible in the IBPL field’s backing item type.<br />

3 Click OK to save your changes.<br />

To set possible values for a pick data type<br />

The pick data type specifies items that should display in a drop-down list, such as predefined<br />

product codes. You can also choose an option that allows users to select multiple picklist<br />

values.<br />

IMPORTANT Once you use a picklist value, that value cannot be used again, even if<br />

you delete the pick field that is associated with it. Similarly, you cannot change the<br />

picklist value once you have set it.<br />

To allow users to select multiple picklist values at one time, choose the Allow<br />

Multiple Values option.<br />

1 From the Create Field dialog box, select Pick from the Data Type list. The settings for the<br />

picklist data type display.<br />

2 To allow the option for multiple values in a given pick field, select the Allow Multiple<br />

Values option. Choosing multiple values allows users to select more than one item from<br />

the pick field. For example, if three company offices are defined in <strong>MKS</strong> <strong>Integrity</strong>, users<br />

could select one, two, or all three offices when submitting an item or creating a query.<br />

To set a default value for the pick field, select the Set Default Value option, and type the<br />

default value in the text box. The default value can be any text string.<br />

To add items to the picklist, click Add. The Add Pick dialog box displays.<br />

Use the Label and Value fields to assign a text string and a number to the picklist item.<br />

Using the Active option, specify whether a picklist value is considered active or inactive<br />

in <strong>MKS</strong> <strong>Integrity</strong>. By default, the picklist value is active. To deactivate the picklist value,<br />

clear the Active check box. For more information on deactivating picklist values, see<br />

“Deactivating Picklist Values” on page 130.<br />

To assign an icon image to the item, select Use Custom Image, and browse for the image<br />

file. To have no image associated with the type, select No Image. If you choose to use


your own custom icon image, the image must be in GIF or JPEG format, and no larger<br />

than 24 (width) by 16 (height) pixels.<br />

3 Click OK to close the Add Pick dialog box. The new item displays in the Picks list. By<br />

default, picklist items are sorted by picklist order.<br />

Fields<br />

To edit an item, select it from the Picks list, and click Edit. Change the item’s properties,<br />

and click OK.<br />

To change the order of an item in the list, select it, and click Move Up or Move Down. To<br />

sort the items in the list by alphabetical label, click Sort Alphabetically. To remove one or<br />

more items from the list that have not been saved yet, select them, and click Remove.<br />

4 Once you have added all of the desired items to the picklist, you can decide whether to<br />

set a default value. To do this, select the Set Default Value option and an item from the<br />

list.<br />

5 Click OK to save your changes.<br />

To set possible values for a floating point data type<br />

Use the floating point data type for numbers with decimals, such as performance data.<br />

1 From the Create Field dialog box, select Floating Point from the Data Type list. The<br />

floating point data type settings display.<br />

2 If you want to specify default, minimum, and maximum values, select one or more of the<br />

Set Default Value, Set Minimum Value, and Set Maximum Value options and type a<br />

number in the appropriate field.<br />

NOTE<br />

When editing a floating point field to set the default, minimum, or maximum<br />

value, you can enter a negative exponent using the E number notation, for<br />

example, -123.1E-3.<br />

You can specify a maximum of 15 digits, though when edited in the Web<br />

interface only 12 digits are simultaneously visible.<br />

3 To configure the field as a computed field, select the Computation Values option, and<br />

configure the Computation Definition, Store to History Frequency, and How to Run<br />

Computations fields. For information on configuring these fields, see “Creating<br />

Computed Fields” on page 284.<br />

NOTE Selecting the Computation Values option disables the Set Default Value, Set<br />

Minimum Value, and Set Maximum Value options.<br />

4 To assign a format to floating point field values, select or type a Display Pattern. For<br />

more information, see “Display Patterns” on page 27.<br />

5 Click OK to save your changes.<br />

111


Chapter 4: Workflow Management<br />

112<br />

To set possible values for a logical data type<br />

Use the logical data type for Boolean items (ones that are either true or false), such as whether<br />

an item has been tested.<br />

1 From the Create Field dialog box, select Logical from the Data Type list. The logical data<br />

type settings display.<br />

2 If you want to specify a default value, select the Set Default Value option, and set it to<br />

either true or false.<br />

3 To configure the field as a computed field, select the Computation Values option and<br />

configure the Computation Definition, Store to History Frequency, and How to Run<br />

Computations fields. For information on configuring these fields, see “Creating<br />

Computed Fields” on page 284.<br />

NOTE Selecting the Computation Values option disables the Set Default Value<br />

option.<br />

4 Click OK to save your changes.<br />

To set possible values for a date data type<br />

Use the date data type for dates, such as when a defect was fixed. Optionally, you can include<br />

the time.<br />

1 From the Create Field dialog box, select Date from the Data Type list. The date data type<br />

settings display.<br />

2 To include the time, select the Include time option. Time is specified from 00:00:00 to<br />

23:59:59 inclusive in 24 hour format; however, <strong>MKS</strong> <strong>Integrity</strong> displays the time in<br />

12 hour format. 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<br />

field to display the date only.<br />

Displayed date fields do not change based on the time zone that a user is<br />

operating in; however, displayed date/time fields vary based on the time zone<br />

that a user is operating in.<br />

3 To specify default, minimum, and maximum values, select one or more of the Set Default<br />

Value, Set Minimum Value, and Set Maximum Value options, and click Change. The<br />

Specify Date or Time dialog box displays.<br />

NOTE Selecting the Computation Values option disables the Set Default Value, Set<br />

Minimum Value, and Set Maximum Value options.<br />

4 Select one of the following:


A date from the calendar. If the Show Time option is enabled, include a time from<br />

the calendar.<br />

today displays the current date and a time of 00:00:00 (midnight) when the item is<br />

submitted. This option displays only if the Include Time option is disabled.<br />

now displays the current date and time when the item is submitted. This option<br />

displays only if the Include Time option is enabled.<br />

none specifies an empty value for the date field.<br />

5 Click OK. The date data type settings display.<br />

6 To configure the field as a computed field, select the Computation Values option and<br />

configure the Computation Definition, Store to History Frequency, and How to Run<br />

Computations fields. For information on configuring these fields, see “Creating<br />

Computed Fields” on page 284.<br />

7 Click OK to save your changes.<br />

To set possible values for a short text data type<br />

Fields<br />

Use the short text data type for any miscellaneous information, such as a comment field. This<br />

data type allows you to define suggestions.<br />

1 From the Create Field dialog box, select Short Text from the Data Type list. The short<br />

text data type settings display.<br />

2 To set a default value for the field, select the Set Default Value option, and type a default<br />

value.<br />

3 In the Maximum Length field, enter a maximum length for the field.<br />

When editing the maximum number of characters for a short text field, the following<br />

applies:<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 />

113


Chapter 4: Workflow Management<br />

114<br />

CAUTION Increasing the maximum number of characters for a field contributes to<br />

the portion of the maximum row width used in the database table. Ensure that the<br />

changes you make are sustainable for future table data in your database. For more<br />

information, consult the documentation provided by the vendor for the database<br />

used.<br />

This value is used for both the <strong>MKS</strong> <strong>Integrity</strong> GUI 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 />

4 To add a suggestion, click Add. The Add Suggestion dialog box displays.<br />

The short text data type allows you to define suggested values for the user.<br />

5 Type the suggestion text, and click OK. The new suggestion displays in the Suggestions<br />

list.<br />

6 To edit a suggestion, select it in the Suggestions list, and click Edit.<br />

7 To change the order of a suggestion in the list, select it, and click Move Up or Move Down.<br />

8 To remove one or more items from the list, select them, and click Remove. To remove all<br />

items, click Remove All.<br />

9 To configure the field as a computed field, select the Computation Values option and<br />

configure the Computation Definition, Store to History Frequency, and How to Run<br />

Computations fields. For information on configuring these fields, see “Creating<br />

Computed Fields” on page 284.<br />

NOTE Selecting the Computation Values option disables the Set Default Value<br />

option.<br />

10 Click OK to save your changes.<br />

To set possible values for a long text data type<br />

Use the long text data type for any miscellaneous information. This data type includes an<br />

option for displaying rows.<br />

1 From the Create Field dialog box, select Long Text from the Data Type list. The long text<br />

data type settings display.<br />

2 To set a default value for the field, select the Set Default Value option, and type a default<br />

value. This can be any text string.<br />

NOTE If you enable the Rich Content option in step 6, a toolbar displays, allowing<br />

you to apply rich content. For more information on applying rich content, see the<br />

<strong>MKS</strong> <strong>Integrity</strong> 2007 User <strong>Guide</strong>.


Fields<br />

3 In the Maximum Length field, enter the maximum number of characters for the field. The<br />

maximum character length depends on your database type and setup.<br />

When editing the maximum number of characters for a long text field, the following<br />

applies:<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<br />

the portion of the maximum row width used in the database table. Ensure that the<br />

changes you make are sustainable for future table data in your database. For more<br />

information, consult the documentation provided by the vendor for the database<br />

used.<br />

4 In the Display Rows field, specify how many rows should display in the Item Details.<br />

The maximum is 80 rows.<br />

5 Setting an option in the Logging field allows you to specify if the field logs user entries.<br />

Logging text fields limit the user to making new entries in the field and, therefore, do not<br />

permit the user to edit data that was entered previous to the last time the item was<br />

saved.<br />

Each time the user saves an item after making an entry in a logging text field, the user ID,<br />

entry date, and entry time are logged and then displayed as a stamp above the entry. The<br />

stamp uses approximately 30 characters per entry and must be taken into account when<br />

setting the maximum field length.<br />

The following are the available options for the Logging field:<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.<br />

You may change the Logging field option when editing.<br />

115


Chapter 4: Workflow Management<br />

116<br />

6 Long text fields support rich content. Rich content enhances the display of text in long<br />

text fields by adding formatted text, tables, background colors, images, and hyperlinks.<br />

To configure a long text field as a rich content field, select Rich Content. This option is<br />

enabled by default and does not support logging text fields.<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 attributes,<br />

you can define screen and printer Cascading Style Sheets (CSS) that ensure a consistent<br />

look when viewing and printing rich content field data in different Web browsers. For<br />

more information, see “Customizing Rich Content Fields” on page 199.<br />

7 Images inserted into a rich content field using an attachment field are retrieved from a<br />

specified attachment field in the item. Select the Default Attachment Field that images are<br />

retrieved from. The default is the default Attachment field.<br />

8 Click OK to save your changes.<br />

To set possible values for a user data type<br />

The user data type specifies users that display in a drop-down list, such as users in a specific<br />

group.<br />

1 From the Create Field dialog box, select User from the Data Type list. The user data type<br />

settings display.<br />

2 To allow multiple users to be selected in the user list, enable Allow Multiple Values.<br />

Allowing multiple values for a user field facilitates group development. For example, if<br />

you allowed multiple values for the Assigned User field, you could assign multiple users<br />

to an item, enabling them to work in parallel on the same item.<br />

3 To set a default value for the user list, enable Set Default Value. Then click the list, and<br />

select a user from the selection panel that displays. If the field allows multiple values,<br />

you can select multiple default values. For information on selecting users, see “Filtering<br />

Data” on page 17.<br />

NOTE If you change a multi-valued field to a single-valued field and multiple<br />

default values are selected, all selections are cleared except the first selection in the<br />

list.<br />

4 Click OK to save your changes.<br />

NOTE The symbolic -me- is not available for custom user fields.


To set possible values for a group data type<br />

Fields<br />

The group data type specifies groups that should display in a drop-down list, such as groups<br />

assigned to a specific project.<br />

1 From the Create Field dialog box, select Group from the Data Type list. The group data<br />

type settings display.<br />

2 To allow multiple groups to be selected in the user list, enable Allow Multiple Values.<br />

Allowing multiple values for a group field facilitates group development. For example,<br />

if you allowed multiple values for the Assigned Group field, you could assign multiple<br />

groups to an item, enabling them to work in parallel on the same item.<br />

3 To set a default value for the group list, enable Set Default Value. Then select a group<br />

from the selection panel that displays. If the field allows multiple values, you can select<br />

multiple default values. For information on selecting users, see “Filtering Data” on<br />

page 17.<br />

NOTE If you change a multi-valued field to a single-valued field, and multiple<br />

default values are selected, all selections are cleared except the first selection in the<br />

list.<br />

4 Click OK to save your changes.<br />

To set possible values for a relationship data type<br />

1 From the Create Field dialog box, select Relationship from the Data Type list. The<br />

relationship data type settings display.<br />

117


Chapter 4: Workflow Management<br />

118<br />

2 Under Types, select an item type that is to use the relationship field. The Available Types<br />

list is populated.<br />

From the Available Types list, select the item types that can be linked to using the<br />

relationship field, and add them to the Allowed Types. For example, to allow the field to<br />

be used to create relationships between documentation items and bugs, select Docs<br />

under Types and add Bugs to the Allowed Types. Then select Bugs under Types, and add<br />

Docs to the Allowed Types.<br />

Repeat the selection process for additional item types.<br />

If you want the system to prevent relationship loops from occurring, enable Cycle<br />

Detection. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 User <strong>Guide</strong>.<br />

3 On the Forward and Backward tabs, define the fields used for forward and backward<br />

relationships. Forward relationships are relationships where the related item is a child of<br />

the original item. Backward relationships are relationship where the related item is a<br />

parent of the original item. For example, if you are defining a relationship field to track<br />

defects related to an item, the forward relationship field could be named Defects and<br />

the backward relationship field could be named Defects Of. You can create a<br />

relationship from either the child or the parent, and the corresponding field in the<br />

related item is updated automatically.


4 Specify the following information:<br />

Fields<br />

In the Name field, type the name of the relationship field. The name you enter is also<br />

used for the backward relationship field and prefixed with the word Backward. You<br />

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.<br />

If you want the relationship field to contain links to multiple items, enable Multi<br />

Valued. For example, a field used to track defects on an item would need to allow<br />

multiple linked items; a field used to identify the feature being documented for a<br />

documentation item would only need to allow a single linked item.<br />

In the Display Style field, specify if to display the relationship field in table format or<br />

in a comma separated values (CSV) format. The table format allows you to sort the<br />

linked items and manipulate the columns that display in the table. The CSV format<br />

only displays the IDs and relationship flags of the linked items.<br />

In the Display Rows field, specify the number of rows to display for the relationship<br />

field when editing the item.<br />

In the Display Location field, specify whether the relationship field is displayed on<br />

the Fields tab or the Relationships tab of the Item Details view.<br />

5 Relationship flags are used to indicate when a related item has changed. To add<br />

relationship flags for the field:<br />

a) Click Add. The Add Relationship Flag dialog box displays.<br />

NOTE<br />

A user must be licensed for <strong>MKS</strong> Source to be able to use relationship flags in an<br />

item.<br />

Relationship flags defined for relationship fields can be set automatically through<br />

a field rule. For more information on defining rules for fields, see “Setting Field<br />

Rules” on page 128.<br />

b) In the Name field, type the name for the relationship flag.<br />

c) In the Character field, type a single character to display when the flag is set on a<br />

relationship field using the CSV display style or when the relationship is viewed<br />

through the CLI. You cannot use numbers as relationship flag characters.<br />

d) Specify the following:<br />

Click Select to locate the image you want to use for this type of relationship flag<br />

in a relationship field using a table format. The image must be in a JPEG or GIF<br />

format and no larger than 24 by 16 pixels.<br />

In the Enabled field, specify whether you are using this relationship flag.<br />

119


Chapter 4: Workflow Management<br />

120<br />

To finish adding the relationship flag, click OK on the Add Relationship Flag dialog<br />

box.<br />

6 To save your changes, click OK on the Create Field dialog box.<br />

To set possible values for a phase data type<br />

The phase data type allows you to specify categorized groups of states in a workflow,<br />

essentially creating states (represented by phases) and sub-states (represented by states) for<br />

an item type. Phases are useful for organizing an item type’s workflow if it contains a large<br />

number of states and provide users with a broad overview of an item’s status independent of<br />

the 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 />

NOTE You can create any number of phases for a phase field. States not grouped<br />

into a phase are referred to as out of phase states. When an item is in an out of phase<br />

state, the phase field displays Out of Phase.<br />

1 From the Create Field dialog box, select Phase from the Data Type list. The phase data<br />

type settings display.<br />

2 To add a phase to the Phases list, click Add. The Add Phase dialog box displays.<br />

3 Use the Label field to assign a text string to the phase.<br />

4 Under Available States, select the states that are included in the phase, and add them to<br />

the Phase States.<br />

IMPORTANT No two phases can use the same state.<br />

5 To assign an icon image to the phase, select Use Custom Image and browse for the image<br />

file. To have no image associated with the phase, select No Image. If you choose to use<br />

your own custom icon image, the image must be in GIF or JPEG format, and no larger<br />

than 24 (width) by 16 (height) pixels.<br />

6 Click OK to close the Add Phase dialog box. The new phase displays in the Phases list.<br />

7 To edit a phase, select it from the Phases list, and click Edit.


8 Change the phase’s properties, and click OK.<br />

NOTE You cannot edit the Out of Phase phase. This phase identifies the states<br />

that are not included in any user defined phase.<br />

9 To change the order of a phase in the list, select it, and click Move Up or Move Down. To<br />

remove one or more phases from the list, select them, and click Remove. To remove all<br />

phases, click Remove All.<br />

10 Click OK to save your changes.<br />

To set possible values for a query backed relationship data type<br />

Fields<br />

The query backed relationship data type allows you to specify a named query that displays<br />

items meeting the query criteria as a read-only relationships field. This field extends the<br />

concept of the relationship field by displaying a large number of related items. For example,<br />

the Features field in a Project item would display all the Feature items that are returned by<br />

the Release_5_Features query.<br />

1 From the Create Field dialog box, select Query Backed Relationship from the Data<br />

Type list. The query backed relationship data type settings display.<br />

2 From the Query list, select a query. Only administrator queries appear in the list.<br />

3 The Field Correlation table allows you to return even more specific query results by<br />

correlating a field contained in the type containing the query backed relationship field<br />

and a field in the items returned by the query. For example, if you create a query backed<br />

relationship field called Defects for the Feature type, and select Project as the Source<br />

Field and Project as the Target Field, the Defects field displays all Defect items that<br />

121


Chapter 4: Workflow Management<br />

122<br />

have the same project as the one specified in the Feature type’s Project field. This option<br />

is not mandatory; however, if it is not specified, the list of relationships returned does<br />

not change with different items.<br />

4 In the Display Style field, specify whether the query backed relationship field displays in<br />

table format or in a comma separated values (CSV) format. The table format allows you<br />

to sort the items and manipulate the columns that display in the table. The CSV format<br />

only displays the IDs of the items.<br />

5 In the Display Rows field, specify the number of rows to display for the query backed<br />

relationship field when editing the item. You can specify from five to 80 rows.<br />

6 Click OK to save your changes.<br />

To set possible values for a range data type<br />

The range data type allows you to categorize numeric value ranges in an associated numeric<br />

field (integer or floating point). A range field is a computed picklist field associated with a<br />

numeric field: range limits and the associated field are stored in the computation expression<br />

and the range category name and icon are stored in the database as picklist items. When a<br />

value is entered in the associated numeric field, the appropriate range category displays in<br />

the range field. Range fields are useful for defining thresholds for numeric data and<br />

providing a broad overview of that data. For example, if a Project type has an integer field<br />

called Critical Defects that displays the number of Defect items marked Critical, you could<br />

add a range field called Defect Status that displays one of the following range categories<br />

based on the number of items in the Critical Defects field:<br />

Golden ("Critical Defects" = 0)<br />

Acceptable (1


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 value limits can be overridden on a per type basis; however, you cannot<br />

override range category names and icons.<br />

1 From the Create Field dialog box, select Range from the Data Type list. The range data<br />

type settings display.<br />

2 From the Associated Field list, select a numeric field to associate with the range field. A<br />

numeric field must be associated with the range field you create.<br />

NOTE You can associate a numeric field with any number of range fields.<br />

3 To add a range to the Ranges list, click Add. The Add Range dialog box displays.<br />

Fields<br />

4 Use the Label field to assign a text string to the range category. Range labels can be up to<br />

100 characters.<br />

5 In the Value field, use the From and To lists to specify values for the lower and upper<br />

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 point<br />

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 />

6 To assign an icon image to the item, select Use Custom Image, and click Select to browse<br />

for the image file. To have no image associated with the type, select No Image. If you<br />

choose to use your own custom icon image, the image must be in GIF or JPEG format,<br />

and no larger than 24 (width) by 16 (height) pixels.<br />

7 Click OK to close the Add Range dialog box. The new item displays in the Ranges list.<br />

8 To edit an item, select it from the Ranges list, and click Edit.<br />

9 Change the item’s properties, and click OK.<br />

10 To change the order of an item in the list, select it, and click Move Up or Move Down. To<br />

remove one or more items from the list, select them, and click Remove. To remove all<br />

items, click Remove All.<br />

123


Chapter 4: Workflow Management<br />

124<br />

11 Click OK to save your changes.<br />

To set possible values for an SI project data type<br />

The SI project data type allows users to specify a related <strong>MKS</strong> Source project, optionally<br />

including a checkpoint revision or development path. By creating an <strong>MKS</strong> Source project<br />

field and a computed field that uses the SIMetric() external information function, you can<br />

retrieve metrics about the specified project, for example, how many lines of code are in the<br />

project. For more information on creating <strong>MKS</strong> Source project metrics, see “Using Project<br />

Metrics” on page 257. For more information on external information functions and computed<br />

fields, see “Computed Expressions” on page 269.<br />

IMPORTANT<br />

Metrics are only maintained against project checkpoints; therefore, to generate<br />

metrics users must specify a checkpoint when they specify the <strong>MKS</strong> Source<br />

project.<br />

SI project fields cannot be specified in any type of rule.<br />

To allow users to specify a related <strong>MKS</strong> Source project when creating or editing<br />

an item, you must enable and properly configure the <strong>MKS</strong> <strong>Integrity</strong> and<br />

<strong>MKS</strong> Source integration. For more information, refer to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

2007 Installation and Configuration <strong>Guide</strong>. You must restart the server for this<br />

change to take effect.<br />

1 From the Create Field dialog box, select SI Project from the Data Type list. The SI<br />

project data type settings display.<br />

2 Click OK to save your changes.<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 2007 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.


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 />

Fields<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 />

control user access to information. For more information on visibility rules, see “Setting<br />

Project Visibility” on page 230, “Setting Type Visibility” on page 96, and “Setting Field<br />

Visibility for Types” on page 101.<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 />

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 106 or “Editing Fields” on<br />

page 129. The Relevance panel displays.<br />

125


Chapter 4: Workflow Management<br />

126<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 and use them in column sets.<br />

Enabling this option replaces any existing rules with false, removing all remaining<br />

options in the panel. If you enable this option, proceed directly to the final step of this<br />

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 41.<br />

4 Under Copy, copy relevance rules from another field. Do one of the following:<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.


Click OK. The rule displays in the Relevance panel.<br />

5 Click OK to save the relevance rule(s).<br />

Setting Field Editability<br />

Fields<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 />

NOTE Editability rules are evaluated on the <strong>MKS</strong> <strong>Integrity</strong> Client’s time zone.<br />

To define field editability in the GUI<br />

NOTE Editability does not apply for fields ID, Created Date, Created By, Modified<br />

Date, Modified By, and Type. It also does not apply for phase, range, item backed<br />

picklist, query backed relationship, and computed fields.<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 106 or “Editing Fields” on<br />

page 129. The Editability panel displays.<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 />

127


Chapter 4: Workflow Management<br />

128<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, 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 41.<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.<br />

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 />

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 106 or “Editing Fields” on page 129. 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.


Editing Fields<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 />

Fields<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 />

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 106 or “Editing Fields” on<br />

page 129. The Description panel displays.<br />

2 Type a text description of the specified field.<br />

3 Click OK to save your changes.<br />

You can edit field details, including editability, relevance, description, and position.<br />

To edit a field in the GUI<br />

1 From the Fields view (see “Fields” on page 102), 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. For more information about the fields and tabbed<br />

panels in this dialog box, see “To create a field in the GUI” on page 106.<br />

129


Chapter 4: Workflow Management<br />

Viewing Fields<br />

130<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.<br />

To determine all objects that reference the field, click the References tab. For<br />

information on the contents of the tab, see “Viewing Admin Object References” on<br />

page 220.<br />

4 Click OK to save your changes.<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 />

1 From the Fields view (see “Fields” on page 102), 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 106, and “To edit a field in the GUI” on page 129.<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 />

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>.


Deleting Fields<br />

Key Considerations<br />

Fields<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 />

To deactivate a picklist value in the GUI<br />

1 From the Fields view (see “Working in Fields View” on page 104), 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 130). For a list of objects that can reference a field, see “Viewing Admin Object<br />

References” on page 220.<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 />

131


Chapter 4: Workflow Management<br />

Moving Fields<br />

132<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 132.<br />

To delete a field in the GUI<br />

1 From the Fields view (see “Working in Fields View” on page 104), select the field you<br />

want to delete.<br />

2 View the field (see “Viewing Fields” on page 130), and examine the References tab to<br />

ensure that there are no references to the field.<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 />

1 From the Fields view (see “Working in Fields View” on page 104), 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 />

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. They can be used to subset data for specific groups in your organization and<br />

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 that apply:


Fields<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 101 and “Setting Project Visibility” on page 230.<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 />

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 />

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 />

Assigned Group Assigned User and<br />

State<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>.<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 />

133


Chapter 4: Workflow Management<br />

134<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 />

In this view, you can customize the column set and sort to organize the field relationships to<br />

suit your needs. For more information on modifying column sets, see the <strong>MKS</strong> <strong>Integrity</strong> Client<br />

2007 Getting Started <strong>Guide</strong>.<br />

To open the Field Relationships view in the GUI<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 90.<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 />

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 />

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 90.<br />

2 Click Create. The Create a Field Relationship dialog box displays.


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 90.<br />

Fields<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 17.<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).<br />

6 Depending on your target field, do one of the following:<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 8.<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 17. 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 />

135


Chapter 4: Workflow Management<br />

136<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 from the active list.<br />

This selection populates the Assigned User or custom user field with all members<br />

in the specified Assigned Group or custom group in the item.<br />

Select Member Of, and the pane is populated with all the valid groups. Select a<br />

group from the active list. This selection populates the Assigned User or custom<br />

user field with all members in the specified group.<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.


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 />

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 />

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 132.<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 134.<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 />

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 />

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 132.<br />

2 Click Delete. The Delete Field Relationship dialog box confirms the operation.<br />

Fields<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 />

137


Chapter 4: Workflow Management<br />

Workflows<br />

Workflow View<br />

138<br />

Each <strong>MKS</strong> <strong>Integrity</strong> item follows a workflow, the process established by your administrator<br />

to capture and track information during your software development cycle. Each item type<br />

can have its own set of states to advance through the development cycle. For example, a<br />

change request may go through states such as submitted, work started, tested, reviewed, and<br />

closed. Items and their current states provide change management information necessary to<br />

support business 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 will use the<br />

new workflow. For more information on the Types view, see “Types” on page 82.<br />

2 Edit the selected type. For information on editing types, see “Editing Types” on page 90.<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.


Title Bar<br />

Menu Bar<br />

Tree Pane<br />

Title Bar<br />

Workflows<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 />

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 />

139


Chapter 4: Workflow Management<br />

140<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 142).<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<br />

Creating Workflow<br />

window size and location<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> 2007 Installation and Configuration <strong>Guide</strong>)<br />

groups (see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation and Configuration <strong>Guide</strong>)


projects (see “Creating Projects” on page 232)<br />

states (see “Creating States” on page 78)<br />

types (see “Creating Types” on page 84)<br />

fields (see “Creating Fields” on page 106)<br />

To create a workflow in the GUI<br />

Workflows<br />

1 Open the Workflow view (see “To open the Workflow view in the GUI” on page 138). 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 142).<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 />

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 106).<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 />

141


Chapter 4: Workflow Management<br />

142<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 138 and “Viewing Workflow” on page 142).<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 146).<br />

To save the workflow as an image file, click Save Diagram, then follow the prompts<br />

(see “Saving Workflow as Image” on page 146).<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<br />

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 138), 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 />

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.


To view a workflow in the GUI<br />

Managing Workflow<br />

Workflows<br />

1 From the Workflow view (see “To open the Workflow view in the GUI” on page 138),<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 />

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 />

1 Open the Workflow view (see “To open the Workflow view in the GUI” on page 138).<br />

2 To add additional states and state transitions, see “Creating Workflow” on page 140.<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 />

143


Chapter 4: Workflow Management<br />

144<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.<br />

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 />

1 Select the states from the workflow. For more information, see “Workflow View” on<br />

page 138.<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 />

1 Select the transitions you want to edit. For more information, see “Workflow View” on<br />

page 138.<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.


Workflows<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 />

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 />

1 Select the states you want to edit. For more information, see “Workflow View” on<br />

page 138.<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 />

145


Chapter 4: Workflow Management<br />

Printing Workflow<br />

146<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.<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 142).<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 138),<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 142.<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 138),<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.


Testing Workflow With Admin Migration Wizard<br />

Workflows<br />

As part of the procedure for setting up <strong>MKS</strong> <strong>Integrity</strong>, you can use the <strong>MKS</strong> <strong>Integrity</strong> Admin<br />

Migration Wizard (migration wizard) to test your <strong>MKS</strong> <strong>Integrity</strong> configuration on a separate<br />

server before ultimately migrating a final configuration to your production <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>.<br />

For the purpose of migrating <strong>MKS</strong> <strong>Integrity</strong> admin objects, the separate server for testing<br />

your configuration is called the staging server and the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> that users connect<br />

to is known as the production server. The migration wizard allows you to test proposed<br />

changes thoroughly on the staging server before migrating those changes to the production<br />

server, avoiding the situation where live changes must be made in your production<br />

environment. The process helps you to work with the required admin objects to create an<br />

<strong>MKS</strong> <strong>Integrity</strong> 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 />

IMPORTANT Production and staging servers must be installed on separate machines.<br />

Both servers must be from the current release.<br />

By default, the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is always installed as a production server. To create a<br />

staging server, you must install a second <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> on a separate machine and<br />

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 />

objects are automatically detected and can be imported from the production server). The<br />

database copy is created manually, based on the recommended procedures for the type of<br />

database you are using for your system. If assistance is required for managing the database,<br />

you should contact your database administrator.<br />

In starting up, the staging server automatically obtains a binding administrative lock on the<br />

production server. Lock binding means that while you are testing your changes on the<br />

staging server, no changes can be made to <strong>MKS</strong> <strong>Integrity</strong> admin objects on the production<br />

server. At any time, you may also lock the staging server to prevent changes from being<br />

made in your test environment.<br />

1<br />

Copy Database<br />

Migrate Objects<br />

2<br />

Production<br />

<strong>Server</strong><br />

Locked by Staging<br />

147


Chapter 4: Workflow Management<br />

148<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 objects migrated from the<br />

staging server function in the same way on the production server. You can migrate admin<br />

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 in 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, ViewSets, and item presentation templates.<br />

Admin objects that are migrated include the following:<br />

administrative charts<br />

administrative dashboards<br />

administrative queries<br />

administrative reports<br />

administrative report resources<br />

item presentation templates (including image files)<br />

trigger scripts<br />

ViewSets<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 150.<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 <strong>MKS</strong> <strong>Integrity</strong> admin objects. For more<br />

information, see “Installing and Configuring Staging <strong>Server</strong>” on page 150.<br />

3 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 152.<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 154.


Development<br />

<strong>Server</strong><br />

Workflows<br />

4 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 152.<br />

5 Configure <strong>MKS</strong> <strong>Integrity</strong> admin objects on the staging server and test your<br />

configuration. For more information, see “Testing <strong>MKS</strong> <strong>Integrity</strong> Configuration” on<br />

page 153.<br />

6 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 154.<br />

7 Migrate your configuration from the staging server to the production server. For more<br />

information, see “Using Admin Migration Wizard” on page 156.<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 />

2<br />

Copy Database<br />

Test<br />

<strong>Server</strong><br />

Holds Lock<br />

Holds Lock on<br />

on Test <strong>Server</strong> Migrate Objects Production<br />

Migrate Objects<br />

Locked by Test<br />

3 4<br />

Two Stage <strong>Server</strong> Configuration<br />

The basic steps for completing two stage 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 150.<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 <strong>MKS</strong> <strong>Integrity</strong> admin objects. For more information, see<br />

“Installing and Configuring Staging <strong>Server</strong>” on page 150.<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 <strong>MKS</strong> <strong>Integrity</strong> admin objects. For more information, see<br />

“Installing and Configuring Staging <strong>Server</strong>” on page 150.<br />

4 Copy databases and create administrative locks as follows:<br />

1<br />

Copy Database<br />

Production<br />

<strong>Server</strong><br />

Locked by Test<br />

149


Chapter 4: Workflow Management<br />

150<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 152.<br />

b) Copy the database from the test staging 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 152.<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 152.<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 152.<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 154.<br />

5 Configure <strong>MKS</strong> <strong>Integrity</strong> admin objects on the development staging server, then test the<br />

configuration of those objects on the test server until you have a final configuration. For<br />

more information, see “Testing <strong>MKS</strong> <strong>Integrity</strong> Configuration” on page 153.<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 154.<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> 2007 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 create another <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> installation 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> 2007<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. To create the staging server, set the property:


mksis.adminStaging<strong>Server</strong>=true<br />

Workflows<br />

in the /config/properties/is.properties file, where is<br />

the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<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 /<br />

config/properties/im.properties file:<br />

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 <strong>MKS</strong> <strong>Integrity</strong> on production server.<br />

mksis.im.prodUser= Logon ID of administrator who is configuring admin objects on<br />

production server.<br />

mksis.im.prodPassword= Password of administrator who is configuring admin objects on<br />

production server.<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 />

To specify a server to be a staging server, configure the following properties in the<br />

/config/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 <strong>MKS</strong> <strong>Integrity</strong> workflow configuration and<br />

migrate it to 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 />

E-mail Notification Upon Lock Break<br />

As administrator, you can also set certain parameters to ensure that you are notified<br />

whenever an administrative lock is broken. Set the parameters using the im diag command<br />

as follows:<br />

151


Chapter 4: Workflow Management<br />

152<br />

where<br />

im diag --diag setStrPolicy --param=notificationsOnAdminLockBreak<br />

--param=xxx@company.com,yyy@company.com,zzz@company.com<br />

--param=notificationsOnAdminLockBreak specifies that an e-mail notification will<br />

be sent whenever an administrative lock is released.<br />

--param=xxx@company.com,yyy@company.com,zzz@company.com is a comma<br />

separated list of e-mail addresses for the administrators to be notified whenever an<br />

administrative lock is released.<br />

Configuring SMTP <strong>Server</strong><br />

To configure an SMTP server for handling e-mail notifications, you must manually edit the<br />

following property in the \config\properties\im.properties file:<br />

mksis.im.smtpserver=hostname<br />

where hostname is the host name or TCP/IP address of the SMTP server to send e-mail<br />

notifications through.<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 “mksis” on page 388, and the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 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 the<br />

the production server, right clicking the <strong>MKS</strong> <strong>Integrity</strong> directory node, and then selecting<br />

View Admin Lock from the shortcut menu. The View Admin Lock dialog box displays<br />

information on the production server (hostname:port number) that is locked, when the<br />

lock was obtained, and the staging server (hostname:port number) it is bound to. For more<br />

information on lock binding, see “Managing Administrative Locks” on page 154.<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.


Workflows<br />

When the staging server starts, it first tests to see if its database is a restoration of the<br />

production server database. If the two databases are identical, the startup process completes<br />

successfully and the staging server database is marked as a test database. The server also tests<br />

to see if the <strong>Integrity</strong> Presentation Templates (IPTs) and trigger scripts are identical. If<br />

differences are detected, the staging server 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 objects on the staging server<br />

match exactly with those on the production server. If they are not the same, the staging server<br />

does not start and the lock binding is dropped. An error message is posted to the<br />

/log/server.log file on the staging server.<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 <strong>MKS</strong> <strong>Integrity</strong> admin objects on the staging server.<br />

Testing <strong>MKS</strong> <strong>Integrity</strong> 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 objects to create an <strong>MKS</strong> <strong>Integrity</strong> workflow that functions for<br />

your environment. Admin objects cannot be modified when the production server is locked.<br />

For detailed information on working with the various admin objects in <strong>MKS</strong> <strong>Integrity</strong>, see the<br />

following sections:<br />

For Managing Users, Groups, and Dynamic Groups, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007<br />

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

“<strong>MKS</strong> <strong>Integrity</strong> Projects” on page 229<br />

“States” on page 77<br />

“Types” on page 82<br />

“Fields” on page 102<br />

“Managing Field Relationships” on page 132<br />

“Workflows” on page 138<br />

“ViewSets” on page 49<br />

153


Chapter 4: Workflow Management<br />

154<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 other changes can occur to the<br />

production server while the migration wizard is performing its update.<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 />

<strong>MKS</strong> <strong>Integrity</strong> system unless they are using the Admin Migration 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 />

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 155.


Workflows<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 151.<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 im<br />

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> 2007 <strong>Administration</strong> CLI<br />

Reference <strong>Guide</strong>.<br />

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 />

2 Right click the <strong>MKS</strong> <strong>Integrity</strong> node on the tree pane. From the shortcut menu, select one<br />

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 />

155


Chapter 4: Workflow Management<br />

156<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 />

IMPORTANT The super administrator who performs the migration must also be a<br />

super administrator on the target production server (that is, he or she must have the<br />

Admin ACL permission under mks:im).<br />

You launch the migration wizard from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client by right<br />

clicking the <strong>MKS</strong> <strong>Integrity</strong> node and selecting Launch Admin Migration Wizard from the<br />

shortcut menu. The Launch Admin Migration Wizard menu item appears only for users who<br />

are assigned as super 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 objects but can only edit the ones that<br />

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 />

CAUTION <strong>MKS</strong> recommends that all locks be maintained while the migration is<br />

running. If the lock on the production server is broken during a migration, an error<br />

message displays and the migration stops.<br />

Migrating admin objects from the staging server to the production server involves updating<br />

the configuration for the entire object being modified. When you perform the migration, all<br />

overrides are transferred to production. Therefore, you should only start a migration when<br />

all changes are finalized on the staging server. Since this may affect the work of multiple type<br />

administrators, you may want to consult with all type administrator before starting a<br />

migration. Once the migration is complete, a migration report displays.


To migrate <strong>MKS</strong> <strong>Integrity</strong> admin objects to the production server<br />

NOTE Settings chosen from a previous migration session are not retained.<br />

1 Open the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client on the staging server.<br />

Workflows<br />

2 Launch the Admin Migration Wizard by right clicking the <strong>MKS</strong> <strong>Integrity</strong> node on the tree<br />

pane. The wizard displays.<br />

To continue, click Next.<br />

3 If the wizard detects admin objects with identical names on both the test and production<br />

servers, the objects are listed in the Identical Objects panel of the wizard.<br />

If this occurs, the migration wizard asks you to confirm that the two admin objects are to<br />

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 objects, the Identical Objects panel does not<br />

display. Instead, advance to the next step.<br />

4 If the wizard detects changes to the production server (or test server depending on your<br />

configuration), the import panel displays the new admin objects (or users and groups)<br />

that must be imported into the staging server database. To import the admin objects,<br />

click Next. You cannot advance through the wizard without first importing the admin<br />

objects.<br />

NOTE Differences between servers for LDAP realm users appear on this panel.<br />

If there are no new admin objects on the production server, the import panel does not<br />

display. Instead, advance to the next step.<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 />

157


Chapter 4: Workflow Management<br />

158<br />

Selectable candidates for migration appear in the Candidates For Migration table. When<br />

you select an object in the Candidates For Migration table, its metadata displays in the<br />

lower 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> 2007<br />

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

If there are objects that are referred by the selected object, those reference objects are<br />

highlighted in blue. If there are mandatory objects for the selected object, they are<br />

highlighted in pink. Mandatory objects always move with the selected object. Objects are<br />

only highlighted when selecting another object that either is an object with a reference to<br />

or from it or if there is some relationship that requires the actions to be performed in the<br />

same migration.<br />

The following details are provided for admin objects in each table:<br />

Position indicates the order objects will be migrated in.<br />

Type indicates the type of admin object affected by the change, for example, State.<br />

Name indicates the name of specific admin object, for example, state 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).


Modified User indicates the user name of the user who modified the object (not<br />

always available).<br />

Workflows<br />

To include an object for migration, select it and then click > to move it to the Admin<br />

Objects to Migrate table. To select and move all objects for migration, click >>. Similarly,<br />

use < or


Chapter 4: Workflow Management<br />

160<br />

8 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 />

You can also view a record of the staging server operations for the migration in the file<br />

/log/server.log.<br />

Considerations When Modifying Visibility,<br />

Editability, and Types<br />

<strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source users may experience errors when trying to create change<br />

packages if visibility rules, editability rules, or type specifications are not properly set. The<br />

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 <strong>MKS</strong> Source standalone change<br />

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 <strong>MKS</strong> Source standalone change<br />

packages)<br />

For more information, see the following:<br />

“Setting Project Visibility” on page 230<br />

“Setting Field Visibility for Types” on page 101<br />

“Editing Types” on page 90


Deleting Admin Objects and Items<br />

Deleting Admin 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 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 objects that have references to other admin objects as long as the admin<br />

object you are deleting does not violate the restrictions mentioned earlier in this section.<br />

When deleting the admin object, a prompt displays stating if there are object references. You<br />

then have the opportunity to cancel and manually remove the references. Object references<br />

can be viewed on the References tab when editing or viewing an admin object. For<br />

information on identifying object references, see “Viewing Admin Object References” on<br />

page 220.<br />

IMPORTANT Contrary to other Admin Objects, you cannot delete a field if it has<br />

references to other admin objects, even if that field has not made a change to the<br />

database. You must remove the references before deleting the field.<br />

Only a user with administrative privileges can delete an item. Deleting an item removes its<br />

history, links, and attachments from the database.<br />

NOTE If you are using both <strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source, do not confuse change<br />

package members with project or Sandbox members.<br />

161


Chapter 4: Workflow Management<br />

162<br />

If you delete an item, change package members associated with that item are also deleted<br />

from the database, unless the change package member is referenced by another item. For<br />

example, if a change package is closed against one item and open against another item, then<br />

the change package member is not deleted.<br />

CAUTION The ID of a deleted item is never reused. Deleting an item is irreversible.<br />

To delete an Item in the GUI<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.<br />

NOTE<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 />

Project Visibility” on page 230, “Setting Type Visibility” on page 96, and “Setting<br />

Field Visibility for Types” on page 101.<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


Setting Up E-mail Notification<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 />

/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 />

For more information on setting permissions, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation and<br />

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

To set e-mail notification in the GUI<br />

1 In <strong>MKS</strong> <strong>Integrity</strong>, select Item > Set Notification. The Notifications dialog box displays.<br />

2 The e-mail address specified for you by your administrator is automatically entered in<br />

the Email Address field.<br />

163


Chapter 4: Workflow Management<br />

164<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 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 41.<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 />

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 Select Session > Notifications. The Set Email Notifications dialog box displays.<br />

If you created a notification rule in the GUI that is too complex to view or edit in the Web<br />

interface, the Confirm Delete Complex Notification Rule dialog box displays. If not,<br />

proceed to Step 3.<br />

2 Select an option:<br />

If you want to keep the existing rule, click No.<br />

If you want to delete the existing rule and create a new one in the Web interface,<br />

click Yes.<br />

The Set Email Notifications dialog box displays.<br />

The e-mail address for your user ID automatically displays in the Email Address field.<br />

You can also type your e-mail address.<br />

165


Chapter 4: Workflow Management<br />

166<br />

3 From the Type list, select an item type to be notified about.<br />

4 Click Add. The Set Email Notifications dialog box displays a list of notification options.<br />

5 Select one or more e-mail notification options:<br />

New submissions notifies you when a new item is submitted.<br />

Any modification notifies you when an existing item is modified.<br />

Item becomes assigned to me notifies you when an item is assigned to you.<br />

Item is assigned the following states notifies you when an item moves into one or<br />

more of the selected states, for example, Open and Closed.<br />

For example, selecting New Submissions and Item becomes assigned to me sends an<br />

e-mail notification to you when a new item is submitted, when an item becomes<br />

assigned to you, or when a new item assigned to you is submitted.<br />

The list of states you can select depends on the workflow implemented by your<br />

administrator.<br />

TIP To remove an item type from the notifications page, clear all of the options from<br />

the type. Click OK to close and save the notifications settings. The next time you<br />

open the Set Email Notifications dialog box, that item type is no longer visible.<br />

6 To select another item type to be notified about, repeat steps 4 to 6.<br />

7 To accept the changes made, 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 />

/config/properties/logger.properties<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<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 />

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


Logging for <strong>MKS</strong> <strong>Integrity</strong> E-mail Notification<br />

Setting Up 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<br />

167


Chapter 4: Workflow Management<br />

168


C HAPTER FIVE<br />

Customizing Workflow<br />

Item Presentation and Configuration<br />

5<br />

This chapter contains information on customizing the presentation of <strong>MKS</strong> <strong>Integrity</strong><br />

items to users, as well as configuring how they appear in reports. Information on<br />

customizing <strong>MKS</strong> <strong>Integrity</strong> admin objects is also provided.<br />

This chapter contains the following topics:<br />

“Customizing Item Presentation” on page 170<br />

“Customizing Rich Content Fields” on page 199<br />

“Customizing Report Presentation Templates” on page 201<br />

“Configuring Attachment Size Limits” on page 214<br />

“Configuring Limits for Queries” on page 214<br />

“Configuring Context Based Text Searching” on page 217<br />

“Setting Up Electronic Signatures” on page 218<br />

“Admin Objects” on page 219<br />

“Using Type Properties” on page 224<br />

169


Chapter 5: Customizing Workflow<br />

Where to Go Next<br />

170<br />

The following table summarizes the available content for customizing <strong>MKS</strong> <strong>Integrity</strong> items:<br />

To Do This … See …<br />

Use an item presentation template to customize<br />

how <strong>MKS</strong> <strong>Integrity</strong> items appear to users.<br />

Customize how reports are rendered through the<br />

use of report presentation templates.<br />

Configure how users use attachments for<br />

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

Configure limits for how <strong>MKS</strong> <strong>Integrity</strong> items<br />

appear in queries.<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 <strong>MKS</strong> <strong>Integrity</strong> admin<br />

objects.<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 <strong>MKS</strong> <strong>Integrity</strong> 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 />

“Customizing Item Presentation” on page 170<br />

“Customizing Report Presentation Templates” on<br />

page 201<br />

“Configuring Attachment Size Limits” on<br />

page 214<br />

“Configuring Limits for Queries” on page 214<br />

“Configuring Context Based Text Searching” on<br />

page 217<br />

“Setting Up Electronic Signatures” on page 218<br />

“Admin Objects” on page 219<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


preview a graphical representation of the template’s layout<br />

Customizing Item Presentation<br />

<strong>MKS</strong> <strong>Integrity</strong> saves your presentation template files in XML format under the following<br />

directory:<br />

/data/im/issue/templates<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>. The templates directory is also backed up if you decide to upgrade the<br />

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

IMPORTANT The data/im directory, including your presentation templates, is<br />

automatically saved to a backup directory if you uninstall the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

To use your presentation templates with a new <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, you will need<br />

to copy them to the same mksis/im/issue/templates directory on that server.<br />

Image files copied to the data/public_html directory are not backed up and<br />

must be restored manually. Therefore, it is important to retain copies of your<br />

required image files.<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 172.<br />

NOTE You can only work with <strong>MKS</strong> <strong>Integrity</strong> presentation templates from the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client GUI.<br />

The following shows the main features of the template designer interface.<br />

171


Chapter 5: Customizing Workflow<br />

172<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 <strong>MKS</strong> <strong>Integrity</strong> items. Certain tools can work in two modes:<br />

clicking the tool to operate in the selected mode, for example, clicking the text tool<br />

to 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.


Tool Function<br />

Create a new tab in the layout.<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 tool.<br />

Insert row below selected row. To delete row, select cell in that row and then<br />

click tool.<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 tool.<br />

Insert column to right of insertion point. To delete inserted column, first select<br />

cell in that column and then click tool.<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 />

173


Chapter 5: Customizing Workflow<br />

174<br />

Modifying Template Properties<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 />

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<br />

box, and click the General tab. The available settings for general properties display in the<br />

dialog 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.<br />

Select preferred background color by selecting:<br />

available named HTML color<br />

option for Custom… and then a color from the selectors<br />

for Swatches, HSB (Hue, Saturation, Brightness), or<br />

RGB (Red, Green, Blue)<br />

By default, background color is default as determined<br />

by operating system.<br />

Logo URL Displays image, such as corporate logo, as part of<br />

customized template. By default, no logo displays.<br />

Note: Logo file stored in public HTML directory of server<br />

and referenced using an URL.<br />

For more information, see “To add a logo” on page 195.


General Properties Description<br />

Text Styles<br />

Customizing Item Presentation<br />

Logo Alignment Specifies alignment of logo, if one selected, at top of<br />

template. Options are Left or Right. Option not<br />

available if no logo selected. By default, logo alignment<br />

set to Right.<br />

Unreferenced Fields Layout Specifies default layout for any fields not referenced by<br />

template. Available fields from field view pane not<br />

inserted into cell. Options are:<br />

Single field per row allowing only one field on<br />

row of template<br />

Multiple fields per row allowing more than<br />

one field on row of template<br />

By default, unreferenced fields layout set to Single<br />

field per row.<br />

Default setting for defaultprint template is<br />

Multiple 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 192).<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 />

175


Chapter 5: Customizing Workflow<br />

176<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,<br />

and FieldValue.<br />

Heading style available to apply to any text you define as<br />

heading.<br />

FieldLabel and FieldValue styles available to apply to<br />

field labels and values.<br />

Name Display name of defined text style you select. By default, first<br />

one selected.<br />

Font Font for selected text style. Default font determined by<br />

operating system.<br />

Size Available font sizes from 8–72 points. Also font weight, such<br />

as Bold, or Italic, or both. Default font size determined by<br />

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 />

Default Grid Properties<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.


Customizing Item Presentation<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<br />

clicking list and selecting:<br />

available color<br />

custom option and then choosing a color from<br />

the selectors for Swatches, HSB (Hue,<br />

Saturation, Brightness), or RGB (Red, Green,<br />

Blue).<br />

By default, background color is default as<br />

determined by operating system.<br />

Border Thickness of border around grid from 0 to 99<br />

pixels. By default, border is 0.<br />

Cell Spacing Distance between individual cells from 0 to 99<br />

pixels. By default, cell spacing is 0.<br />

Cell Padding Distance between cell’s contents and cell margin<br />

from 0 to 99 pixels. By default, cell padding is 0.<br />

Pack Specifies whether any extra horizontal space in<br />

grid is filled by last column (at far right). If pack is<br />

False, then extra horizontal space distributed<br />

across all columns. Extra horizontal space only<br />

occurs when Fill option set to True. By<br />

default, pack is True.<br />

Fill Specifies whether grid expands to fill available<br />

width in item display. If fill False, grid uses only<br />

space required to display its contents. By default,<br />

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 />

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 />

177


Chapter 5: Customizing Workflow<br />

178<br />

The following table summarizes the available default cell properties:<br />

Default Cell Properties Description<br />

Background Color Preferred background color of cell. Select<br />

preferred background color by clicking list and<br />

selecting:<br />

available named HTML color<br />

custom option and then choosing a color from<br />

the selectors for Swatches, HSB (Hue,<br />

Saturation, Brightness), or RGB (Red, Green,<br />

Blue).<br />

By default, background color is default as<br />

determined by operating system.<br />

Horizontal Alignment Horizontal alignment of cell contents (Left,<br />

Center, or Right). By default, horizontal<br />

alignment is Left.<br />

Vertical Alignment Vertical alignment of cell contents (Top, Middle,<br />

or Bottom). By default, vertical alignment is<br />

Middle.<br />

Wrap Wrapping of text within cell. By default, Wrap<br />

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 179.<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.


Customizing Item Presentation<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<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 192).<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.<br />

Once you are satisfied with the changes you have made, click Save to retain those<br />

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<br />

<strong>MKS</strong> <strong>Integrity</strong> items. Templates for viewing and submitting/editing items are intended for<br />

on-screen displays, and they can be designed with features such as a controlled field width to<br />

minimize scrolling 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 />

179


Chapter 5: Customizing Workflow<br />

180<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 />

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.


Creating New Presentation Template<br />

Customizing Item Presentation<br />

You can create a new presentation template to provide a custom look for displaying,<br />

submitting, and printing <strong>MKS</strong> <strong>Integrity</strong> items. Presentation templates are set according to the<br />

item type. You create a new presentation template through the Edit Type window using the<br />

New function.<br />

To create a new presentation template<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 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 />

181


Chapter 5: Customizing Workflow<br />

182<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 186.<br />

7 Add fields to the template (see “Adding Fields” on page 193).<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 187<br />

“Working With Labels” on page 189<br />

“Working With Images” on page 194<br />

“Working With Tabs” on page 192<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<br />

for 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 179.<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 />

183


Chapter 5: Customizing Workflow<br />

184<br />

For more information on templates for viewing, submitting and printing items, see<br />

“Templates for Viewing, Submitting, and Printing Items” on page 179.<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 196). When editing<br />

the default template, you can modify or delete the Relationships and Attachments tabs (see<br />

“Working With Tabs” on page 192). 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 <strong>MKS</strong> <strong>Integrity</strong> 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 186<br />

“Working With Cells” on page 187<br />

“Working With Labels” on page 189<br />

“Working With Tabs” on page 192<br />

“Filtering Fields” on page 193<br />

“Adding Fields” on page 193<br />

“Working With Images” on page 194<br />

185


Chapter 5: Customizing Workflow<br />

186<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 176.


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 />

187


Chapter 5: Customizing Workflow<br />

188<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 177.<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.


3 To save your changes, click Save.<br />

Working With Labels<br />

Customizing Item Presentation<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.<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 105.<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 174.<br />

189


Chapter 5: Customizing Workflow<br />

190<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 175.<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.


Customizing Item Presentation<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 174.<br />

2 In the Property pane, configure the properties as required:<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 175.<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 174.<br />

191


Chapter 5: Customizing Workflow<br />

192<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 175.<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 />

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 193). 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 181 or “Editing Presentation Template” on page 185).<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<br />

inserted into the last position in the layout (last<br />

tab). The source tab name is used for the default<br />

name, appended with clone.<br />

Rename tab Select the tab (click its name). Its properties<br />

display in the Property Pane. Change the value<br />

for the Name property.<br />

Reorder a tab Select the tab (click its name). Its properties<br />

display in the Property Pane. Change the value<br />

for the Position property.


Task Operation<br />

Filtering Fields<br />

Customizing Item Presentation<br />

Use the same field on different tabs Ensure that not on any tab is not a restriction on<br />

the Fields Filter. That way the same field is<br />

available to drag to a cell on any tab.<br />

Enable tab check mark Indicators Select the tab (click its name). Its properties<br />

display in the Property Pane. Change the value<br />

for the Has Checkmark Icon property to True.<br />

Enabling this property causes users to see a<br />

check mark icon on the tab name if any field on a<br />

tab requires user input.<br />

Delete tab Select the tab (click its name). Click . The<br />

Delete Tab dialog displays to confirm before the<br />

delete operation is performed.<br />

Caution: You cannot undo deleting a tab.<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 17.<br />

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 />

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 />

Note: Filter is on by default for each new<br />

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 />

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 193).<br />

193


Chapter 5: Customizing Workflow<br />

194<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 105.<br />

3 Drag the field value to the adjacent cell.<br />

4 Repeat this procedure until all desired fields are added to the grid.<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 174.<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 />

/data/public_html<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>.


Using an URL address, you can also access images on any public HTML server.<br />

To add a logo<br />

Customizing Item Presentation<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 />

/data/public_html<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>. 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.<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 URL for the image location using<br />

the following syntax:<br />

http://<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/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 />

/data/public_html/<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>, and is a subdirectory (created by you) to contain the images. The<br />

image is now available for use in your template.<br />

2 Click the image tool on the toolbar and insert the image placeholder in the target cell.<br />

195


Chapter 5: Customizing Workflow<br />

196<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://<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/corporate_logo.gif<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.


To copy a presentation template<br />

Customizing Item Presentation<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 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 185.<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.<br />

To view the presentation template settings for a type<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 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 />

197


Chapter 5: Customizing Workflow<br />

Deleting Presentation Template<br />

198<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 183.<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 <strong>MKS</strong> <strong>Integrity</strong> node, and<br />

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 />

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 183.<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.


Customizing Rich Content Fields<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<br />

http://www.w3.org/TR/CSS1<br />

Element Attributes<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 />

200<br />

Element Attributes<br />

style, color<br />

style, align<br />

<br />

Converted to .<br />

<br />

<br />

<br />

Converted to .<br />

<br />

Converted to .<br />

<br />

style, align, border, width, cellpadding, cellspacing,<br />

summary, frame, rules, bgcolor, background<br />

<br />

style<br />

style, rowspace, align, height, width, bgcolor, valign,<br />

background<br />

<br />

CSS Definitions<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 />

/data/im/richcontent/styles/screen


data/im/richcontent/styles/printer<br />

Removing and Transforming Style Definitions and Elements<br />

Customizing Report Presentation Templates<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.<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 />

In <strong>MKS</strong> <strong>Integrity</strong>, reports are summaries of the data in your project. Reports are based on the<br />

standard and custom fields of types. Reports can be customized to include images, fonts, and<br />

hyperlinks, and can be saved as HTML files for viewing on the Web. In <strong>MKS</strong> Source, reports<br />

provide an analysis of projects, members, or individual archives. Reports and graphs can be<br />

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 an <strong>MKS</strong> <strong>Integrity</strong> report, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 User <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 />

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 />

201


Chapter 5: Customizing Workflow<br />

202<br />

<strong>MKS</strong> <strong>Integrity</strong> report elements are not removed when the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is<br />

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 />

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 />

/data/reports/recipes<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<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 205.<br />

5 When you complete the necessary modifications to the template file, move it to:<br />

/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 />

/data/reports/styles/printer<br />

b) Place the screen style in:<br />

/data/reports/styles/screen<br />

c) Place the screen style sample in:<br />

/data/reports/styles/screen/samples


Report Elements<br />

d) Place the printer style sample in:<br />

/data/reports/styles/printer/samples<br />

Customizing Report Presentation Templates<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 />

/data/public_html/images/logos<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 />

/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 />

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 />

/data/reports/<br />

styles/screen<br />

Printer style CSS files are located in:<br />

/data/reports/<br />

styles/printer<br />

CSS files must be in CSS format with a .css<br />

extension.<br />

203


Chapter 5: Customizing Workflow<br />

Element Description Location<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 />

204<br />

/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. /data/public_html/<br />

images/logos<br />

Note: Supported image types are GIF, JPEG,<br />

and PNG.


Report Tags<br />

The following tables show the available report tags and what they do.<br />

Report Tag Description<br />

Basic Tags<br />

Customizing Report Presentation Templates<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 />

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 />

205


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

206<br />

Parameter Tags<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 />

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.


Report Tag Description<br />

Attribute Tags<br />

Customizing Report Presentation Templates<br />

Displays Date Format field in Attributes panel of Report Wizard, for example:<br />

<br />

MM/dd/yy expands to 01/30/07.<br />

MMM dd yyyy expands to Jan 30 2007.<br />

MMMM dd, yyyy expands to January 30, 2007.<br />

Displays Date Time Format field in Attributes panel of Report Wizard, for<br />

example:<br />

MM/dd/yy expands to 01/30/07.<br />

MMM dd yyyy expands to Jan 30 2007.<br />

MMMM dd, yyyy expands to January 30, 2007.<br />

hh:mm:ss expands to hour, minute, and second using 24 hour clock.<br />

a (or p) expands to a.m. or p.m.<br />

z expands to time zone.<br />

Displays current date in report based on selected date format.<br />

Report Tag Description<br />

Style Tags<br />

Displays screen style CSS file in Style panel of Report Wizard. Style can be<br />

selected for viewing report in browser window, for example:<br />

<br />

Displays printer style CSS file in Style panel of Report Wizard. Style can be<br />

selected for printing report, for example:<br />

<br />

Report Tag Description<br />

/<br />

<br />

Segment Tags<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 />

208<br />

Logo Tag<br />

Displays logo image in Logo panel of Report Wizard, for example:<br />

,or<br />

<br />

Report Tag Description<br />

Field Tags<br />

Display value of specific field, such as State. Replace fieldname with name<br />

of field.<br />

You can repeat tag for field name, for example, entering one field name<br />

instance for displayed text and one for hyperlink.<br />

Field names are case-sensitive because you can create two fields with same<br />

name but with varying case.<br />

You cannot use < (less than) symbol in field tags; otherwise, values for fields<br />

after < symbol do not appear in report.<br />

<br />

<br />

<br />

<br />

<br />

<br />

Report Tag Description<br />

<br />

/<br />

<br />

<br />

/ <br />

/<br />

<br />

/<br />

<br />

Loop all occurrences of value for field specified in , for<br />

example, report displays all items that have state of Submit.<br />

iteratefields tag prompts user for list of fields to include in report.<br />

Information between opening and closing iteratefields tags then<br />

expanded for each field selected.<br />

To use fields chosen by user, specify .<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 />

&attachmentfielddisplayname displays name of attachment fields in<br />

report.<br />

&attachmentfieldname displays value of attachment fields in 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.


Report Tag Description<br />

<br />

/ <br />

<br />

/ <br />

/ <br />

<br />

/<br />

<br />

Report Tag Description<br />

<br />

/<br />

<br />

<br />

/<br />

<br />

<br />

Time Entry Tags<br />

Customizing Report Presentation Templates<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 />

&timeentryfielddisplayname displays name of time entry fields in<br />

report.<br />

&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.<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 />

&relationshipfielddisplayname displays related field name.<br />

&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 />

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.<br />

209


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

210<br />

/<br />

<br />

/<br />

<br />

/<br />

<br />

/<br />

<br />

/<br />

<br />

<br />

<br />

<br />

<br />

Relationship Tags<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


Report Tag Description<br />

<br />

header_and_or_footer_bl<br />

ocks<br />

<br />

<br />

<br />

<br />

<br />

group_computation_strin<br />

g<br />

<br />

<br />

computation_string<br />

<br />

Relationship Tags<br />

Customizing Report Presentation Templates<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 />

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 />

computedValueDisplayPattern specifies display pattern for computed<br />

value.<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 />

211


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

212<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 />

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 />

&genericcpfielddisplayname displays cp attribute name in report.<br />

&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 />

&genericcpentryfielddisplayname displays cp entry attribute name in<br />

report.<br />

&genericcpentryfieldname displays cp entry value in report.<br />

Display change package details for items included in report.<br />

These tags provide details for <strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source change<br />

packages.<br />

Display change package entry details for items included in report.<br />

These tags provide details for <strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source change<br />

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.


Report Tag Description<br />

Computed Expression Tags<br />

Customizing Report Presentation Templates<br />

Performs calculation between fields in single item. For information on creating<br />

computed expressions, see “Computed Expression Types” on page 270.<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 270.<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 “To set possible values for an<br />

integer data type” on page 108.<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.<br />

213


Chapter 5: Customizing Workflow<br />

Report Tag Description<br />

Configuring Attachment Size Limits<br />

214<br />

Grouping and Sorting Tags<br />

Displays count of grouped items in report.<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 />

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 />

/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> 2007 Installation and Configuration <strong>Guide</strong>.<br />

Configuring Limits for Queries<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.


Configuring Limits for Queries<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 under /config/<br />

properties/im.properties<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.<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 />

215


Chapter 5: Customizing Workflow<br />

Query Timeouts for Groups<br />

216<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> 2007 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 />

As administrator, you also can set higher or lower limits for the number of results returned<br />

by a query. The maximum query item count sets a value based on the total number of results<br />

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.maxQueryIssueCount in the file:<br />

/config/properties/im.properties<br />

The mksis.im.maxQueryIssueCount property governs the computation and return of<br />

queries run by <strong>MKS</strong> <strong>Integrity</strong>, and silently limits the returned item count to the set value. The<br />

setting applies to queries, reports, and charts. The minimum value is 100, and the maximum<br />

value is unlimited. By default, mksis.im.maxQueryIssueCount=10000. For more<br />

information on configuring the property for mksis.im.maxQueryIssueCount, see the<br />

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

NOTE Setting the mksis.im.maxQueryIssueCount property controls the total of<br />

all pages independent of the client’s page size.


Configuring Context Based Text Searching<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> 2007 User <strong>Guide</strong>.<br />

The property for configuring context based text searches is mksis.im.contextSearch<br />

found in file:<br />

/config/properties/im.properties<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>. By default, mksis.im.contextSearch 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> 2007 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 />

2007 Installation and Configuration <strong>Guide</strong> and the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 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 under /config/properties/im.properties as<br />

follows:<br />

mksis.im.contextSearch.syncInterval=30<br />

NOTE This property is ignored for databases that do not require it. Currently only<br />

the Oracle database uses it.<br />

217


Chapter 5: Customizing Workflow<br />

218<br />

Setting the syncInterval property forces an update within the time interval (in seconds)<br />

that you specify. By default, this value is set to 30 seconds—that is, a synchronization every<br />

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 <strong>MKS</strong> <strong>Integrity</strong> event triggers. For general information<br />

on event triggers and how to use them, see “<strong>MKS</strong> <strong>Integrity</strong> Event Triggers” on page 323. The<br />

electronic signature trigger must be set up as a rule-based pre-event trigger. When a change<br />

to an item matches the rule, the user must enter user name, password, and any comments in<br />

the Signature Required dialog box. The server validates the user’s signature and records it in<br />

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 />

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.


Admin Objects<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 />

/data/documentation/javadocs/triggers/index.html<br />

However, you should not have to change any of the calls to these methods.<br />

Admin Objects<br />

Admin objects provide a way to manage specific <strong>MKS</strong> <strong>Integrity</strong> objects through the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, as well as to migrate them using the Admin Migration<br />

Wizard (see “Testing Workflow With Admin Migration Wizard” on page 147).<br />

Converting User Objects to Admin Objects<br />

You may want to convert some user objects to admin objects to control access to them by<br />

users or so that they can be migrated. Access to admin objects is controlled by the<br />

CreateSharedAdmin permission. Admin objects are migrated using the Admin Migration<br />

Wizard (see “Testing Workflow With Admin Migration Wizard” on page 147).<br />

Note the following about converting user objects to admin objects:<br />

Once you convert a user object to an admin object, you cannot convert it back.<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 object.<br />

Administrators can modify admin objects in any way.<br />

You can migrate admin objects as part of the admin migration process.<br />

Admin objects are subject to the lock when the production server is locked.<br />

219


Chapter 5: Customizing Workflow<br />

220<br />

Admin objects display in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client.<br />

You can share Admin objects with users who are not administrators to view or edit.<br />

You can convert user objects queries, charts, reports, and dashboards to admin objects. When<br />

those objects are created from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, they are always<br />

admin objects. However, objects created from the <strong>MKS</strong> <strong>Integrity</strong> Client can be converted to<br />

admin objects by editing them in the <strong>MKS</strong> <strong>Integrity</strong> Client, and then selecting the Is Admin<br />

option. For details on editing queries, charts, reports, and dashboards, see the <strong>MKS</strong> <strong>Integrity</strong><br />

2007 User <strong>Guide</strong>.<br />

Once the object has been converted to an admin object, it appears in the corresponding<br />

subview in the <strong>MKS</strong> <strong>Integrity</strong> view of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client (see “Tree<br />

Pane” on page 14). For example, admin queries appear in the Queries view that is a subview<br />

of the <strong>MKS</strong> <strong>Integrity</strong> view (see “Queries View” on page 223).<br />

NOTE If you copy an admin object such as an admin query from the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Administration</strong> Client, the Is Admin option is selected and cannot be changed. If you<br />

copy an admin object from the <strong>MKS</strong> <strong>Integrity</strong> Client, the Is Admin option is cleared<br />

by default in the copy. You must select that option for the copied object to be an<br />

admin object.<br />

Viewing Admin Object References<br />

When editing and viewing admin objects in the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you<br />

can view all objects that reference that object. You can then use that information to minimize<br />

the impact of editing or deleting that object.<br />

To determine all objects that reference the object, click the References tab. The References<br />

panel displays the following information:


Charts View<br />

Admin Objects<br />

Object Type displays the type of object referencing the viewed object. Possible objects<br />

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<br />

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 />

Creator displays the user ID that was logged as creating the object reference.<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage admin charts from one<br />

convenient location. Managing admin charts is carried out through the Charts view.<br />

To open the Charts view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

<strong>MKS</strong> <strong>Integrity</strong> node, and select Charts. The Charts view displays.<br />

221


Chapter 5: Customizing Workflow<br />

Dashboards View<br />

222<br />

By default, the data filter in the Charts view displays all admin charts. You can search for a<br />

specific chart by typing in the text filter. For more information, see “Filtering Data” on<br />

page 17. To convert user charts to admin charts, see “Converting User Objects to Admin<br />

Objects” on page 219.<br />

From the Chart menu, you can run, create, copy, delete, edit, and view the definition of<br />

admin charts. For information on performing those tasks, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 User<br />

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

For information on the using the References tab when editing or viewing Admin Charts, see<br />

“Viewing Admin Object References” on page 220.<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage admin dashboards from one<br />

convenient location. Managing admin dashboards is carried out through the Dashboards<br />

view.<br />

To open the Dashboards view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

<strong>MKS</strong> <strong>Integrity</strong> node, and select Dashboards. The Dashboards view displays.<br />

By default, the data filter in the Dashboards view displays all admin dashboards. You can<br />

search for a specific dashboard by typing in the text filter. For more information, see<br />

“Filtering Data” on page 17. To convert user dashboards to admin dashboards, see<br />

“Converting User Objects to Admin Objects” on page 219.


Queries View<br />

Reports View<br />

Admin Objects<br />

From the Dashboard menu, you can run, create, copy, delete, edit, and view the definition of<br />

admin dashboards. For information on performing those tasks, see the <strong>MKS</strong> <strong>Integrity</strong> 2007<br />

User <strong>Guide</strong>.<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage admin queries from one<br />

convenient location. Managing admin queries is carried out through the Queries view.<br />

To open the Queries view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

<strong>MKS</strong> <strong>Integrity</strong> node, and select Queries. The Queries view displays.<br />

By default, the data filter in the Queries view displays all admin queries. You can search for a<br />

specific query by typing in the text filter. For more information, see “Filtering Data” on<br />

page 17. To convert user queries to admin queries, see “Converting User Objects to Admin<br />

Objects” on page 219.<br />

From the Query menu, you can run, create, copy, delete, edit, and view the definition of<br />

admin queries. For information on performing those tasks, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 User<br />

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

For information on the using the References tab when editing or viewing Admin Queries, see<br />

“Viewing Admin Object References” on page 220.<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage admin reports from one<br />

convenient location. Managing admin reports is carried out through the Reports view.<br />

To open the Reports view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

<strong>MKS</strong> <strong>Integrity</strong> node, and select Reports. The Reports view displays.<br />

223


Chapter 5: Customizing Workflow<br />

224<br />

By default, the data filter in the Reports view displays all admin reports. You can search for a<br />

specific report by typing in the text filter. For more information, see “Filtering Data” on<br />

page 17. To convert user reports to admin reports, see “Converting User Objects to Admin<br />

Objects” on page 219.<br />

From the Report menu, you can run, create, copy, delete, edit, and view the definition of<br />

admin reports. For information on performing those tasks, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 User<br />

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

For information on the using the References tab when editing or viewing Admin Reports, see<br />

“Viewing Admin Object References” on page 220.<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 91) in<br />

the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client GUI. To view type properties, click the Type<br />

Properties node.<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 90 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.<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.


Type Property Fields<br />

Type properties contain the following fields:<br />

Name contains the name of the type property.<br />

Using Type Properties<br />

Value contains the definition of the type property (see “Defining Type Properties” on<br />

page 224).<br />

Description contains an optional description for the type property.<br />

Operations for Type Properties<br />

You can perform the following operations on type properties from the type properties pane<br />

(see “Defining Type Properties” on page 224):<br />

Operation Procedure<br />

Create type property Click Create. The Create a type property dialog<br />

box displays.<br />

For information on fields, see “Type Property<br />

Fields” on page 225.<br />

Edit type property Select the type property, and click Edit. The<br />

Edit a type property dialog box displays.<br />

For information on fields, see “Type Property<br />

Fields” on page 225.<br />

Copy type property Select the type property, and click Copy. The<br />

Copy a property dialog box displays. The<br />

default name is Copy of where<br />

is the name of the property<br />

copied.<br />

For information on fields, see “Type Property<br />

Fields” on page 225.<br />

Delete a type property Caution: You cannot undo deletion of a type<br />

property.<br />

Select the type property, and click Delete. Click<br />

Yes to the confirmation dialog box.<br />

225


Chapter 5: Customizing Workflow<br />

226


C HAPTER SIX<br />

Projects<br />

Using Projects to Manage Change and Source<br />

6<br />

This chapter contains information on using projects with <strong>MKS</strong> <strong>Integrity</strong> items and<br />

<strong>MKS</strong> Source members. It is important to understand that projects in <strong>MKS</strong> <strong>Integrity</strong> work<br />

differently from projects in <strong>MKS</strong> Source, and that the two kinds of projects do not<br />

interact with each other.<br />

This chapter contains the following topics:<br />

“<strong>MKS</strong> <strong>Integrity</strong> Projects” on page 229<br />

“<strong>MKS</strong> Source Projects” on page 242<br />

227


Chapter 6: Projects<br />

Where to Go Next<br />

228<br />

The following table contains a summary of what <strong>MKS</strong> <strong>Integrity</strong> project information is<br />

available to you:<br />

To Do This … See …<br />

Manage <strong>MKS</strong> <strong>Integrity</strong> projects, including<br />

creating and editing.<br />

Learn how to work with the <strong>MKS</strong> <strong>Integrity</strong><br />

projects view.<br />

“<strong>MKS</strong> <strong>Integrity</strong> Projects” on page 229<br />

“Projects View” on page 229<br />

Use <strong>MKS</strong> <strong>Integrity</strong> project metrics. “Managing Project Metadata” on page 237<br />

Deactivate <strong>MKS</strong> <strong>Integrity</strong> projects that are no<br />

longer needed or in use.<br />

Assign an <strong>MKS</strong> <strong>Integrity</strong> administrator for a<br />

project.<br />

“Deactivating Projects” on page 239<br />

“Assigning <strong>MKS</strong> <strong>Integrity</strong> Project Administrator”<br />

on page 240<br />

The following table contains a summary of what <strong>MKS</strong> Source project information is available<br />

to you:<br />

To Do This … See …<br />

Learn what interfaces are available to you for<br />

working with and administering <strong>MKS</strong> Source<br />

projects.<br />

“<strong>MKS</strong> Source Interfaces” on page 242<br />

Organize your <strong>MKS</strong> Source projects. “Organizing Your Projects” on page 243<br />

Work with <strong>MKS</strong> Source projects, such as<br />

creating, importing, importing members,<br />

dropping, restoring to a checkpoint, deleting, and<br />

restoring deleted projects.<br />

“Working With Projects” on page 244<br />

Use <strong>MKS</strong> Source project metrics. “Using Project Metrics” on page 257<br />

Use <strong>MKS</strong> Source subprojects. “Working With Subprojects” on page 260<br />

Share <strong>MKS</strong> Source archives with <strong>MKS</strong> Source<br />

projects.<br />

“Sharing Archives With Other Projects” on<br />

page 265


<strong>MKS</strong> <strong>Integrity</strong> Projects<br />

Projects View<br />

<strong>MKS</strong> <strong>Integrity</strong> Projects<br />

With <strong>MKS</strong> <strong>Integrity</strong>, you can create projects and subprojects (or child projects) as needed.<br />

Projects allow you to group items according to undertakings that are defined in your<br />

organization. The <strong>MKS</strong> <strong>Integrity</strong> projects created by you then become available for selection<br />

in the Project field—a default field in <strong>MKS</strong> <strong>Integrity</strong>.<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 <strong>MKS</strong> <strong>Integrity</strong> project<br />

administrators for a specified project. For more information on project administrators, see<br />

“Assigning <strong>MKS</strong> <strong>Integrity</strong> Project Administrator” on page 240.<br />

Using the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, you can manage <strong>MKS</strong> <strong>Integrity</strong> projects from<br />

one convenient location. Managing projects is carried out through the Projects view.<br />

To open the Projects view from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the<br />

<strong>MKS</strong> <strong>Integrity</strong> node, and select Projects. The Projects view displays. For general information<br />

on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, see “Introduction” on page 10.<br />

The data filter (see “Filtering Data” on page 17) 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 Projects” on page 232.<br />

229


Chapter 6: Projects<br />

230<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 project name itself.<br />

NOTE If at least one project is shared with each group, the user and group fields are<br />

available to users when submitting items.<br />

If you double click a project, the Project dialog box displays for the selected project<br />

allowing you to view the properties for that project. For more information on viewing<br />

projects, see “Viewing Projects” on page 236.<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 />

When creating an <strong>MKS</strong> <strong>Integrity</strong> project, you can also designate users or groups as<br />

<strong>MKS</strong> <strong>Integrity</strong> project administrators for that project. For more information on project<br />

administrators, see “Assigning <strong>MKS</strong> <strong>Integrity</strong> Project Administrator” on page 240.<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 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 for use in <strong>MKS</strong> <strong>Integrity</strong><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 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 projects that reflect your product development.<br />

You can use project visibility to ensure that sensitive information from one group is not<br />

viewed or modified by another group. All items and e-mail notification are subject to project<br />

visibility rules.


<strong>MKS</strong> <strong>Integrity</strong> Projects<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 <strong>MKS</strong> <strong>Integrity</strong> items belonging to the project and its subprojects. For users to see a<br />

given 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.<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 project permissions are recursive and apply to<br />

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 />

231


Chapter 6: Projects<br />

232<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 />

Key Considerations<br />

If at least one project is shared with each group, the user and group fields are available to<br />

users when submitting items.<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 an <strong>MKS</strong> <strong>Integrity</strong> project, you can also designate users or groups as<br />

<strong>MKS</strong> <strong>Integrity</strong> project administrators for that project.<br />

Creating Projects<br />

You can create projects for use in <strong>MKS</strong> <strong>Integrity</strong>. Projects allow you to group items according<br />

to undertakings that are defined in your organization. <strong>MKS</strong> <strong>Integrity</strong> projects created by you<br />

then become available for selection in the Project field—a default field in <strong>MKS</strong> <strong>Integrity</strong>.<br />

When creating an <strong>MKS</strong> <strong>Integrity</strong> project, you can also designate users or groups as<br />

<strong>MKS</strong> <strong>Integrity</strong> project administrators for that project. For more information on project<br />

administrators, see “Assigning <strong>MKS</strong> <strong>Integrity</strong> Project Administrator” on page 240.


To create a new project in the GUI<br />

<strong>MKS</strong> <strong>Integrity</strong> Projects<br />

1 From the Projects view (see “Projects View” on page 229), select Project > Create. The<br />

Create Project dialog box displays.<br />

2 In the Name field, type a name for the new project. This is the name the project is known<br />

by in <strong>MKS</strong> <strong>Integrity</strong>. This field allows up to 100 alphanumeric 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 Project Metadata” on page 237.<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 />

Projects” on page 239.<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 />

233


Chapter 6: Projects<br />

234<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


<strong>MKS</strong> <strong>Integrity</strong> Projects<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 />

236<br />

To edit a project in the GUI<br />

1 From the Projects view (see “Projects View” on page 229), select the project you want to<br />

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 Project Metadata” on<br />

page 237.<br />

3 Edit the project as necessary. For more information on the fields in this dialog box, see<br />

“To create a new project in the GUI” on page 233.<br />

4 To determine all objects that reference the project, click the References tab. For<br />

information on the contents of the tab, see “Viewing Admin Object References” on<br />

page 220.<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 Projects<br />

You can view project details. The details are not editable, and you can only view the details<br />

for one project at a time.<br />

To view project information in the GUI<br />

1 From the Projects view (see “Projects View” on page 229), select the project you want to<br />

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 new<br />

project in the GUI” on page 233.<br />

TIP You can double click a project in the Projects view to view it.<br />

3 To determine all objects that reference the project, click the References tab. For<br />

information on the contents of the tab, see “Viewing Admin Object References” on<br />

page 220.<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.


Deleting Projects<br />

<strong>MKS</strong> <strong>Integrity</strong> Projects<br />

You can delete an <strong>MKS</strong> <strong>Integrity</strong> project only if the project and its subprojects have not been<br />

referenced in any item. To delete an idle project that has subprojects, delete its subprojects<br />

first.<br />

To delete a project in the GUI<br />

1 From the Projects view (see “Projects View” on page 229), select the project you want to<br />

delete.<br />

2 Select Project > Delete. A confirmation dialog box displays.<br />

3 To confirm the deletion, click Yes.<br />

Reparenting Projects<br />

After creating a project, you can move it from one location within your project hierarchy to<br />

another by reparenting it.<br />

To reparent a project in the GUI<br />

1 From the Projects view (see “Projects View” on page 229), select Project > Reparent. The<br />

Reparent Projects dialog box displays.<br />

2 Drag the project you want to move to the target folder.<br />

3 Click OK to save your changes.<br />

Managing Project Metadata<br />

<strong>MKS</strong> <strong>Integrity</strong> projects enable you to organize and manage items by the projects in your<br />

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 />

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 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 />

237


Chapter 6: Projects<br />

238<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 projects in<br />

<strong>MKS</strong> <strong>Integrity</strong> only allow him to organize and manage related items, such as Features and<br />

Defects, by project. David needs a way to capture important information about each project,<br />

such as milestone dates, and measure project success, for example, calculating whether his<br />

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.<br />

To back a project with an Item<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 106.<br />

3 Create a project that you want to link to a Project item (see “Creating Projects” on<br />

page 232).


<strong>MKS</strong> <strong>Integrity</strong> Projects<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 />

Deactivating Projects<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 />

2007 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 />

Setting a project to inactive means that it is not displayed in filtered project lists, such as<br />

Project; however, an inactive project’s name can still be displayed using the inactive filter,<br />

if available. Inactive projects are denoted with the [Inactive] tag.<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 project in the GUI<br />

1 From the Projects view (see “Projects View” on page 229), select the project you want to<br />

edit.<br />

2 Select Project > Edit. The Edit Project dialog box displays.<br />

3 To deactivate the project, clear the Active check box.<br />

239


Chapter 6: Projects<br />

240<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, projects, states, types,<br />

fields, and triggers. The super administrator can also designate groups or individual users, or<br />

a combination of them, to be project administrators for selected projects in <strong>MKS</strong> <strong>Integrity</strong>.<br />

The super administrator can also convert user objects to admin objects (see “Viewing Admin<br />

Object References” on page 220).<br />

<strong>MKS</strong> <strong>Integrity</strong> project administrators are allowed to edit and view projects. Project<br />

administrators can also manage all child projects of the project they are approved for. Project<br />

administrators cannot edit projects assigned to another project administrator, and they can<br />

only create and delete subprojects—they cannot create top level projects unless they have<br />

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> 2007 Installation and Configuration <strong>Guide</strong>.<br />

<strong>MKS</strong> <strong>Integrity</strong> projects are hierarchical; therefore, when creating a top level project, the<br />

creating super administrator is automatically set as the project administrator. When creating<br />

a subproject, the administrator list is empty because administrators of the parent project are,<br />

by default, administrators of its subprojects. The creating administrator can modify the<br />

default as required.<br />

If the assigned project administrators are granted the CreateProject ACL permission, they<br />

are allowed to create top level <strong>MKS</strong> <strong>Integrity</strong> projects, as well as to delete any top level<br />

projects. <strong>MKS</strong> <strong>Integrity</strong> project administrators who are granted the CreateProject<br />

permission can also assign other project administrators. For more information on the<br />

CreateProject permission, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation and Configuration<br />

<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.


<strong>MKS</strong> <strong>Integrity</strong> Projects<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> 2007<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<br />

<strong>MKS</strong> <strong>Integrity</strong> project they are assigned to.<br />

Edit <strong>MKS</strong> <strong>Integrity</strong> projects they are assigned to,<br />

including images, descriptions, and permissions.<br />

Edit project memberships in corresponding<br />

dynamic groups.<br />

View users, groups, dynamic groups, and<br />

projects.<br />

Example<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 />

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 />

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 />

Create top level <strong>MKS</strong> <strong>Integrity</strong> project or create<br />

users, groups, dynamic groups, states, types,<br />

fields, or triggers.<br />

Edit any other <strong>MKS</strong> <strong>Integrity</strong> objects such as<br />

users, groups, states, types, fields, or triggers.<br />

View states, types, fields, or triggers.<br />

Delete subproject they have created. Delete top level <strong>MKS</strong> <strong>Integrity</strong> project.<br />

Create top level <strong>MKS</strong> <strong>Integrity</strong> project (if<br />

CreateProject permission is allowed).<br />

Assign another project administrator or view<br />

administrator information for project they do not<br />

administer.<br />

241


Chapter 6: Projects<br />

242<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 17. 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 />

<strong>MKS</strong> Source Projects<br />

<strong>MKS</strong> Source functionality provides projects to manage members. <strong>MKS</strong> Source projects are<br />

separate from <strong>MKS</strong> <strong>Integrity</strong> projects, and are accessed through all interfaces (see<br />

“<strong>MKS</strong> Source Interfaces” on page 242).<br />

<strong>MKS</strong> Source Interfaces<br />

<strong>MKS</strong> Source is accessible in three interfaces: <strong>MKS</strong> <strong>Integrity</strong> Client GUI, Web interface, and<br />

command line interface (CLI).<br />

The <strong>MKS</strong> <strong>Integrity</strong> Client GUI uses the concept of a Tabbed View Interface (or TVI). A TVI is<br />

a visual arrangement of multiple views in a single window. For more information on using<br />

and customizing this interface, see the <strong>MKS</strong> Source 2007 User <strong>Guide</strong>. All <strong>MKS</strong> Source<br />

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 interface.<br />

The <strong>MKS</strong> Source Web interface allows you to perform key project management tasks. You do<br />

not need to install the <strong>MKS</strong> <strong>Integrity</strong> Client to access the <strong>MKS</strong> Source Web interface. To open<br />

the <strong>MKS</strong> Source Web interface, type the name and port number of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

in the location or address field of your Web browser, for example, xyzBusiness.com:9001.<br />

From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page, click the link for Start <strong>MKS</strong> Source Web Interface.


<strong>MKS</strong> Source Projects<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 projects, Sandboxes, and members, and to configure <strong>MKS</strong> Source. To access<br />

the command line interface from a computer running Windows, from the Start menu select<br />

the MS-DOS or Command Prompt (depending on the version of Windows).<br />

You can also choose to work alternately between the GUI and the CLI, because all<br />

<strong>MKS</strong> Source commands are available in these two interfaces. For example, you can perform a<br />

command in the CLI and view the results in the GUI.<br />

Organizing Your Projects<br />

Before you begin using <strong>MKS</strong> Source to manage the projects in your development<br />

environment, you should take a careful look at how projects and directories are organized in<br />

your repository. The recommended way to use <strong>MKS</strong> Source is also the easiest. If you follow<br />

these guidelines, <strong>MKS</strong> Source requires no special 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 />

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> Source 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> Source clones the project directory tree in the<br />

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> 2007 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 265.<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 />

243


Chapter 6: Projects<br />

244<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> Source 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:<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> Source 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 />

Code<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> Source 2007 User <strong>Guide</strong>.<br />

To create a project, select Project > Create.<br />

Project<br />

Directory<br />

Resource<br />

Directory<br />

rcs<br />

Directory<br />

rcs<br />

Directory<br />

Header<br />

Directory<br />

rcs<br />

Directory


Keep the following points in mind when creating a project:<br />

<strong>MKS</strong> Source Projects<br />

When you specify the name of the new project, <strong>MKS</strong> Source automatically assigns the<br />

.pj file extension. If you specify a .pj file extension in uppercase or mixed case,<br />

<strong>MKS</strong> Source replaces that file extension with the correct lowercase .pj file extension. If<br />

you specify a file extension other than .pj, <strong>MKS</strong> Source appends the .pj file extension<br />

to the file name. For backwards compatibility, you can import projects and subprojects<br />

that do not have the .pj file extension.<br />

A single project name can be used only once in the same location.<br />

For case-insensitive repositories, <strong>MKS</strong> Source does not distinguish between project<br />

names differing only in case. For example, if project.pj already exists in C:/<br />

Aurora_Program, you cannot create PROJECT.pj in C:/Aurora_Program. This results<br />

in an error and <strong>MKS</strong> Source asks you to specify a different path and file name, or a<br />

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> Source 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> Source confirms that the project is created.<br />

NOTE <strong>MKS</strong> Source 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> Source<br />

2007 CLI Reference <strong>Guide</strong>.<br />

Importing Projects<br />

You import projects if you need to do the following:<br />

restore projects that were dropped in earlier versions of <strong>MKS</strong> Source (Source <strong>Integrity</strong>)<br />

245


Chapter 6: Projects<br />

246<br />

migrate projects from Source <strong>Integrity</strong> Standard (an earlier version of <strong>MKS</strong> Source)<br />

Importing a project registers it with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Once a project is imported,<br />

<strong>MKS</strong> Source commands can be performed upon it.<br />

To import a project, click Project > Import.<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> Source does not support encrypted archives. If your existing project<br />

has encrypted archives, you must first decrypt the archives before importing and<br />

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 project from an earlier version of <strong>MKS</strong> Source, once a project has been<br />

imported you may not perform commands on it using an older version of <strong>MKS</strong> Source. If for<br />

some reason you need to use an earlier version of <strong>MKS</strong> Source on a project, first drop the<br />

project using the Drop Project command. The project must be re-imported before it can be<br />

used again with this version of <strong>MKS</strong> Source.<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> Source automatically detects these and imports them into the<br />

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 “si diag” on page 386.<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.


You cannot import a project that is already registered.<br />

<strong>MKS</strong> Source Projects<br />

For case insensitive repositories, <strong>MKS</strong> Source does not distinguish between project<br />

names that differ only in case. For example, if project.pj is already registered in C:/<br />

Aurora_Program, you cannot import PROJECT.pj into C:/Aurora_Program. This<br />

results in an error and <strong>MKS</strong> Source does 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 projects being imported on the server.<br />

This is done through the si.serverRoot property in the si.properties file on the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. If this is set, then any project location given must be under that<br />

directory. For details, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation and Configuration<br />

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

To import a <strong>MKS</strong> Source 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> Source 2007 CLI Reference <strong>Guide</strong>.<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 <strong>MKS</strong> Source)<br />

or server resident files must be imported to register them with the <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> Source 2007 User <strong>Guide</strong>.<br />

NOTE The Import Member command is not supported for database repositories.<br />

Key Considerations<br />

The project must be registered with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> before the member is<br />

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 />

247


Chapter 6: Projects<br />

248<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.<br />

You cannot import members into a shared subproject. For more information on shared<br />

subprojects, see “Adding Shared Subprojects” on page 262.<br />

Example<br />

You have a directory that contains numerous files and subdirectories, and you want to add<br />

this directory to an <strong>MKS</strong> Source project. First, make sure the target directory resides on the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Then use the Import Member command to add the new directory as a<br />

member to your project, selecting the Recurse Into Directories option to include all of the<br />

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> Source 2007 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 <strong>MKS</strong> Source 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 />

<strong>MKS</strong> Deploy. For more information, see the <strong>MKS</strong> Deploy 2007 <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 <strong>MKS</strong> Source online help.


<strong>MKS</strong> Source Projects<br />

10 To complete the operation, click OK. To make changes, click Back. The members display<br />

in the Project or Sandbox view.<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> Source to confirm the recurse option, use<br />

--confirmrecurse)<br />

NOTE For a complete list of command options, see the <strong>MKS</strong> Source 2007 CLI<br />

Reference <strong>Guide</strong>.<br />

Dropping Projects<br />

When a project has outlived its usefulness or just does not belong on the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> anymore, you can remove it.<br />

To drop a project means that the projectis no longer registered with the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Dropped projects can still be accessed as read only from the Change Package and Locks<br />

views until the project is purged or reclaimed by your administrator.<br />

249


Chapter 6: Projects<br />

250<br />

To drop a project, select a project in the Projects view, and click 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 project unregisters it from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>, but it does not delete the<br />

project. Dropped projects can be added back into <strong>MKS</strong> Source.<br />

For more information on adding projects, see the <strong>MKS</strong> Source 2007 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> Source 2007 CLI<br />

Reference <strong>Guide</strong>.<br />

Restoring Project to Previous Checkpoint<br />

The Restore Project command allows you to restore a project to a previously checkpointed<br />

revision. Restoring a project is useful when development must revert back to an earlier<br />

version and there are no plans to proceed from the current version of the project. Any further<br />

development then proceeds from the restored project revision. The Restore Project command<br />

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 project that you want to restore in either a<br />

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> Source 2007 User<br />

<strong>Guide</strong>).<br />

How Restore Project Command Works<br />

<strong>MKS</strong> Source performs the Restore Project command as follows:


A checkpoint is performed on the current project revision.<br />

The project is restored to the target revision.<br />

A final checkpoint of the restored revision is made.<br />

<strong>MKS</strong> Source Projects<br />

Therefore, for each project you restore, two revisions are generated. For example, if the head<br />

revision of the project is 1.4 and you decide to restore it to revision 1.2, the following project<br />

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 project is restored, all restored members return to 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 project to the<br />

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 2007 <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.<br />

To restore a project or subproject in the CLI<br />

Use the command:<br />

251


Chapter 6: Projects<br />

252<br />

where<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> Source 2007 CLI<br />

Reference <strong>Guide</strong>.<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 257.<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 />

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.


<strong>MKS</strong> Source Projects<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 />

Delete Session Phases<br />

Before describing the commands and their subcommands in more detail, the following<br />

diagram shows generally the delete session phases:<br />

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 />

253


Chapter 6: Projects<br />

254<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 />

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.


<strong>MKS</strong> Source Projects<br />

2 The Dump phase exports marked files from the database to the file system using the<br />

--dump subcommand. If projects are marked, the command recursively exports the<br />

projects into file system archives (dumping them). However, the subcommand does not<br />

export all of the members, subprojects, and variants that are referenced by those projects,<br />

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.<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 “si diag” on page 386.<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> 2007 <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 exports the projects into file system archives<br />

(dumping them). However, the subcommand does not export all of the members,<br />

subprojects, and variants that are referenced by those projects, only the in-tree objects.<br />

255


Chapter 6: Projects<br />

256<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> 2007 <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 />

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. The<br />

command then exports the archives into file system archives.


<strong>MKS</strong> Source Projects<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. For more information<br />

on si migrate, see the Database Repository Migrator document.<br />

Restoring deleted objects does not re-establish links between those objects and objects not<br />

deleted.<br />

When restoring deleted objects, si migrate does not restore subprojects or archives that<br />

correspond to kept objects. Kept objects only correspond to dumped objects if they were<br />

within the tree of the project deleted. If there are missing archives or projects, the migrator<br />

creates a stub in the tree.<br />

Using Project Metrics<br />

You can track metrics for top-level <strong>MKS</strong> Source projects and calculate them through event<br />

triggers. Calculated metrics can be viewed for an <strong>MKS</strong> Source project or through a computed<br />

field on an <strong>MKS</strong> <strong>Integrity</strong> project item. Metrics provide information on a project as of a<br />

specific checkpoint.<br />

257


Chapter 6: Projects<br />

258<br />

<strong>MKS</strong> Source provides some standard physical metrics you can use. You can also create your<br />

own metrics using a third party tool.<br />

NOTE Metrics are only supported for database type repositories.<br />

Metrics Provided by <strong>MKS</strong> Source<br />

<strong>MKS</strong> Source 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<br />

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 />

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.


Viewing Project Metrics<br />

<strong>MKS</strong> Source Projects<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 <strong>MKS</strong> <strong>Integrity</strong> project item that is associated with<br />

the <strong>MKS</strong> Source project. The <strong>MKS</strong> <strong>Integrity</strong> project item must have an si project data type<br />

field that links it to the <strong>MKS</strong> Source project and a computed field that displays the metric<br />

calculations that you want to view. For example, if you want to see the number of members<br />

in an <strong>MKS</strong> Source project in the corresponding <strong>MKS</strong> <strong>Integrity</strong> project item, you would create<br />

a Number of Members field with the following expression:<br />

SIMetric("siproject-name","Number of Members")<br />

You could checkpoint the <strong>MKS</strong> Source project nightly and update the build revision encoded<br />

in the si project field; so any changes in the number of members would be reflected in the<br />

<strong>MKS</strong> <strong>Integrity</strong> 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 106. For more information on creating computed fields for <strong>MKS</strong> <strong>Integrity</strong><br />

items, see “Creating Computed Fields” on page 284.<br />

Using Third Party Metrics Tool<br />

You can use a third party tool to track additional <strong>MKS</strong> Source metrics. Metrics tracked by a<br />

third party tool must be defined in <strong>MKS</strong> Source and recorded for a specific project<br />

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> 2007 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 /data/java/classes directory as individual class files<br />

or packaged as one or more JAR files in the /data/java/jars<br />

directory. You can use both directories at the same time if you want some classes<br />

packaged up and some exposed individually.<br />

1 JavaNCSS is supported but not shipped with <strong>MKS</strong> Source.<br />

259


Chapter 6: Projects<br />

260<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> Source 2007 CLI Reference <strong>Guide</strong>.<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> Source allows you to create large projects composed of smaller component projects.<br />

These smaller projects are known as subprojects. Subprojects behave in the same way as<br />

projects and can be accessed with most project and Sandbox commands.<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.


<strong>MKS</strong> Source Projects<br />

For information on the Change Package field or creating a change package, see the<br />

<strong>MKS</strong> Source 2007 User <strong>Guide</strong>. For detailed information on the Create Subproject options, see<br />

the online help.<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 />

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> Source 2007 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 2007 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> Source 2007 User <strong>Guide</strong>.<br />

261


Chapter 6: Projects<br />

262<br />

Adding Shared Subprojects<br />

A shared subproject is a subproject that is a member of more than one project. <strong>MKS</strong> Source<br />

allows you to share a subproject between two or more projects by referencing the original<br />

subproject. A shared subproject allows you to access common members across many projects.<br />

Shared subprojects are not required to be located within the same directory structure or<br />

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.<br />

When working with shared subprojects, <strong>MKS</strong> Source 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> Source) are detected as they are accessed by <strong>MKS</strong> Source 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 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> Source 2007 User<br />

<strong>Guide</strong>.


<strong>MKS</strong> Source Projects<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 2007 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> Source 2007 User <strong>Guide</strong>.<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 />

263


Chapter 6: Projects<br />

264<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.<br />

Source <strong>Integrity</strong> Standard Subprojects<br />

Configured subprojects or frozen subprojects created in Source <strong>Integrity</strong> Standard (an earlier<br />

version of <strong>MKS</strong> Source) are detected as they are accessed by <strong>MKS</strong> Source without disrupting<br />

the operation. The format of these subprojects is retained until you change or update it to the<br />

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> Source 2007 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.


Using Change Packages<br />

For information on the Change Package field or creating a change package, see the<br />

<strong>MKS</strong> Source 2007 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> Source 2007 CLI Reference <strong>Guide</strong>.<br />

Sharing Archives With Other Projects<br />

<strong>MKS</strong> Source 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 <strong>MKS</strong> Source project team1.pj and has one member, code.c.<br />

Team 2 has its own project, team2.pj, and has two members, program.c and<br />

header.h.<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> Source allows you to control archive sharing. For more information on the permissions<br />

required to restrict archive sharing, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation and<br />

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 />

265


Chapter 6: Projects<br />

266<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> Source to help.<br />

Shared Subprojects<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.


<strong>MKS</strong> Source Projects<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 />

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 />

267


Chapter 6: Projects<br />

268<br />

Changes to build specifications<br />

This solution requires changes to build specifications because working file locations are<br />

changed.<br />

<strong>MKS</strong> Source can manage source files anywhere on your server’s repository. <strong>MKS</strong> Source<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 270<br />

“Computed Expression Rules” on page 271<br />

“Creating Computed Fields” on page 284<br />

“Calculating Static Computed Fields” on page 287<br />

“Using Computed Fields to Chart Historical Trends” on page 287<br />

“Scheduling Computation Times” on page 290<br />

“Using Computed Fields to Calculate State Metrics” on page 290<br />

“Security” on page 292<br />

“Performance and Scalability” on page 293<br />

269


Chapter 7: Computed Expressions<br />

Where to Go Next<br />

270<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 270<br />

Construct rules for computed expressions. “Computed Expression Rules” on page 271<br />

Create a computed field. “Creating Computed Fields” on page 284<br />

Calculate a static computed field. “Calculating Static Computed Fields” on<br />

page 287<br />

Chart historical trends. “Using Computed Fields to Chart Historical<br />

Trends” on page 287<br />

Calculate state metrics. “Using Computed Fields to Calculate State<br />

Metrics” on page 290<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 293<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 284.<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 290.<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> 2007 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 />

271


Chapter 7: Computed Expressions<br />

Boolean Operators<br />

272<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. To specify an empty field value as zero, use the isEmpty function. For example:<br />

isEmpty("QA Time", 0) + isEmpty("Development Time", 0)<br />

allows you to add two time durations and retrieve a result even if one of the values is empty.<br />

Dates, Times, and Time Zones<br />

The following rules apply to dates, times, and time zones:<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.


Computed Expression Rules<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 274.<br />

Date expressions accept all standardized date and timestamp formats.<br />

Timestamp Operations<br />

Date 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 />

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 />

273


Chapter 7: Computed Expressions<br />

User and Group Fields<br />

Data Conversion<br />

Function Classes<br />

274<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 />

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:<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 Functions” on page 275.<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 “Aggregate<br />

Functions” on page 276.<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.


Computed Expression Rules<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 “Text Functions” on page 277.<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 “External Information<br />

Functions” on page 279.<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 />

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 />

275


Chapter 7: Computed Expressions<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 />

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 />

IsType(typename[, ...])<br />

Returns true if item any of types specified in its argument list.<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 />

276<br />

Arithmetic Functions<br />

Name and Description Return Value<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 />

Aggregate Functions<br />

Type in expression<br />

Timestamp<br />

Timestamp<br />

Boolean<br />

Boolean<br />

Integer<br />

Name and Description Return Value<br />

sum(numeric-expression)<br />

Adds expressions calculated against each item aggregation running against.<br />

avg(numeric-expression)<br />

Adds expressions calculated against each item aggregation running against, then divide<br />

by number of non-empty entries.<br />

Integer or floating point,<br />

same as expression<br />

Floating point


min(numeric-expression or timestamp)<br />

Finds smallest of expressions from each item 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 aggregation running against.<br />

emptyint()<br />

Returns an empty value in an interger 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 />

emptygroup()<br />

Returns an empty value in a group field.<br />

Text Functions<br />

Computed Expression Rules<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 />

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 />

Aggregate Functions<br />

Name and Description Return Value<br />

none<br />

none<br />

none<br />

none<br />

none<br />

none<br />

none<br />

none<br />

Text<br />

Integer<br />

Text<br />

277


Chapter 7: Computed Expressions<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 />

ToText(number-expression)<br />

Converts number to string.<br />

278<br />

Text Functions<br />

Name and Description Return Value<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 />

Text<br />

Text<br />

Text<br />

Integer<br />

Text<br />

Text<br />

Text<br />

Text<br />

Text


External Information Functions<br />

Computed Expression Rules<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<br />

279


Chapter 7: Computed Expressions<br />

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 <strong>MKS</strong> Source project. For more information on<br />

<strong>MKS</strong> Source metrics, see “Using Project Metrics” on page 257.<br />

SIMetricCount(siproject-field-name, metric name)<br />

Returns number of items that make up metric value for <strong>MKS</strong> Source project.<br />

DaysInState(state-name)<br />

Returns number of days item in specific state rounded to nearest day. If item in state<br />

multiple times, days for each occurrence added together.<br />

To specify unspecified state, type "Unspecified", for example,<br />

DaysInState("Unspecified").<br />

280<br />

External Information Functions<br />

Name and Description Return Value<br />

DaysInPhase(phase field name, phase name)<br />

Returns number of days item in specific phase rounded to nearest day. If item in phase<br />

multiple times, seconds for each occurrence added together with result 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 />

DaysCurrentPhase(phase-field-name)<br />

Returns number of days item in current phase rounded to nearest day.<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer


NumberOfEntriesToState(state-name)<br />

Returns number of times specified state entered.<br />

To specify unspecified state, type "Unspecified", for example,<br />

NumberOfEntriesToState("Unspecified").<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 />

dateFirstEntered(state-name)<br />

Returns date specified state first entered.<br />

dateLastEntered(state-name)<br />

Returns date specified state last entered.<br />

External Information Functions<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 />

RelExists(relationship-field)<br />

Returns whether relationships exist through specified relationship field.<br />

Aggregate(relationship-field[, ...], aggregate-expression)<br />

Aggregate operates against single item using that single item to find multiple items it<br />

aggregates into for single value.<br />

Note: Aggregate is not aggregate function.<br />

At least one relationship field must be specified. Set of items made by following first<br />

relationship field. Then that set of items augmented by all items that set points at through<br />

next relationship field and onward for each specified relationship fields. Once set built,<br />

aggregate expression runs against that set of items.<br />

Computed Expression Rules<br />

Name and Description Return Value<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 />

Integer<br />

Integer<br />

Integer<br />

Timestamp<br />

Timestamp<br />

Type of specified field<br />

name<br />

Integer<br />

Boolean<br />

Type of aggregate<br />

expression<br />

Integer<br />

Integer<br />

281


Chapter 7: Computed Expressions<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 />

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 />

To specify unspecified state, type "Unspecified", for example,<br />

sumTimeEntryByState("Unspecified").<br />

282<br />

External Information Functions<br />

Name and Description Return Value<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer


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 />

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 />

firstTimeEntryDate()<br />

Returns earliest date time recorded against item.<br />

lastTimeEntryDate()<br />

Returns latest date time recorded against item.<br />

External Information Functions<br />

Computed Expression Rules<br />

Name and Description Return Value<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Integer<br />

Date<br />

Date<br />

283


Chapter 7: Computed Expressions<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 previous Query function; however, if source-correlationfield<br />

same as target-correlation-field, use Query function. Query function<br />

takes list of fields that match between source and target items. Useful when you want to<br />

match between master item that has field set equal to values on all related items, in<br />

particular, Project field.<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. Useful for item backed pick list<br />

(IBPL) use case. In this use case, you have item type that defines set of something, like<br />

applications. IBPL links each member of application back to application while query<br />

backed relationship (QBR) used for linkage between each application to each of its<br />

members. Can use QueryCorrelated function on application using Item ID from<br />

Application item correlated with IBPL representing Application on Defect that is member<br />

of it, for example:<br />

QueryCorrelated("All Defects", ID, "Application IBPL", count())<br />

Creating Computed Fields<br />

284<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 fields<br />

can be used in the computation.<br />

Key Considerations<br />

External Information Functions<br />

Name and Description Return Value<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 />

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.


Creating Computed Fields<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 287.<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 127.<br />

To create a computed field<br />

1 From the Create Field dialog box, select Date, Floating Point, Integer, Logical,<br />

Boolean, or Short Text from the Data Type list. The relevant data type settings<br />

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 271.<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 />

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 />

285


Chapter 7: Computed Expressions<br />

286<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 290.<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.<br />

NOTE Because dynamically computed fields are not stored in the database,<br />

dynamically computed short text fields cannot be located with an all text field<br />

search in the <strong>MKS</strong> <strong>Integrity</strong> Client. To search for dynamically computed short text<br />

fields, create a query that includes a specific “field contains” comparison. If the<br />

query does not include additional filters, the query may not return optimal results.<br />

6 Fill out the remaining fields and tabbed panels as described in “To create a field in the<br />

GUI” on page 106.<br />

7 Click OK to save your changes.


Calculating Static Computed Fields<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 />

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 />

287


Chapter 7: Computed Expressions<br />

288<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.<br />

Example<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.


5 Project the Defect Count field back in time:<br />

Using Computed Fields to Chart Historical Trends<br />

im analytics --recomputehistory –-starttime=06/01/2002 –-endtime=08/<br />

24/2007 –-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/2007 –-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 />

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 />

289


Chapter 7: Computed Expressions<br />

290<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<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 “<strong>MKS</strong> <strong>Integrity</strong> Event<br />

Triggers” on page 323 and the imFieldBean.computeHistoryNow() bean in the Event<br />

Trigger Java 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 284.<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


how many state transitions an item goes through<br />

Using Computed Fields to Calculate State Metrics<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 />

For detailed information on the external information functions applicable to state metrics, see<br />

“External Information Functions” on page 279.<br />

If you are using <strong>MKS</strong> Source with <strong>MKS</strong> <strong>Integrity</strong>, you can also generate the following types<br />

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 <strong>MKS</strong> Source metrics, see “Using Project Metrics” on page 257.<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 />

291


Chapter 7: Computed Expressions<br />

Security<br />

292<br />

Next, you query on Defects by the Fix Time field. To create a query, see the <strong>MKS</strong> <strong>Integrity</strong> 2007<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> 2007 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> 2007 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> 2007 User <strong>Guide</strong>.<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 124.<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.


Performance and Scalability<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 />

293


Chapter 7: Computed Expressions<br />

294


C HAPTER EIGHT<br />

Change Packages<br />

Administering and Customizing Change Packages<br />

8<br />

This chapter provides information on customizing <strong>MKS</strong> <strong>Integrity</strong> change packages for<br />

use with <strong>MKS</strong> <strong>Integrity</strong> and integrations. This chapter also contains information on<br />

administering <strong>MKS</strong> Source 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 296<br />

“<strong>MKS</strong> Source Change Packages” on page 315<br />

295


Chapter 8: Change Packages<br />

Where to Go From Here<br />

296<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 296<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 <strong>MKS</strong> Source change<br />

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 305<br />

“Modifying Change Package Entry Attributes” on<br />

page 309<br />

“User Operations for Created Change Package<br />

Types” on page 312<br />

“Modifying CP Entries for Created CP Types” on<br />

page 314<br />

“<strong>MKS</strong> Source Change Packages” on page 315<br />

“Using Change Package Reviews” on page 316<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, the <strong>MKS</strong> <strong>Integrity</strong> includes two change package types: <strong>MKS</strong> Source and<br />

Implementer. A change package type consists of change package attributes and change<br />

package entry attributes.<br />

Users can query and filter <strong>MKS</strong> <strong>Integrity</strong> items based on change package types and their<br />

attributes. Users can also generate reports to display information on change packages of the<br />

defined change package type. By default, all users are permitted to view <strong>MKS</strong> Source and<br />

Implementer change packages.


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

The super administrator can customize and view permissions for the <strong>MKS</strong> Source (si)<br />

change package type.<br />

NOTE For information on the Implementer change package type, see the<br />

<strong>MKS</strong> Implementer 2007 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> 2007 CLI Reference<br />

<strong>Guide</strong> or man pages. The commands are also available through the <strong>MKS</strong> API. For information<br />

on using the <strong>MKS</strong> API, see <strong>MKS</strong> <strong>Integrity</strong> 2007 Integrations 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 <strong>MKS</strong> <strong>Integrity</strong> node, and select Change Package Types. The Change Package<br />

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 17.<br />

297


Chapter 8: Change Packages<br />

298<br />

To view change package types in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im cptypes<br />

[--fields=field1[:width1],field2[:width2]...]<br />

[--fieldsDelim=value]<br />

cptypeID1, cptypeID2...<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.


To change the position order of a change package type<br />

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

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, expand the node for <strong>MKS</strong> <strong>Integrity</strong>, and<br />

select Change Package Types. The display pane shows the available change package<br />

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.<br />

4 To save your changes, click OK.<br />

Editing Change Package Types<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> 2007 Installation<br />

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

IMPORTANT By default, the everyone group is allowed to view <strong>MKS</strong> Source change<br />

packages. Once new permissions are set for the <strong>MKS</strong> Source change package type,<br />

the default settings are overwritten. If you set new permissions where no<br />

parameters are specified, then no one can view <strong>MKS</strong> Source change packages.<br />

NOTE You cannot edit the si (<strong>MKS</strong> Source) change package type from the GUI. The<br />

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 17).<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 />

299


Chapter 8: Change Packages<br />

300<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 />

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 “Assigning Administrators to Change Package Types” on page 301.<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 “Viewing Admin Object<br />

References” on page 220.<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 />

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


where:<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<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 310.<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.<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 <strong>MKS</strong> Source change<br />

package type, and also sets the groups QA and Development as the only groups having<br />

permission to view change packages of the <strong>MKS</strong> Source type.<br />

Assigning Administrators to Change Package Types<br />

1 From the Edit Change Package Type dialog box (see “Editing Change Package Types” on<br />

page 299), display the Administrators tab.<br />

301


Chapter 8: Change Packages<br />

302<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 />

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.


<strong>MKS</strong> <strong>Integrity</strong> Change Packages<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 299. When you are finished viewing the<br />

information, click Close.<br />

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 />

--[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 />

303


Chapter 8: Change Packages<br />

304<br />

For example, the command:<br />

im viewcptype si<br />

displays information on the <strong>MKS</strong> Source change package type, including attributes, entry<br />

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 299.<br />

To create a change package type in the CLI<br />

From the CLI, type the following command:<br />

where:<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 />

--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


--permittedAdministrators=u=mchang<br />

--permittedGroups=QA,Development si<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<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 (<strong>MKS</strong> Source) 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.<br />

For example, the command:<br />

im deletecptype --noconfirm devcp<br />

deletes change package devcp without confirmation.<br />

Modifying Change Package Attributes<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> 2007 CLI Reference<br />

<strong>Guide</strong> or man pages. The commands are also available through the <strong>MKS</strong> API. For information<br />

on using the <strong>MKS</strong> API, see the <strong>MKS</strong> <strong>Integrity</strong> 2007 Integrations Builder <strong>Guide</strong>.<br />

305


Chapter 8: Change Packages<br />

306<br />

Viewing Change Package Attributes<br />

To view change package attributes in the CLI<br />

From the CLI, type the following command:<br />

where<br />

im cpattributes<br />

--cpType=change package type<br />

--fields=field1[:width1],field2[:width2]...<br />

--fieldsDelim=value<br />

cpattributeID1, cpattributeID2...<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 />

Viewing Change Package Attribute Details<br />

To view change package attribute details in the CLI<br />

From the CLI, type the following command:<br />

im viewcpattribute<br />

--cpType=change package type<br />

--[no]showHistory<br />

cpattributeID1, cpattributeID2...<br />

where<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.


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 />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<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.<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 />

307


Chapter 8: Change Packages<br />

308<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 />

--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:


where:<br />

im deletecpattribute<br />

--cpType=change package type<br />

--[no]confirm<br />

cpattributeID1, cpattributeID2...<br />

<strong>MKS</strong> <strong>Integrity</strong> Change Packages<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> 2007 CLI Reference<br />

<strong>Guide</strong> or man pages. The commands are also available through the <strong>MKS</strong> API. For information<br />

on using the <strong>MKS</strong> API, see <strong>MKS</strong> <strong>Integrity</strong> 2007 Integrations 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...<br />

where:<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 />

309


Chapter 8: Change Packages<br />

310<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 />

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.


<strong>MKS</strong> <strong>Integrity</strong> Change Packages<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.<br />

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 />

--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 />

311


Chapter 8: Change Packages<br />

312<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 />

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> 2007 CLI Reference<br />

<strong>Guide</strong> or man pages. The commands are also available through the <strong>MKS</strong> API. For information<br />

on using the <strong>MKS</strong> API, see <strong>MKS</strong> <strong>Integrity</strong> 2007 Integrations 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.


Creating Change Packages<br />

To create a change package in the CLI<br />

From the CLI, type the following command:<br />

where:<br />

im createcp<br />

--attribute=value<br />

--issueID=value<br />

--type=change package type<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 />

im editcp<br />

--attribute=value<br />

--filter=type:name<br />

cpid<br />

where:<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 />

313


Chapter 8: Change Packages<br />

314<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 />

Modifying CP Entries for Created CP Types<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> 2007 CLI Reference<br />

<strong>Guide</strong> or man pages. The commands are also available through the <strong>MKS</strong> API. For information<br />

on using the <strong>MKS</strong> API, see <strong>MKS</strong> <strong>Integrity</strong> 2007 Integrations 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


where:<br />

<strong>MKS</strong> Source Change Packages<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.<br />

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 />

--[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 />

<strong>MKS</strong> Source 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 />

315


Chapter 8: Change Packages<br />

316<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 />

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 <strong>MKS</strong> Source change packages by associating them with<br />

<strong>MKS</strong> <strong>Integrity</strong> items to take advantage of <strong>MKS</strong> <strong>Integrity</strong>’s workflow and process<br />

management.<br />

For information on enabling the integration with <strong>MKS</strong> <strong>Integrity</strong> and setting up <strong>MKS</strong> Source<br />

to use change packages, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 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.


<strong>MKS</strong> Source Change Packages<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> 2007 Installation and Configuration <strong>Guide</strong>.<br />

How Change Package Review Works<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> Source creates a pending change package entry for each deferred and member lock<br />

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 />

317


Chapter 8: Change Packages<br />

318<br />

Change Package review process<br />

The <strong>MKS</strong> Source 2007 User <strong>Guide</strong> gives full details of the change package review process. The<br />

change package review process is controlled through the use of policies and permissions. For<br />

information on required policies and permissions, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007<br />

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

Review Benefits<br />

Pending Entries<br />

and Revisions<br />

Reviewers<br />

Developer<br />

The benefits of using reviews are:<br />

Submit Change<br />

Package<br />

Accept or Reject<br />

Accept<br />

Committed<br />

Reviews provide a formal and enforceable review process.<br />

Open and Work<br />

Repository<br />

Developer<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 />

Reject


Change Package Review E-mail Notification<br />

<strong>MKS</strong> Source Change Packages<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> Source 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> Source 2007 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 “Configuring Event Triggers” on page 348).<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)<br />

You can modify the trigger events that cause an e-mail notification by editing the following<br />

file:<br />

/data/triggers/events/global.events<br />

For more information on events, see “Events” on page 340.<br />

You can modify the trigger script by editing the following file:<br />

/data/triggers/scripts/samples/<br />

changePackageNotification.js<br />

For more information on scripts provided by <strong>MKS</strong>, see “Sample <strong>Server</strong>-side Event Triggers”<br />

on page 353.<br />

319


Chapter 8: Change Packages<br />

320


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> runs when a predefined<br />

event occurs. For example, you could set up an event trigger to run every time a new<br />

item is submitted.<br />

<strong>MKS</strong> <strong>Integrity</strong> executes event triggers in response to an action by the client. Event<br />

triggers reside on the server machine where the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> executes them.<br />

<strong>MKS</strong> <strong>Integrity</strong> does not support client-side event triggers. As a result, all references must<br />

be relative to the server. However, <strong>MKS</strong> Source supports client-side event triggers as<br />

documented in this chapter.<br />

IMPORTANT The date and time stamp presented to users for operations<br />

performed by server-side event triggers is that of the server time locale, not the<br />

locale of the <strong>MKS</strong> <strong>Integrity</strong> Client.<br />

This chapter contains the following topics:<br />

“<strong>MKS</strong> <strong>Integrity</strong> Event Triggers” on page 323<br />

“<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers” on page 340<br />

321


Chapter 9: Event Triggers<br />

Where to Go Next<br />

322<br />

The following table summarizes the steps you should follow to set up <strong>MKS</strong> <strong>Integrity</strong> event<br />

triggers:.<br />

To Do This … See …<br />

Understand components of an event trigger,<br />

including the categories, examples of how to use<br />

triggers, and the transaction process.<br />

“<strong>MKS</strong> <strong>Integrity</strong> Event Triggers” on page 323.<br />

Understand how to implement event triggers. “Planning Event Triggers” on page 325.<br />

Use event triggers, including planning, creating,<br />

managing, viewing, editing, deleting, and<br />

resolving event triggers.<br />

“Using Event Triggers” on page 326.<br />

Use the <strong>MKS</strong> <strong>Integrity</strong> Script Library. “<strong>MKS</strong> <strong>Integrity</strong> Script Library” on page 337.<br />

The following table summarizes the steps you should follow to set up <strong>MKS</strong> Source event<br />

triggers:.<br />

To Do This … See …<br />

Understand the components of a server-side<br />

event trigger, including the event, the<br />

<strong>MKS</strong> Source command, the types of event<br />

triggers and their contexts.<br />

“<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers” on<br />

page 340.<br />

Create a server-side event trigger. “Creating <strong>Server</strong>-side Event Triggers” on<br />

page 347.<br />

Understand how <strong>MKS</strong> Source resolves event<br />

triggers.<br />

Refer to sample server-side event triggers,<br />

including triggers to run custom java code from a<br />

script.<br />

“Event Trigger Resolution” on page 352.<br />

“Sample <strong>Server</strong>-side Event Triggers” on<br />

page 353.<br />

Create a client-side event trigger. “Configuring Client-side Event Triggers” on<br />

page 355.


<strong>MKS</strong> <strong>Integrity</strong> Event Triggers<br />

<strong>MKS</strong> <strong>Integrity</strong> Event Triggers<br />

An event trigger is a block of code associated with a predefined event. The script performs a<br />

specified action and is executed whenever the event occurs. For example, you could set up an<br />

event trigger to run every time a user checks in a file.<br />

To understand <strong>MKS</strong> <strong>Integrity</strong> event triggers, you need to know the following:<br />

“Event Categories” on page 323<br />

“How to Use <strong>MKS</strong> <strong>Integrity</strong> Event Triggers” on page 323<br />

“Transactionality of Event Triggers” on page 324<br />

Event Categories<br />

An event is a defined point in <strong>MKS</strong> <strong>Integrity</strong>’s operation. <strong>MKS</strong> <strong>Integrity</strong> operations fall into<br />

three categories of events:<br />

Rule based change events run because of an action made by a user.<br />

Scheduled events run in isolation and do not require an action by a user.<br />

Other events run when:<br />

time entry is changed by a user<br />

item tree is copied<br />

item is branched<br />

item is labeled<br />

How to Use <strong>MKS</strong> <strong>Integrity</strong> Event Triggers<br />

The following are some of the ways you can use rule-based change triggers:<br />

When an item changes to a specified state, iterate over the change packages and then<br />

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) are<br />

in a final state, move the item into a final state as well.<br />

Populate fields on the same item based on certain field selections.<br />

When an item’s state changes, change the assigned user.<br />

When an item is closed, close all of the underlying tasks.<br />

Enforce mutually exclusive fields.<br />

323


Chapter 9: Event Triggers<br />

324<br />

Create new items and link them to existing items.<br />

Enforce mandatory fields for a specific state transition.<br />

The following are some of the ways you can use scheduled triggers:<br />

Stale items<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 />

Change the priority level of an item<br />

If the priority is at the maximum level, send an e-mail to the manager.<br />

Unassigned items<br />

If a critical item has been in a beginning state for a number of days, send an e-mail to the<br />

project manager.<br />

Item cleanup<br />

Clear items that have been in an open state for years, and cancel and close them.<br />

Missed deadline<br />

If an item is in a development state after the required completion date has passed, send<br />

an e-mail to the project manager.<br />

Avoid missed deadlines<br />

Send an e-mail to the project manager a day before the required completion date for<br />

development.<br />

Repeated escalations<br />

Send an e-mail to the project manager repeatedly until the item is modified in a specific<br />

way.<br />

Recalculating an item’s history<br />

If an item contains a computed field, specify the frequency at which the computed field<br />

is recalculated and stored in the item’s history.<br />

A user can use time entry triggers whenever a time entry is created, edited, or deleted.<br />

For more information on scripts in the library, see “Available Pre-created Scripts” on<br />

page 337.<br />

Transactionality of Event Triggers<br />

An event trigger is an association between a predefined <strong>MKS</strong> <strong>Integrity</strong> event and the script<br />

that is to be executed when that event occurs. These scripts fall into two categories based on<br />

when they occur and if they modify entries in the database. The two categories are as follows:<br />

Pre-event triggers can modify the item being changed and prevent changes to an item.


<strong>MKS</strong> <strong>Integrity</strong> Event Triggers<br />

Post-event triggers return information on items in the database and perform actions such<br />

as sending mail, but they cannot make modifications to items.<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 />

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.<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 Event 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 Determine the base tasks the trigger needs to perform, and select the required scripts<br />

from the library.<br />

3 Determine what fields, if any, the trigger will change or what information the trigger<br />

collects from the database.<br />

325


Chapter 9: Event Triggers<br />

Using Event Triggers<br />

326<br />

4 Identify which user permissions are overridden by the trigger and how that affects<br />

security.<br />

5 Identify potential constraint based conflicts, such as mandatory fields for state changes<br />

or closed change package requirements.<br />

NOTE To use <strong>MKS</strong> <strong>Integrity</strong> event triggers, set the property<br />

mksis.im.triggers.enable=true in the im.properties file. For more<br />

information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007 Installation and Configuration <strong>Guide</strong>.<br />

To use <strong>MKS</strong> <strong>Integrity</strong> event triggers, you need to know the following:<br />

“Managing Event Triggers” on page 326<br />

“Creating Event Triggers” on page 327<br />

“Viewing Event Triggers” on page 335<br />

“Editing Event Triggers” on page 336<br />

“Deleting Event Triggers” on page 336<br />

“Resolving Event Triggers” on page 337<br />

“Running the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>” (for more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong><br />

2007 Installation and Configuration <strong>Guide</strong>)<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 <strong>MKS</strong> <strong>Integrity</strong><br />

select Triggers. (For general information about the <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client,<br />

see “Introduction” on page 10.) The Triggers view displays.


<strong>MKS</strong> <strong>Integrity</strong> Event Triggers<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 17.<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.<br />

You can perform the following tasks:<br />

create a new event trigger that runs:<br />

by a set of rules (see “Creating Rule Based Change Triggers” on page 327)<br />

on a schedule (see “Creating Scheduled Triggers” on page 331)<br />

whenever a time entry is changed (“Creating Other Triggers” on page 334)<br />

run a scheduled event trigger (see “Running Scheduled Triggers” on page 335)<br />

edit an event trigger (see “Editing Event Triggers” on page 336)<br />

view an event trigger’s details (see “Viewing Event Triggers” on page 335)<br />

delete an event trigger (see “Deleting Event Triggers” on page 336)<br />

change the order of event trigger resolution (see “Resolving Event Triggers” on<br />

page 337)<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 />

327


Chapter 9: Event Triggers<br />

328<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 />

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 />

Keep in mind the following when creating a rule-based change trigger:<br />

Permissions are validated<br />

Ensure each field the user is required to update is legally updateable by that user.<br />

Workflow validation<br />

If the state of an item is being changed, ensure the state transition is valid.<br />

Change package closed<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 />

Mandatory fields<br />

Ensure all fields that are mandatory for the final state in the workflow contain values.<br />

NOTE Validations are performed before any trigger code runs. The pre-event trigger<br />

only runs if all validations are successful. Be aware that the trigger has administrator<br />

privileges and may override the user permissions.<br />

Key Considerations<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 <strong>MKS</strong> Source and are not applicable to<br />

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


To create a rule-based change trigger in the GUI<br />

<strong>MKS</strong> <strong>Integrity</strong> Event Triggers<br />

1 In the Triggers view (see “Managing Event Triggers” on page 326), 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.<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 41.<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 />

329


Chapter 9: Event Triggers<br />

330<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 />

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 />

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 “<strong>MKS</strong> <strong>Integrity</strong> Script<br />

Library” on page 337.<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 “<strong>MKS</strong> <strong>Integrity</strong><br />

Script Library” on page 337.<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 (/).


<strong>MKS</strong> <strong>Integrity</strong> Event 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 />

are not available for 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. <strong>MKS</strong> Source project<br />

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 17.<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 />

331


Chapter 9: Event Triggers<br />

332<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 Project Visibility” on page 230 and<br />

“Setting Field Visibility for Types” on page 101.<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 <strong>MKS</strong> Source and are not applicable to<br />

<strong>MKS</strong> <strong>Integrity</strong>.<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 326), 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.


<strong>MKS</strong> <strong>Integrity</strong> Event 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 17.<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 />

333


Chapter 9: Event Triggers<br />

334<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 <strong>MKS</strong> <strong>Integrity</strong> actions occur:<br />

time entry is changed<br />

item tree is copied<br />

item is branched<br />

item is labeled<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 <strong>MKS</strong> Source and are not applicable to<br />

<strong>MKS</strong> <strong>Integrity</strong>.<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.<br />

To create an other trigger<br />

1 In the Triggers view (see “Managing Event Triggers” on page 326), 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.


<strong>MKS</strong> <strong>Integrity</strong> Event Triggers<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 />

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 />

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 326.<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 326.<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 />

335


Chapter 9: Event Triggers<br />

336<br />

Editing Event Triggers<br />

You can edit the details of an <strong>MKS</strong> <strong>Integrity</strong> event trigger through the Triggers 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 326.<br />

2 Select Trigger > Edit. The Edit Trigger dialog box displays.<br />

3 Select a tab to edit its contents. For more information, see “Creating Rule Based Change<br />

Triggers” on page 327 and see “Creating Scheduled Triggers” on page 331.<br />

4 To determine all objects that reference the field, click the References tab. For information<br />

on the contents of the tab, see “Viewing Admin Object References” on page 220.<br />

5 To finish and save the changes, click OK.<br />

Deleting Event Triggers<br />

When an <strong>MKS</strong> <strong>Integrity</strong> event trigger is no longer needed, you can delete it in the Triggers<br />

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 326.<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.


Resolving Event Triggers<br />

<strong>MKS</strong> <strong>Integrity</strong> 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 />

<strong>MKS</strong> <strong>Integrity</strong> Script Library<br />

<strong>MKS</strong> <strong>Integrity</strong> event triggers use pre-created scripts from a server-side library. You can<br />

modify existing scripts or add new ones to build the library over time.<br />

Event triggers are scripted using JavaScript and follow the standard established by the<br />

European Computer Manufacturers Association (ECMA) in ECMAScript. Additional<br />

information on ECMAScript is available at the ECMA Web site (http://www.ecmainternational.org/).<br />

Detailed information on the JavaScript input elements—such as tokens, line terminators,<br />

comments, and white space—is beyond the scope of this guide. However, for further<br />

information on the JavaBeans exposed by <strong>MKS</strong> <strong>Integrity</strong>, refer to the Javadocs installed on<br />

the server at:<br />

/data/documentation/javadocs/triggers/index.html<br />

TIP Javadocs are available from the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page.<br />

Available Pre-created Scripts<br />

<strong>MKS</strong> <strong>Integrity</strong> provides pre-created scripts, which are available in the script library found in:<br />

/data/triggers/scripts<br />

The list of pre-created scripts provided may vary depending on the server implementation of<br />

an organization. The following pre-created scripts are available:<br />

337


Chapter 9: Event Triggers<br />

338<br />

assignedUserOnly.js restricts item editing to the assigned user only.<br />

assignment.js automatically assigns an item based on a file-driven set of criteria.<br />

count.js maintains an integer field to be set as equal to the number of related items<br />

through a given relationship field.<br />

dependentStatus.js creates a status dependency on related items.<br />

echo.js prints the event type, name, and context to the /log/<br />

server.log file.<br />

email.js sends an e-mail notification from a scheduled trigger.<br />

escalate.js escalates an item from a scheduled trigger.<br />

hello.js prints the event type, name, and context (if run from a scheduled trigger, it<br />

prints the item numbers of the matched items).<br />

javamail.js uses the Java mail API to send simple e-mail notifications in both plain<br />

text and HTML.<br />

mandatoryFieldsOnStateTransition.js enforces mandatory fields on a state<br />

transition.<br />

postLinkedIssue.js posts a new item based on a state change for a source item.<br />

PromoteIssue.js enables generating and promoting Implementer requests from<br />

within <strong>MKS</strong> <strong>Integrity</strong>. For more information, see the <strong>MKS</strong> Implementer 2007 Installation<br />

and <strong>Administration</strong> <strong>Guide</strong>.<br />

signatureRequired.js requires an electronic signature for changes to items. For more<br />

information, see “Setting Up Electronic Signatures” on page 218.<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 />

Adding Scripts to Library<br />

Although the details of JavaScript programming are outside the scope of this guide, the<br />

following provides a general approach to writing event triggers:<br />

Prepare your event trigger script using JavaScript in ECMA-compliant syntax. The<br />

following affects how the script information displays in the GUI:<br />

The first set of commented text before the first list starting with @param displays as a<br />

description field for the script. You can use HTML tags for paragraph and character<br />

formatting.<br />

NOTE Do not use HMTL comment tags of the form in your<br />

scripts.


<strong>MKS</strong> <strong>Integrity</strong> Event Triggers<br />

A commented line starting with @param describes a single parameter. The first word<br />

after @param is the field type and can be String, Boolean, or MultiString. The<br />

words that follow until the end of the line are used as the name of the parameter<br />

field (displays on the left field of the GUI). The name of the field also displays as the<br />

key used to review parameter values in the parametersBean class by calling the<br />

getParameter method.<br />

Text on the subsequent commented lines until the next @param (or, if no @param,<br />

then end of text block) appear as tooltips for the parameter field in the GUI.<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.<br />

Reference the applicable Bean or Beans you want to perform an operation on. For details<br />

on the method for calling the necessary Beans, refer to the installed Javadocs under:<br />

/data/documentation/javadocs/triggers/index.html<br />

To identify the name a Bean can be referenced by, review the documentation for the<br />

method GetExposedName in the serverBean class.<br />

NOTE When a date is set in a JavaScript using IssueDeltaBean.<br />

setDeltaFieldValue() based on the value of a data/time field, the time portion<br />

is not truncated in the database. For example, if datetime_1 field has a value of<br />

Apr 1, 2007 4:51:24 PM and it is assigned to date_1 field, the date_1 field<br />

displays a value of Apr 2, 2007. If date_1 field is assigned to datetime_2 field,<br />

the datetime_2 field displays a value of Apr 1, 2007 4:51:24 PM.<br />

Look up the Bean or Beans:<br />

var environmentBean = bsf.lookupBean<br />

("siEnvironmentBean");<br />

View the source for the available pre-created scripts for examples on how to set up a<br />

script. For more information, see “Available Pre-created Scripts” on page 337.<br />

When the script has been completed and tested, save it in:<br />

/data/triggers/scripts<br />

NOTE You can also set another location for the script library by modifying the<br />

is.properties file. For more information, see the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 2007<br />

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

339


Chapter 9: Event Triggers<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

Member Events<br />

340<br />

This section assumes familiarity and experience with JavaScript, your specific operating<br />

system, and <strong>MKS</strong> Source. Do not attempt to implement event triggers without experience.<br />

The samples provided may not necessarily be configured for use at your site. They are<br />

designed as examples only.<br />

Events<br />

An event is a defined point in <strong>MKS</strong> Source’s operation. The four categories of events<br />

connected with <strong>MKS</strong> Source operations are:<br />

member<br />

project<br />

revision<br />

server<br />

The global.events definition file is contained in:<br />

/data/triggers/events<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>. For more information on the events definition file, see “Updating Events Definition<br />

File” on page 351.<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


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 />

Project Events<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 />

addSubproject.pre addSubproject.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>-side <strong>MKS</strong> Source Event Triggers<br />

341


Chapter 9: Event Triggers<br />

<strong>Server</strong> Events<br />

342<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<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 />

<strong>MKS</strong> Deploy Events<br />

These events are only applicable if you are licensed to use <strong>MKS</strong> Deploy. For more information, see the <strong>MKS</strong> Deploy<br />

2007 <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


<strong>MKS</strong> Deploy Events<br />

Project.restoreStage.pre Project.restoreStage.post<br />

Project.deployRequestStateChange.post<br />

Project.deployTargetConnectionStatusChange.post<br />

<strong>MKS</strong> Source Commands<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

The following tables list the available <strong>MKS</strong> Source commands and their associated event<br />

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.addSubproject<br />

si createsubproject Project.importSubproject<br />

si movesubproject Project.moveSubproject<br />

343


Chapter 9: Event Triggers<br />

Project Command Project Event Identifier<br />

344<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<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


Event Triggers<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

An event trigger is an association between a pre-defined <strong>MKS</strong> Source event and the script that<br />

is to be executed when that event occurs. The operation occurs in the following sequence:<br />

<strong>Integrity</strong> Client initiates a command that will be run on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

Before event begins, pre-event is posted.<br />

Event occurs.<br />

<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 />

If script is found, the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> executes the resolved script.<br />

Command executes.<br />

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 />

<strong>MKS</strong> Source event triggers are scripted using JavaScript and are declared using the IBM<br />

Alphaworks Beans Scripting Framework (BSF). Event trigger variables are declared as<br />

JavaBeans in the following syntax:<br />

var environmentBean = bsf.lookupBean ("siEnvironmentBean");<br />

The functionality of <strong>MKS</strong> Source is available through Beans that are exposed to the<br />

JavaScript. Once the JavaBean has been referenced, you can perform operations on that Bean.<br />

The following provides an example of a Bean that could be used to abort a script and provide<br />

the user with a message:<br />

var environmentBean = bsf.lookupBean ("siEnvironmentBean");<br />

environmentBean.abortScript ("Your revision description<br />

is incomplete",true);<br />

To obtain build and development path information for the current project from a Bean, use<br />

the following methods in the project Bean:<br />

isNormal(), isVariant(), isBuild()getVariantName(),<br />

getBuildRevisionBean()<br />

345


Chapter 9: Event Triggers<br />

346<br />

For further details on the specific Beans available with <strong>MKS</strong> Source, refer to the installed<br />

Javadocs in:<br />

/data/documentation/javadocs/triggers/index.html<br />

and review the documentation for the method GetExposedName.<br />

Event Trigger Contexts<br />

<strong>MKS</strong> Source 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 />

NOTE When working with shared subprojects, <strong>MKS</strong> Source uses the actual name of<br />

the subproject in the file system rather than its relative name in the project hierarchy.<br />

This enhances the portability of change packages across different projects.<br />

Therefore, when returning query information resulting from a script, <strong>MKS</strong> Source<br />

uses the actual file system name of the shared subproject.<br />

Global Context<br />

Global event triggers are available and active for all <strong>MKS</strong> Source operations. As<br />

administrator, you use the global context for any JavaScript elements used to define<br />

additional procedures for all <strong>MKS</strong> Source users.<br />

Project Context<br />

Project event triggers are established within a project events file. The project context is<br />

generally used for project-specific configuration processes. Event triggers in this context<br />

generally add to, but do not override, event triggers defined in the global context. The project<br />

context is active when either the project or a Sandbox based on the project is active.<br />

NOTE <strong>MKS</strong> Source events not available in the project context are: New Project,<br />

Import Project, and Drop Project.<br />

Subproject Event Triggers<br />

You can also set up event triggers to run within the context of a subproject. This allows you to<br />

run an event trigger only on a selected subproject, without requiring that the trigger also be<br />

defined for the master project.


To configure event triggers to run on a subproject<br />

1 From the /data/triggers directory, copy the<br />

project_template.events file to:<br />

/data/triggers/events<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<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 />

Components of Event Triggers<br />

Creating an event trigger in <strong>MKS</strong> Source requires three primary components:<br />

Properties files:<br />

/config/properties/si.properties<br />

/config/properties/is.properties<br />

to configure <strong>MKS</strong> Source so that event triggers may take place. The files include<br />

properties that define the directories for both the events definition files and event trigger<br />

scripts.<br />

Events definition files listing all events defined in <strong>MKS</strong> Source and mapping events to<br />

trigger scripts. The default directory for the events definition file is:<br />

/data/triggers/events<br />

Event trigger scripts developed in JavaScript and, by default, located in:<br />

/data/triggers/scripts<br />

Creating <strong>Server</strong>-side Event Triggers<br />

Event triggers in <strong>MKS</strong> Source are scripted using JavaScript and follow the standard<br />

established by the European Computer Manufacturers Association (ECMA) in ECMAScript.<br />

Additional information on ECMAScript is available at ECMA’s Web site (http://<br />

www.ecma-international.org/). To view examples of scripted event triggers, see<br />

“Sample <strong>Server</strong>-side Event Triggers” on page 353.<br />

347


Chapter 9: Event Triggers<br />

348<br />

Detailed information on the JavaScript input elements—such as tokens, line terminators,<br />

comments, and white space—is beyond the scope of this guide. However, for further<br />

information on the JavaBeans exposed by <strong>MKS</strong> Source, refer to the Javadocs installed on the<br />

server at:<br />

/data/documentation/javadocs/triggers/index.html<br />

The following steps are required to create an event trigger:<br />

“Configuring Event Triggers” on page 348<br />

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

“Writing Event Triggers” on page 350<br />

“Updating Events Definition File” on page 351<br />

“Restarting <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>” on page 352<br />

The next sections describe the detailed procedures required to complete each of these steps.<br />

Configuring Event Triggers<br />

<strong>MKS</strong> Source is pre-configured with event triggers enabled by default. To disable event<br />

triggers, you must modify the required properties in:<br />

/config/properties/si.properties<br />

/config/properties/is.properties<br />

<strong>Server</strong>-side event triggers are enabled using properties in the si.properties file:<br />

si.triggers.enable=true enables event triggers. Can be either true or false. If<br />

false, all other trigger properties are ignored.<br />

si.triggers.events=triggers/events/ points to the directory that <strong>MKS</strong> Source<br />

searches for event definition files. The default is:<br />

/data/triggers/events<br />

This is a relative path to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> directory and should always contain<br />

forward slashes.<br />

si.triggers.disabled=triggers/disabled.txt points to a file that lists serverside<br />

project paths. Each of the projects listed has its event triggers disabled. Disabling<br />

also disables global event triggers. Property uses a relative path to the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> directory and should always contain forward slashes.<br />

si.triggers.disableSubProjects=true indicates whether a trigger for a subproject<br />

should be disabled because its parent project has disabled triggers.<br />

si.triggers.resolution=chained describes the resolution type: singlescript,<br />

singlecontext, or chained.


<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

si.triggers.resolutionOrder=global,project specifies the order the trigger<br />

scripts are resolved in. By default, it is a comma-delimited list containing keywords for<br />

global and project events.<br />

The following global trigger properties are also set in /config/<br />

properties/is.properties:<br />

triggers.scripts=triggers/scripts/ points to the directory that <strong>MKS</strong> Source<br />

searches for script files. The default directory is:<br />

/data/triggers/scripts<br />

Property uses a relative path to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> directory and should always<br />

contain forward slashes.<br />

By default, triggers.script=triggers/script.<br />

triggers.mail<strong>Server</strong>= specifies the address of the mail server used by the event<br />

trigger environment Bean method sendMail(). The mail server is specified as either a<br />

server name (triggers.mail<strong>Server</strong>=smtpgate.xyzBusiness.com) or an IP address<br />

(triggers.mail<strong>Server</strong>=1.2.34.56).<br />

triggers.environmentVariables=triggers/env.properties points to a Java<br />

properties file that can be populated with variables that are available during runtime.<br />

Variables are accessible by using:<br />

var props = ScriptEnvironmentBean.getEnvironmentVariables();<br />

props.getProperty("myVariable");<br />

Property uses a relative path to the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> directory and should always<br />

contain forward slashes. If given, the variables defined here are shared by all<br />

<strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source triggers.<br />

Planning Event Triggers<br />

You can set event triggers in <strong>MKS</strong> Source in several ways.<br />

First choose the scope of the event trigger. Event triggers that you want to apply to all<br />

operations should be set in the global context. Event triggers that are related only to a specific<br />

project should be set in the project context.<br />

You can then consider whether your event triggers should occur as a pre-event or post-event.<br />

Pre-event triggers can return a code that indicates the operation should not proceed and are<br />

therefore most applicable for events that you want to prevent. Post-event triggers are more<br />

349


Chapter 9: Event Triggers<br />

350<br />

useful for logging information on a successful operation or for performing linked operations.<br />

The post-event trigger executes regardless of whether the event was successful, but the<br />

administrator has access to 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 project context.<br />

Consider two additional issues when planning event triggers:<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 />

Writing Event Triggers<br />

Although the details of JavaScript programming are outside the scope of this guide, the<br />

following provides a general approach to writing event triggers:<br />

Prepare your event trigger script using JavaScript in ECMA-compliant syntax. For<br />

examples of completed JavaScripts, see “Sample <strong>Server</strong>-side Event Triggers” on<br />

page 353.<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.<br />

Reference the applicable Bean, or Beans, you want to perform an operation on. For<br />

details on the method for calling the necessary Beans, refer to the installed Javadocs in:<br />

/data/documentation/javadocs/triggers/index.html<br />

To identify the name a bean can be referenced by, review the documentation for the<br />

method GetExposedName.<br />

Look up the Bean, or Beans:<br />

var environmentBean = bsf.lookupBean ("siEnvironmentBean")


<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

Save your script in the directory specified for the triggers.script property in<br />

is.properties file. By default, this directory is:<br />

/data/triggers/scripts<br />

Update events definition file.<br />

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

<strong>MKS</strong> Source runs the event trigger at the next applicable 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 />

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 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 <strong>MKS</strong> Source operation, for example, checkIn, checkOut,<br />

setAttribute, or checkpoint (for a complete list of <strong>MKS</strong> Source events, see<br />

“Events” on page 340)<br />

351


Chapter 9: Event Triggers<br />

352<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 <strong>MKS</strong> Source events New Project, Import Project, and<br />

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 />

/data/triggers/global_template.events<br />

2 Copy the global template file to:<br />

/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 />

/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> 2007<br />

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

Event Trigger Resolution<br />

<strong>MKS</strong> Source resolves event triggers according to the resolution order configured in the<br />

si.properties file. For example, if the order is global,projects, the global events file is<br />

searched for scripts, followed by the projects event file. When <strong>MKS</strong> Source finds a script with<br />

a matching name, it runs the script.<br />

<strong>MKS</strong> Source is pre-configured to first resolve global event triggers followed by project event<br />

triggers. The variable is:<br />

si.triggers.resolutionOrder=global,project<br />

The default setting can be reconfigured to suit your environment.


To change the order of event trigger resolution<br />

1 Open the file:<br />

/config/properties/si.properties<br />

2 Edit the property:<br />

si.triggers.resolutionOrder=global,project<br />

to reverse the sequence of the global and project contexts:<br />

si.triggers.resolutionOrder=project,global<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<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 />

Sample <strong>Server</strong>-side Event Triggers<br />

Sample event triggers are provided in:<br />

/data/triggers/scripts/samples<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>.<br />

Sample Scripts<br />

Under /data/triggers/scripts, the /samples directory includes the<br />

following event trigger scripts:<br />

Script Name Function of Script<br />

Break Lock<br />

breakLockNotification.js<br />

Change Package Notification<br />

changePackageNotification.js<br />

Deploy Request Notification<br />

deployRequestNotification.js<br />

Sends e-mail if one user removes or downgrades lock held by<br />

another user. E-mail notifies lock holder and provides information:<br />

file and revision lock broken on, full path of file archive, server lock<br />

broken on, user who broke lock, and whether lock downgraded or<br />

removed.<br />

Script set on Revision.unlock.post event.<br />

Sends e-mail to change package creator, reviewer, or watcher<br />

during a change package review (see “Change Package Review Email<br />

Notification” on page 319).<br />

Sends e-mail to administrators for deploy target that deploy<br />

request sent to.<br />

Script set on Project.deployRequestStateChange.post<br />

event.<br />

Script used for <strong>MKS</strong> Deploy. For more information, see<br />

<strong>MKS</strong> Deploy 2007 <strong>Administration</strong> <strong>Guide</strong>.<br />

353


Chapter 9: Event Triggers<br />

Script Name Function of Script<br />

Deploy Target Notification<br />

deployTargetNotification.js<br />

Dynamic Updating of Linked Member<br />

Revisions<br />

ClientLink.js<br />

Enforce Revision Description<br />

enforceRevisionDescription.js<br />

Enforce Tabs<br />

enforceTabs.js<br />

Force Merge<br />

forceMerge.js<br />

Metrics<br />

metrics.js<br />

Project Mirror Tree<br />

mirrorTree.js<br />

354<br />

When deploy target status changes to offline, sends e-mail to<br />

administrators for deploy target.<br />

Script set on<br />

Project.deployTargetConnectionStatusChange.post<br />

event.<br />

Script used for <strong>MKS</strong> Deploy. For more information, see<br />

<strong>MKS</strong> Deploy 2007 <strong>Administration</strong> <strong>Guide</strong>.<br />

Dynamically updates linked member revisions (member revisions<br />

specified using -rlink: symbolic member revision rule). For<br />

more information on using member rule, see “Updating a Member’s<br />

Revision” and “Setting a Member Rule” in <strong>MKS</strong> Source 2007 User<br />

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

Enforces revision description of length greater than 0 on checkin.<br />

Scans file during checkin to verify whether indentation uses tabs or<br />

spaces (assuming tab stops set every eight spaces).<br />

Scan looks for lines that start with eight spaces. To avoid confusion<br />

for spaces contained within quoted strings, contents of line not<br />

examined. Files ending in .java , .c, or .cpp examined; others<br />

silently accepted.<br />

Note: Script does not have correct results if program includes<br />

strings ending in backslash and continuing on next line with leading<br />

spaces; however, such entries generally discouraged as poor<br />

programming practice.<br />

Stops user from performing checkin if file in Sandbox not same as<br />

revision being checked in. Use script when not using strict locking<br />

to prevent overwriting member revision.<br />

Script set on Member.checkIn.pre event.<br />

Calculates metrics for project. For more information, see “Using<br />

Project Metrics” on page 257.<br />

Maintains mirror of project files in destination specified by<br />

mirrorRoot variable. Script useful for keeping document root of<br />

Web server up to date.<br />

Mirror project tree event trigger does not actually mirror files from<br />

Sandbox in that it removes all carriage returns from your file and<br />

uses line feeds instead.<br />

Note: Script uses native line terminator. To use different line<br />

terminator, modify script.<br />

Script set for following events in global.events or<br />

project.events file:<br />

Project.dropMember.post<br />

Project.addMember.post<br />

Member.checkIn.post<br />

Member.rename.post


Running Custom Java Code<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

You can also use server-side event triggers to run custom Java code from a script.<br />

Your custom Java code can be put into the /data/java/classes directory<br />

as individual class files or packaged as one or more JAR files in the data/java/jars<br />

directory. You can use both directories at the same time if you want some classes packaged<br />

up and 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 />

Additional Information<br />

Additional information on server-side event triggers is provided in the installed Javadocs in:<br />

/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 />

Configuring Client-side Event 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 />

commands that operate on directories, projects, Sandboxes, or change packages.<br />

355


Chapter 9: Event Triggers<br />

356<br />

Client-side triggers can be configured in the following file on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>:<br />

/config/policies/si.policy<br />

where is the path to the directory where you installed the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong>.<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 />

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 si.policy file on the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> 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.<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:


si.trigger..group=<br />

for example:<br />

si.trigger.merge_post.group=BuildTeam<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<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 project commands that operate on members, including commands launched from the<br />

<strong>MKS</strong> Source Web client. The second table lists the applicable member commands.<br />

NOTE The si echo command is available for echoing strings to the GUI.<br />

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 />

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 />

357


Chapter 9: Event Triggers<br />

358<br />

Sample Client-side Triggers<br />

This section provides examples of client-side event triggers that you can use for:<br />

displaying Sandbox information<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<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


posting a revision description reminder<br />

launching a text editor<br />

posting a notification reminder to a specified group<br />

confirming the presence of specific files in a Sandbox<br />

Displaying Sandbox Information<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

The following sample trigger—ALpre—runs a KornShell script that displays Sandbox<br />

information prior to the addition of a label and, in this way, helps users to assign appropriate<br />

label names.<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.AddLabel.pre=ALpre<br />

si.trigger.ALpre.command=sh -w -c "si sandboxinfo -S $<strong>MKS</strong>SI_SANDBOX"<br />

Posting Revision Description Reminder<br />

This sample client-side trigger—CIpre—runs a KornShell script that prompts the user to add<br />

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 />

Launching Text Editor<br />

This sample client-side trigger prompts users to update a member list text file whenever a<br />

new member is added to the project. When the member is successfully added to the project, a<br />

post event trigger launches the vi text editor and opens the text file so that the user can enter<br />

the required information.<br />

For example, an administrator may want users to record the date and purpose information in<br />

a text file each time a new member is added to the project. To do this, the administrator sets a<br />

client-side trigger that posts a reminder for users each time an add member operation is<br />

initiated. Upon starting the add member operation, the trigger posts a message such as:<br />

After adding the project member, please update the NewMembers.txt<br />

file with the date and purpose of the new member.<br />

Upon successful completion of the add member operation, the trigger opens the<br />

NewMembers.txt file in a vi text editor. Users enter the date and purpose information for the<br />

newly added member and then save the text file.<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 />

359


Chapter 9: Event Triggers<br />

360<br />

si.AddMembers.pre=AMpre<br />

si.trigger.AMpre.command=sh -w -c 'echo After adding the project<br />

member, please update the NewMembers.txt file with the date and<br />

purpose of the new member.'<br />

si.AddMembers.post=AMpost<br />

si.trigger.AMpost.command=sh -w -c 'vi c:/NewMembers.txt'<br />

Posting Notification Reminder<br />

This sample client-side trigger—CIMpost—posts a reminder to notify team members when<br />

significant changes are checked in to a member revision. In this way, the administrator can<br />

endorse increased communication between team members, and team members are kept up to<br />

date on project work. This type of trigger is effective when set to a checkin operation.<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.post=CIMpost<br />

si.trigger.CIMpost.command=sh -w -c 'echo If you have made<br />

significant changes to this project member, please notify your team<br />

members about the changes.'<br />

This client-side trigger can also be configured to post a reminder only for a specified group.<br />

The following example shows a client-side trigger configured to post a reminder only to<br />

those people working in a development group:<br />

si.CheckInMembers.post=CIMpost<br />

si.trigger.CIMpost.command=sh -w -c 'echo If you have made major<br />

changes to this member, please notify your team members regarding<br />

those changes.'<br />

si.trigger.CIMpost.group=Development<br />

NOTE The specified group must be a valid group on your system.<br />

Confirming Files in Sandbox<br />

This trigger confirms that each .C file in the user’s Sandbox has a corresponding .OBJ file,<br />

and that each .JAVA file has a corresponding .CLASS file. The check only confirms the<br />

presence of the files and does not validate any compiling of the associated files.<br />

NOTE <strong>MKS</strong> Toolkit® is required to run this trigger.<br />

To configure the trigger for the development group, the following information is added to<br />

the si.policy file on the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> operating on a Windows network drive:<br />

si.CheckInMembers.pre=CIMpreFiles<br />

si.trigger.CIMpreFiles.command=sh //server/scripts/trigger.ksh<br />

si.trigger.CIMpreFiles.group=Development<br />

Sample code for the trigger.ksh script is:


function display {<br />

case "$<strong>MKS</strong>SI_UI" in<br />

web)<br />

# Not supported<br />

;;<br />

cli)<br />

sig echo --presentername "$<strong>MKS</strong>SI_PRESENTER"<br />

sig echo --presentername "$<strong>MKS</strong>SI_PRESENTER" "$*"<br />

;;<br />

gui|*)<br />

}<br />

sig mks.ic.common.commands.EchoCommand -g "$*"<br />

;;<br />

esac<br />

if [ "$<strong>MKS</strong>SI_WINDOW" != "trigger" ]<br />

then<br />

display "Improper call of script $0"<br />

exit 1<br />

fi<br />

#<br />

# Actual trigger code<br />

#<br />

if [ "$<strong>MKS</strong>SI_WORKINGFILE" = "" ]<br />

then<br />

display "Working file does not exist."<br />

exit 1<br />

fi<br />

case "$<strong>MKS</strong>SI_WORKINGFILE" in<br />

*.c)<br />

obj="${<strong>MKS</strong>SI_WORKINGFILE%%.c}.obj"<br />

;;<br />

*.java)<br />

obj="${<strong>MKS</strong>SI_WORKINGFILE%%.java}.class"<br />

;;<br />

*)<br />

exit 0<br />

;;<br />

esac<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

if [ ! -f "$obj" ]<br />

then<br />

display "The file $obj does not exist. Before \ checking in, make<br />

sure that you have compiled the \ object in your sandbox."<br />

exit 1<br />

fi<br />

exit 0<br />

361


Chapter 9: Event Triggers<br />

362<br />

To add client-side trigger information to the si.policy file<br />

1 From the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, open the<br />

<strong>MKS</strong> Source directory tree, and highlight Policies. The Global Policies section displays in<br />

the right 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 />

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 />

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.


Environment Variable Function<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<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 />

project or Sandbox for 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.p<br />

j<br />

<strong>MKS</strong>SI_PROJECT=server-path-to-project <strong>MKS</strong>SI_PROJECT set to server path to project. Sample<br />

output for server path to 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 />

project variant. Sample output for operation running for<br />

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<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 project.<br />

Sample output for 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 />

363


Chapter 9: Event Triggers<br />

364<br />

Sample Configuration Using Environment Variables<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 project, the trigger opens the member working file in a vi<br />

text editor:<br />

si.AddMembers.post=AMpost<br />

si.trigger.AMpost.command=sh -c "vi $<strong>MKS</strong>SI_WORKINGFILE"<br />

Modifying <strong>MKS</strong> <strong>Integrity</strong> Item Fields<br />

To integrate an <strong>MKS</strong> Source change package state with an <strong>MKS</strong> <strong>Integrity</strong> item state, you can<br />

configure <strong>MKS</strong> Source event trigger scripts to invoke <strong>MKS</strong> <strong>Integrity</strong> event trigger scripts.<br />

More specifically, you can automatically modify <strong>MKS</strong> <strong>Integrity</strong> item field values when a<br />

<strong>MKS</strong> Source event occurs.<br />

The following examples show how you can enhance change package centered workflow<br />

using this functionality:<br />

If a change package is accepted, the state of the corresponding item is automatically<br />

moved to Code Review Done.<br />

If a change package is rejected, the state of the corresponding item is automatically<br />

moved back to In Development.<br />

If you enforce change package reviews, an <strong>MKS</strong> Source close change package trigger<br />

automatically changes the state of the related item to Development Done.<br />

A submit change package trigger prevents a change package from being submitted until<br />

the Reviewer field is filled out.<br />

To accommodate the use of dynamic parameters in event triggers, methods have been added<br />

to the following Beans (for more information on the methods for each Bean, consult the Event<br />

Trigger Java Documentation):<br />

ScriptParametersBean obtains static configuration arguments set up by the script<br />

author when the trigger was created.<br />

SI Script<strong>Server</strong>sBean exposes methods that allow you to get the<br />

ScriptParametersBean, and it also invokes an <strong>MKS</strong> <strong>Integrity</strong> trigger with the given<br />

populated ScriptParametersBean. After the <strong>MKS</strong> <strong>Integrity</strong> trigger finishes running,<br />

the <strong>MKS</strong> Source script obtains another instance of ScriptParametersBean that<br />

contains any return values that the <strong>MKS</strong> <strong>Integrity</strong> trigger script may have set.


<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

IM Script<strong>Server</strong>sBean allows you to get the invocation arguments in addition to the<br />

configuration parameters (an instance of Script<strong>Server</strong>Bean).<br />

NOTE Dynamic invocation arguments are not defined or exposed in the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong> Client, since these are the concrete arguments that<br />

scripts obtain from the CLI or from <strong>MKS</strong> Source (when <strong>MKS</strong> Source invokes an<br />

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

The im runtrigger command also allows you to specify invocation arguments to manually<br />

run scheduled triggers. The data types that can be passed to the <strong>MKS</strong> <strong>Integrity</strong> trigger<br />

include integers, floats, strings, Booleans, Java dates, and arrays of these. These dynamic<br />

arguments are passed to the triggers in addition to any static configuration parameters that<br />

may have been set up when the trigger was created.<br />

where<br />

im runtrigger --invocationArgs=key1=value1<br />

key=value is an invocation argument for the manually scheduled triggers. For example,<br />

the following could be passed as arguments:<br />

issueID=item ID is the ID of the <strong>MKS</strong> <strong>Integrity</strong> item that you want to make changes<br />

to<br />

field=item field is the field of the <strong>MKS</strong> <strong>Integrity</strong> item that you want to make<br />

changes to<br />

arg=value is the value that you want to set field=item field to<br />

trigger is the <strong>MKS</strong> <strong>Integrity</strong> trigger created to use the script<br />

Example<br />

NOTE You cannot delimit the invocation arguments with commas. You must specify<br />

the --invocationArgs option additional times as necessary.<br />

Within the main body of code, the following <strong>MKS</strong> Source script calls an <strong>MKS</strong> <strong>Integrity</strong> event<br />

trigger called “test”, using several change package events to automate change package<br />

workflow:<br />

var environment = bsf.lookupBean("siEnvironmentBean");<br />

var server = bsf.lookupBean("si<strong>Server</strong>Bean");<br />

var eventID = environment.getEventID();<br />

var eventType = environment.getEventType();<br />

var imArgs;<br />

var invocArgs = server.getInvocationArgumentsBean();<br />

var argsBean;<br />

365


Chapter 9: Event Triggers<br />

366<br />

var cpBean;<br />

// Boolean Array to control aspects of the IM Trigger<br />

// 0:Log Messages 1:Run Equivalent tests 2:Log Data Type Variables<br />

var testControlArray = [true,true,false];<br />

// long data variables for testing.<br />

var longTypeTest = new java.lang.Long(999999).longValue();<br />

var longArrayTypeTest = [new<br />

java.lang.Long(-922337203).longValue(),new<br />

java.lang.Long(999999).longValue(),new<br />

java.lang.Long(92233720).longValue()];<br />

// double data variables for testing.<br />

var doubleTypeTest = 19.73;<br />

var doubleArrayTypeTest =<br />

[-494065645841246544.1973,19.73,179769313486231570.1973];<br />

// int data variables for testing.<br />

var intArrayTypeTest = [-2147483648,1973,2147483647];<br />

try{<br />

invocArgs.setStringParameter("msgField","Notes");<br />

printToLog("\nEvent : "+eventID);<br />

printToLog("\nEvent Type: "+eventType);<br />

// Submitted change package event<br />

if (eventID.equals("submitChangePackage")) {<br />

argsBean = bsf.lookupBean<br />

("siSubmitChangePackageArgumentsBean");<br />

invocArgs.setDateParameter("submitDate",java.util.Date());<br />

invocArgs.setDateParameter("startDate",java.util.Date(java.util.<br />

Date().getTime()+(7*24*60*60*1000)));<br />

printToLog("Java Object Date :<br />

"+java.util.Date(java.util.Date().getTime()+(7*24*60*60*1000)).<br />

toString());<br />

printToLog("Argument Object Date :<br />

"+invocArgs.getDateParameter("startDate").toString());<br />

invocArgs.setDateParameter("finishDate",java.util.Date(java.util.<br />

Date().getTime()+(365*24*60*60*1000)));<br />

invocArgs.setStringParameter("nextState","Development Done");


Accepted change package event<br />

} else if (eventID.equals("acceptChangePackage")) {<br />

argsBean = bsf.lookupBean<br />

("siAcceptChangePackageArgumentsBean");<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

invocArgs.setDateParameter("acceptDate",java.util.Date());<br />

invocArgs.setStringParameter("nextState","Built");<br />

// Rejected change package event<br />

} else if (eventID.equals("rejectChangePackage")) {<br />

argsBean = bsf.lookupBean<br />

("siRejectChangePackageArgumentsBean");<br />

invocArgs.setDateParameter("rejectDate",java.util.Date());<br />

invocArgs.setStringParameter("nextState","Development");<br />

// Closed change package event<br />

} else if (eventID.equals("closeChangePackage")) {<br />

argsBean = bsf.lookupBean<br />

("siCloseChangePackageArgumentsBean");<br />

testControlArray[1] = false;<br />

// Commit failed change package event<br />

} else if (eventID.equals("commitChangePackage")) {<br />

argsBean = bsf.lookupBean<br />

("siCommitChangePackageArgumentsBean");<br />

testControlArray[1] = false;<br />

} else if (eventID.equals("discardChangePackage") ){<br />

argsBean = bsf.lookupBean<br />

("siDiscardChangePackageArgumentsBean");<br />

testControlArray[1] = false;<br />

} else if (eventID.equals("discardChangePackageEntry") ){<br />

argsBean = bsf.lookupBean<br />

("siDiscardChangePackageEntryArgumentsBean");<br />

}else {<br />

}<br />

testControlArray[1] = false;<br />

testControlArray[2] = true;<br />

printToLog("Event not recognized.");<br />

invocArgs.setStringParameter("type",eventID);<br />

367


Chapter 9: Event Triggers<br />

368<br />

cpBean = server.getChangePackageBean<br />

(argsBean.getChangePackageID());<br />

var mapInvocArgs = invocArgs.getParameters();<br />

mapInvocArgs.put("entriesArray",convertEntryListToStringArray<br />

(cpBean.getEntries()));<br />

invocArgs.setParameters(mapInvocArgs);<br />

invocArgs.setStringParameter("cpID",argsBean.getChangePackageID());<br />

invocArgs.setIntParameter("issueID",getIssueID(cpBean.getID()) );<br />

invocArgs.setBooleanArrayParameter("testControl",testControlArray);<br />

if(testControlArray[2] == true){<br />

invocArgs.setLongParameter("longTypeTest",longTypeTest);<br />

invocArgs.setLongArrayParameter("longArrayTypeTest",<br />

longArrayTypeTest);<br />

invocArgs.setDoubleParameter("doubleTypeTest",doubleTypeTest);<br />

invocArgs.setDoubleArrayParameter("doubleArrayTypeTest",<br />

doubleArrayTypeTest);<br />

invocArgs.setIntArrayParameter("intArrayTypeTest",intArrayTypeTest);<br />

}<br />

// Call "test" trigger with Arguments set.<br />

imArgs = server.runIMTrigger("test",invocArgs);<br />

var modDate = imArgs.getDateArrayParameter("refDates");<br />

printToLog("Issue Modified : "+modDate[1].toString());<br />

}catch(e){<br />

printToLog(e);<br />

}<br />

The main body of code for the test script is as follows:<br />

var environment = bsf.lookupBean("siEnvironmentBean");<br />

var server = bsf.lookupBean("im<strong>Server</strong>Bean");<br />

var paramArgs = server.getInvocationArguments();<br />

var retInvocArgs = server.getReturnValueBean();<br />

var argsBean;<br />

var testControlArray =<br />

paramArgs.getBooleanArrayParameter("testControl");<br />

if (paramArgs.contains("issueID")){


}else{<br />

}<br />

var CP_ID = paramArgs.getStringParameter("cpID");<br />

abort("\n****\nIssue ID not supplied.\n****\n");<br />

var msgField = paramArgs.getStringParameter("msgField");<br />

var msg = "\n";<br />

// Array of objects<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

// 0:Create Date 1:Modified Date 2:Start Date 3:Finish Date<br />

var dateArray = new Array();<br />

try{<br />

var cpDeltaBean =<br />

server.getIssueDeltaBean(paramArgs.getIntParameter("issueID"));<br />

if(cpDeltaBean.isSecondaryIssueChange()){<br />

printToLog("Secondary Issue Delta.");<br />

var type = paramArgs.getStringParameter("type");<br />

// Submitted change package event<br />

if (type.equals("submitChangePackage") && (testControlArray[1]<br />

== true)) {<br />

msg += "\nSubmitted Change Package "+CP_ID;<br />

msg += " [ "+paramArgs.getDateParameter("submitDate")+" ]";<br />

if(paramArgs.contains("entriesArray")){<br />

var tmpStrArray =<br />

paramArgs.getParameters().get("entriesArray");<br />

msg += "\nSubmitted : \n"<br />

+convertArrayToString(tmpStrArray);<br />

cpDeltaBean.setFieldValue("State",paramArgs.getStringParameter<br />

("nextState"));<br />

cpDeltaBean.setFieldValue("Start Date",<br />

paramArgs.getDateParameter("startDate"));<br />

cpDeltaBean.setFieldValue("Finish Date"<br />

,paramArgs.getDateParameter("finishDate"));<br />

// Accepted change package event<br />

} else if (type.equals("acceptChangePackage") &&<br />

(testControlArray[1] == true)) {<br />

msg += "\nAccepted Change Package"+CP_ID;<br />

369


Chapter 9: Event Triggers<br />

370<br />

msg += " [ "+paramArgs.getDateParameter("acceptDate")+" ]";<br />

if(paramArgs.contains("entriesArray")){<br />

var tmpStrArray =<br />

paramArgs.getParameters().get("entriesArray");<br />

msg += "\nCommitted : \n"<br />

+convertArrayToString(tmpStrArray);<br />

cpDeltaBean.setFieldValue("State",paramArgs.getStringParameter<br />

("nextState"));<br />

// Rejected change package event<br />

} else if (type.equals("rejectChangePackage") &&<br />

(testControlArray[1] == true)) {<br />

msg += "\nRejected Change Package"+CP_ID;<br />

msg += " [ "+paramArgs.getDateParameter("rejectDate")+" ]";<br />

if(paramArgs.contains("entriesArray")){<br />

var tmpStrArray =<br />

paramArgs.getParameters().get("entriesArray");<br />

msg += "\nRejected : \n"<br />

+convertArrayToString(tmpStrArray);<br />

cpDeltaBean.setFieldValue("State",paramArgs.getStringParameter<br />

("nextState"));<br />

// Closed change package event<br />

} else if (type.equals("closeChangePackage") &&<br />

(testControlArray[1] == true)) {<br />

msg += "\nClosed Change Package "+CP_ID;<br />

// Commit failed change package event<br />

} else if (type.equals("commitChangePackage") &&<br />

(testControlArray[1] == true)){<br />

msg += "\nCommitted Change Package "+CP_ID;<br />

} else if (type.equals("discardChangePackage") &&<br />

(testControlArray[1] == true)){<br />

msg += "\nDiscarded Change Package "+CP_ID;<br />

} else if (type.equals("discardChangePackageEntry") &&<br />

testControlArray[1]){<br />

}else {<br />

msg += "\nDiscarded Change Package Entries "+CP_ID;


printToLog("Event received not recognized.");<br />

cpDeltaBean.setFieldValue(msgField,msg);<br />

if(testControlArray[0]){<br />

printToLog(msg);<br />

<strong>Server</strong>-side <strong>MKS</strong> Source Event Triggers<br />

dateArray[0] = cpDeltaBean.getNewFieldValue("Created Date");<br />

dateArray[1] = cpDeltaBean.getNewFieldValue("Modified Date");<br />

dateArray[2] = cpDeltaBean.getNewFieldValue("Start Date");<br />

dateArray[3] = cpDeltaBean.getNewFieldValue("Finish Date");<br />

retInvocArgs.setDateArrayParameter("refDates",dateArray);<br />

retInvocArgs.setBooleanParameter("result",true);<br />

if(testControlArray[2]){<br />

var longArray =<br />

paramArgs.getLongArrayParameter("longArrayTypeTest");<br />

var longType = paramArgs.getLongParameter("longTypeTest");<br />

printToLog("long Data Type :"+longType);<br />

printToLog("long Data Type Min :"+longArray[0]);<br />

printToLog("long Data Type Max :"+longArray[2]);<br />

var doubleType =<br />

paramArgs.getDoubleParameter("doubleTypeTest");<br />

var doubleArray =<br />

paramArgs.getDoubleArrayParameter("doubleArrayTypeTest");<br />

printToLog("double Data Type :"+doubleType);<br />

printToLog("double Data Type Min :"+doubleArray[0]);<br />

printToLog("double Data Type Max :"+doubleArray[2]);<br />

var intArray =<br />

paramArgs.getIntArrayParameter("intArrayTypeTest");<br />

printToLog("double Data Type :"+intArray[1]);<br />

printToLog("double Data Type Min :"+intArray[0]);<br />

printToLog("double Data Type Max :"+intArray[2]);<br />

server.setReturnValue(retInvocArgs);<br />

}catch(e){<br />

}<br />

printToLog(e);<br />

371


Chapter 9: Event Triggers<br />

372


A PPENDIX<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 374<br />

“Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as Application” on page 377<br />

“Differencing <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Properties Files” on page 378<br />

“<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logs” on page 379<br />

“<strong>MKS</strong> <strong>Integrity</strong> Client Logs” on page 379<br />

“<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logging Levels” on page 380<br />

“Miscellaneous Logging Properties” on page 381<br />

“FLEXnet Logs” on page 384<br />

“Dr. Watson Logs” on page 384<br />

“Creating Integrations Log” on page 385<br />

“si diag” on page 386<br />

“im diag” on page 387<br />

“runstacktrace” on page 387<br />

“mksis” on page 388<br />

“isutil” on page 389<br />

“Starting <strong>Server</strong> in Safe Mode” on page 390<br />

“Troubleshooting Database Repository” on page 391<br />

“Troubleshooting Kerberos and Kerberos Single Sign-On” on page 392<br />

“Troubleshooting <strong>MKS</strong> Source Reporting” on page 394<br />

373


Appendix A: Troubleshooting<br />

Gathering Important Information<br />

374<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 30)<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 />

Gathering Important Information<br />

/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 />

Browse to http://:. The version and build number appear at the<br />

bottom of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> home page.<br />

Right click \server\mks\bin\neuron.exe, select<br />

Properties, 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 <strong>MKS</strong> Source)<br />

im about (for <strong>MKS</strong> <strong>Integrity</strong>)<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 or<br />

.<br />

where<br />

is the directory that the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> is<br />

installed in<br />

is the directory that the <strong>MKS</strong> <strong>Integrity</strong> Client is<br />

installed in<br />

375


Appendix A: Troubleshooting<br />

376<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> 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 />

\log\server.log<br />

2 Look for lines of the following form:<br />

INFO [<strong>Integrity</strong><strong>Server</strong>] GENERAL(0): Listening on clear port<br />

<br />

INFO [<strong>Integrity</strong><strong>Server</strong>] ApplicationState(0): <strong>Integrity</strong> <strong>Server</strong><br />

(Build:, Service Pack: ) started<br />

where 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 />

<br />

where 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 379) 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


Is FLEXnet <strong>Server</strong> Running?<br />

On Windows<br />

Running <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> as Application<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 />

\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.<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.macrovision.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 />

377


Appendix A: Troubleshooting<br />

378<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<br />

\bin, and typing the following:<br />

/bin/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 \bin and type the<br />

following:<br />

/bin/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 388.<br />

5 To display a thread dump, press CTRL+BREAK. This only displays what is happening at<br />

the exact moment. So you may have to press CTRL+BREAK several times to determine<br />

how 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 />

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

Files<br />

If you change properties files and make backup copies, differencing changed properties files<br />

against the backup copies can be useful in diagnosing server problems.<br />

NOTE <strong>MKS</strong> recommends that you make backup copies of the properties files located<br />

in \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.


<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> Logs<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 />

\log\server.log records server errors and events.<br />

A new log is automatically started after the previous log reaches 4 MB. Versions of<br />

server.log are named incrementally, for example, server.log.1, server.log.2 ...<br />

server.log.n. No more than 25 previous server.log versions are stored.<br />

\uninstall\.com.zerog.registry.xml records<br />

all the activities that occurred during the installation of the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>.<br />

\log\dbmigration.log is created when a database<br />

is migrated, for example, during an <strong>MKS</strong> <strong>Integrity</strong> upgrade. The output displays<br />

database version information, error messages, and SQL statements run against the<br />

database as part of the migration process.<br />

\log\dbcreation.log is created when a new<br />

database is created during the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> install. The output displays<br />

database version information, error messages, and SQL statements run against the<br />

database as part of the database creation process.<br />

\hs_err_pid*.err typically appears if a Java error<br />

occurs, causing the server to stop running. These files are generated by the Java Virtual<br />

Machine (JVM) and consist of a stack trace at the time the server stops running.<br />

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

\bin\<strong>Integrity</strong>Client.log is the main<br />

<strong>MKS</strong> <strong>Integrity</strong> Client log file. It logs information messages, warnings, and errors.<br />

\uninstall\.com.zerog.registry.xml records<br />

all activities that occurred during the <strong>MKS</strong> <strong>Integrity</strong> Client installation.<br />

379


Appendix A: Troubleshooting<br />

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

380<br />

The \config\properties\logger.properties file<br />

allows you to adjust the level of logging information presented by the server. Ten (10) is the<br />

highest level of logging, and zero (0) disables logging.<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. The <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> must be restarted after each change. The logging output displays in<br />

server.log file.<br />

For example, you can adjust the level of logging information for the following property:<br />

#<br />

# SI transaction logging for user operations.<br />

# e.g. To enable logging of SI transactions for user "jdoe":<br />

# mksis.logger.message.includeCategory.TRANSACTION-jdoe=10<br />

#<br />

#mksis.logger.message.includeCategory.TRANSACTION-username=10<br />

#<br />

Client Logging Levels<br />

To increase the level of logging on the <strong>MKS</strong> <strong>Integrity</strong> Client, add the following lines to<br />

\<strong>Integrity</strong>ClientSite.rc:<br />

#<br />

# Turn up logging.<br />

#<br />

<strong>Integrity</strong>Client.log.message.includeCategory.CACHE=1<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 />

<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.defaultFormat={2}({3})\: {4}\n<br />

<strong>Integrity</strong>Client.log.exception.defaultFormat={2} {4}\: {6}\n<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 />

#<br />

# You can log to the terminal<br />

#<br />

#logFileName=stdout<br />

#<br />

# You can specify a filename other than the default of


# \bin\<strong>Integrity</strong>Client.log.<br />

# Note the use of escaped backslashes<br />

#<br />

#logFileName=c:\\<strong>Integrity</strong>Client.log<br />

### 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 />

381


Appendix A: Troubleshooting<br />

382<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)<br />

--on is equivalent to --level=10 (logs all messages in this category)<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<br />

until <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> restarts. Additionally, option does not explicitly<br />

log debug exceptions. To log exceptions, open logger.properties,<br />

uncomment mksis.logger.exception.includeCategory.DEBUG,<br />

and set value to 10.<br />

SQL Logs all SQL commands to server.log. For example, if you view item,<br />

SELECT statement logged. When editing item, INSERT, UPDATE, and<br />

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<br />

verbose.<br />

SMTP Logs communication between <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> and SMTP server.


Category Description<br />

IM-NOTIFICATION Logs <strong>MKS</strong> <strong>Integrity</strong> e-mail notification.<br />

Miscellaneous Logging Properties<br />

ACL Logs permission checking to server.log. For example, add label<br />

command logs following:<br />

2007-08-16 13:45:17,140 INFO [mksis.<strong>Integrity</strong><strong>Server</strong>]<br />

ACL(5): 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<br />

command performed by a user, for example,<br />

si logging --category=SILIB-jdoe --on.<br />

SICI Provides communications between <strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source, and<br />

communications between <strong>MKS</strong> <strong>Integrity</strong> 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 <strong>MKS</strong> Requirements commands (rq). For information on available<br />

commands, see the <strong>MKS</strong> <strong>Integrity</strong> for Requirements Management<br />

Solution <strong>Guide</strong>.<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 />

im logging --category=value --level=value<br />

383


Appendix A: Troubleshooting<br />

384<br />

where<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 382.<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.macrovision.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.


Creating Integrations Log<br />

Logging can be set for IDE integrations, such as Sybase PowerBuilder.<br />

Creating Integrations Log<br />

1 Add the following lines to the \<strong>Integrity</strong>Client.rc file:<br />

integrations.debugLogFile=c\:\\\\<br />

integrations.debugLogLevel=5<br />

where \\ is the directory and log file name chosen by you.<br />

NOTE On Windows 2000, <strong>Integrity</strong>Client.rc is located in c:\Documents<br />

and Settings\. On Windows NT, <strong>Integrity</strong>Client.rc is<br />

located in c:\WINNT\profiles\.<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 />

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 />

385


Appendix A: Troubleshooting<br />

si diag<br />

386<br />

The si diag command displays license and heap information, outputs properties files, and<br />

can be used to reclaim the name of a dropped project.<br />

NOTE You must have the Admin<strong>Server</strong> or Debug<strong>Server</strong> ACL permission to run<br />

this command.<br />

From a command line, type:<br />

si diag --diag=value<br />

where value specifies the diagnostic name. Acceptable diagnostic values for value are as<br />

follows:<br />

Diagnostic Description<br />

backupdatabase a<br />

Backs up PointBase database to /backup.<br />

connections Displays list of all server connections. List includes user name, host name,<br />

port, and time connection established.<br />

collectsupportpackage a Allows you to assemble client/server logs and properties into compressed ZIP<br />

file (called support package). When support package assembled, you can<br />

e-mail to <strong>MKS</strong> Customer Care for further diagnosis.<br />

heap Performs garbage collection and displays memory in use, free memory, and<br />

total memory in bytes.<br />

licenses a<br />

Displays each type of license (<strong>MKS</strong> <strong>Integrity</strong>, <strong>MKS</strong> Source, seat, float) and<br />

user that has license currently 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 />

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 />

reclaimprojectname Reclaims project name specified in param option. You need to reclaim<br />

dropped project in RCS style repository to completely remove it from<br />

repository. Enables you to create or import project using same repository<br />

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.


Diagnostic Description<br />

param Specifies project path for project being reclaimed by reclaimproject<br />

option. Path case sensitive.<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 />

a Admin<strong>Server</strong> permission must be used. Admin permission not required.<br />

im diag<br />

im diag<br />

The im diag command also displays license and heap information, and outputs properties<br />

files.<br />

NOTE You must have the Admin<strong>Server</strong> or Debug<strong>Server</strong> ACL permission to run<br />

this command.<br />

From a command line, type:<br />

im diag --diag=value<br />

where value specifies the diagnostic name. Acceptable diagnostic values for value are as<br />

outlined for the si diag command.<br />

runstacktrace<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.<br />

To generate a stack trace, create a file called:<br />

/data/runstacktrace<br />

where is the path to the directory where you<br />

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 /bin/stacktrace file and writes all stack<br />

trace and date/time information to it.<br />

To stop generating stack traces, remove the runstacktrace file in the /data directory.<br />

387


Appendix A: Troubleshooting<br />

mksis<br />

388<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 /data/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 />

/bin/mksis[.bat]<br />

where is the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> installation directory.<br />

The following is the syntax for the command:<br />

mksis <br />

where 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 />

/config/mksservice.conf<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 390)<br />

start starts the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> service (Windows) or daemon (UNIX)<br />

stop stops the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> service (Windows) or daemon (UNIX)


isutil<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. The isutil utility is installed with the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> in the /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 />

aclexists tests whether the ACL table exists 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.<br />

cmdbmigrate migrates the <strong>MKS</strong> Source database repository tables to the latest version<br />

(database schema). No action is taken if the tables are already at the current schema<br />

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> Source, 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 />

imdbgetversion retrieves the current <strong>MKS</strong> <strong>Integrity</strong> database schema version.<br />

imdbmigrate migrates the <strong>MKS</strong> <strong>Integrity</strong> database tables to the current Schema.<br />

isutil<br />

389


Appendix A: Troubleshooting<br />

390<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 />

An example of isutil command usage is as follows:<br />

C:\Program Files\<strong>MKS</strong>\<strong>Integrity</strong><strong>Server</strong>\bin\isutil -c aclcreate<br />

Starting <strong>Server</strong> in Safe Mode<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 <strong>MKS</strong> Source or <strong>MKS</strong> <strong>Integrity</strong> 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 388). 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 />

/bin/mksis console safemode <br />

is the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> installation directory<br />

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 />

/config/mksservice.conf<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 />

2007 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 <strong>MKS</strong> Source, dropping a migrated project<br />

member and re-adding the member of the same name does not cause the member archive to<br />

branch. Instead, a new archive is created without the RCS directory. If you want to reuse the<br />

archive, add the member using the Add From Archive command (see the <strong>MKS</strong> Source 2007<br />

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 />

391


Appendix A: Troubleshooting<br />

392<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 />

<strong>MKS</strong> Source project names.<br />

IMPORTANT If the installer cannot alter an existing <strong>MKS</strong> <strong>Integrity</strong> database due to<br />

case mismatches, <strong>MKS</strong> <strong>Integrity</strong> and <strong>MKS</strong> Source will have to run in separate,<br />

named databases on separate <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 />

393


Appendix A: Troubleshooting<br />

394<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 <strong>MKS</strong> Source Reporting<br />

For clients to be able to run <strong>MKS</strong> Source reports, you must specify Microsoft Access as the<br />

report application in the \<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 <strong>MKS</strong> Source 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<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> Source.<br />

administrator The administrator installs and configures the <strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>,<br />

<strong>MKS</strong><strong>Integrity</strong>, and <strong>MKS</strong>Source. For<strong>MKS</strong><strong>Integrity</strong>, the administrator also installs the<br />

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

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

aggregate expression An inter-item or aggregate expression use aggregation functions,<br />

such as sum or average, to perform calculations against fields in a list of items. For<br />

example, using the sum(field) aggregation function in a report, you can add the<br />

Estimated Cost field in a list of Project items to produce a total estimated cost.<br />

aggregate function An aggregate function is only permitted when performing an<br />

aggregate operation, for example, using the sum function to add the expressions<br />

calculated against each item that the aggregation is running against.<br />

arithmetic function An arithmetic function can be applied in any computed expression<br />

type, for example, adding two field values and rounding the resulting value to the<br />

nearest integer.<br />

change package review A change package review is a review of changes by specified<br />

reviewers before the changes are committed to the server repository.<br />

change package reviewer A change package reviewer is a user specified by your<br />

administrator to review change packages containing members associated with specific<br />

projects. The reviewer may be individually specified or a member of a specified reviewer<br />

group. In the case of a reviewer group, any member of that group casts an accept or<br />

reject vote on behalf of the entire group.<br />

change package watcher A change package watcher is a user specified by your<br />

administrator who is notified when a reviewed change package is closed after being<br />

successfully committed to the repository. Change package watchers may be individually<br />

specified or a member of a specified watcher group.<br />

395


Appendix B: Glossary<br />

396<br />

change package A change package is a group of changes made by a single user that can be<br />

considered a logical unit of work. Only the creator of a change package may add entries to<br />

that change package. Change package entries are added when you specify a change package<br />

while performing member operations.<br />

charts Charts are graphs that present trends over time or distributions of the data in your<br />

project. Charts are based on the standard and custom fields of item types. Trend charts may<br />

be displayed as line graphs or bar graphs. Distribution charts may be displayed as pie graphs<br />

or bar graphs. Data may also be displayed in tabular form.<br />

command line interface (CLI) The CLI is a program that allows a user to enter keywords as<br />

instructions to a computer or device to perform specific tasks. (The MS-DOS® command<br />

prompt is an example of a CLI.) Results are typically output as simple text to the user’s<br />

terminal. More specifically, the CLI provides the means for you to enter <strong>MKS</strong> commands<br />

through a text-based interface. The primary use of the CLI is for scripting. The CLI is also<br />

useful for environments where no GUI is available.<br />

computed expression To perform calculations between fields, <strong>MKS</strong> <strong>Integrity</strong> uses<br />

computed expressions, similar to any expression you would find in a programming<br />

language. Using specific syntax, operators, functions, and operations, you can create simple<br />

or complex expressions that calculate field information in a single item or against a list of<br />

items.<br />

computed field A computed field allows you to perform calculations between multiple<br />

fields in an item, storing the result as a value in a read-only field (the computed field). Date,<br />

floating point, integer, logical and short text field types are the only field data types that can<br />

be configured as computed fields.<br />

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

following components: charts, reports, images, labels, and links to reports, queries and Web<br />

sites.<br />

drop (a project) To drop a project means that the project is no longer registered with the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Dropped projects can still be accessed as read-only from the Change<br />

Package and Locks views until the project is purged or reclaimed by your administrator.<br />

event trigger An event trigger is a block of code associated with a predefined event. The<br />

script performs a specified action and is executed whenever the event occurs. For example,<br />

you could set up an event trigger to run every time a user checks in a file.<br />

external information function An external information function can only operate against a<br />

single item and allows you to extract information from an item, for example, how many times<br />

the item has been in the Submit state.<br />

graphical user interface (GUI) A graphical user interface, or GUI, is a program interface that<br />

uses a number of visual components (such as icons, pointers, and pull-down menus) to<br />

execute commands. Working in a GUI allows the user to give instructions to the computer


Glossary<br />

without having to learn a specific command language. The <strong>MKS</strong> <strong>Integrity</strong> <strong>Administration</strong><br />

Client interface is a GUI designed for carrying out most administrative commands from a<br />

central location.<br />

importing (a project or member) Importing a project or member registers it with the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong>. Once a project or member is imported, <strong>MKS</strong> Source commands can be<br />

performed upon it.<br />

inter-item expression An inter-item or aggregate expression use aggregation functions, such<br />

as sum or average, to perform calculations against fields in a list of items. For example, using<br />

the sum(field) aggregation function in a report, you can add the Estimated Cost field in a<br />

list of Project items to produce a total estimated cost.<br />

intra-item expression An intra-item expression performs calculations between fields in a<br />

single item, storing the result in a computed field, for example, adding the QA Estimated<br />

Time and Development Estimated Time fields in a Feature item to produce a value in the Total<br />

Estimated Time field (the computed field).<br />

presentation template Presentation templates are customizable layouts for displaying items<br />

in <strong>MKS</strong> <strong>Integrity</strong>. <strong>MKS</strong> <strong>Integrity</strong>’s presentation template designer allows you to customize<br />

the layout and display of items in your <strong>MKS</strong> <strong>Integrity</strong> database. The template designer<br />

incorporates drag and drop functionality to help you create a custom layout for a selected<br />

item type.<br />

production server When migrating <strong>MKS</strong> <strong>Integrity</strong> administrative objects, the <strong>MKS</strong> <strong>Integrity</strong><br />

<strong>Server</strong> that users connect to is known as the production server.<br />

project administrator <strong>MKS</strong> <strong>Integrity</strong> project administrators are allowed to edit and view<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 In <strong>MKS</strong> <strong>Integrity</strong>, a project contains labels that help you sort and organize items in a<br />

hierarchical structure.<br />

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

The 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 />

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.<br />

reports In <strong>MKS</strong> <strong>Integrity</strong>, 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. In<br />

<strong>MKS</strong> Source, reports provide an analysis of projects, members, or individual archives.<br />

Reports and graphs can be printed or viewed on screen.<br />

397


Appendix B: Glossary<br />

398<br />

shared subproject A shared subproject is a subproject that is a member of more than one<br />

project. <strong>MKS</strong> Source allows you to share a subproject between two or more projects by<br />

referencing the original subproject. A shared subproject allows you to access common<br />

members across many projects. Shared subprojects are not required to be located within the<br />

same directory structure or project hierarchy.<br />

staging server For the purpose of migrating <strong>MKS</strong> <strong>Integrity</strong> administrative objects, the<br />

separate server for testing your configuration is called a staging server (while the<br />

<strong>MKS</strong> <strong>Integrity</strong> <strong>Server</strong> that users connect to is called the production server). It is possible to<br />

have two staging servers (a development and a test server) with a production server.<br />

state metrics Using external information functions in computed fields, you can generate<br />

state metrics. State metrics are useful for determining item responsiveness. For example, you<br />

could use the DaysInState(state-name) function in a computed expression to calculate<br />

how many days a Defect item was in the In Development state. The computed value is then<br />

stored in the computed field.<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.<br />

subproject <strong>MKS</strong> Source allows you to create large projects composed of smaller component<br />

projects. These smaller projects are known as subprojects. Subprojects behave in the same<br />

way as projects and can be accessed with most project and Sandbox commands.<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 <strong>MKS</strong> <strong>Integrity</strong> projects and types to a project administrator<br />

and type administrator.<br />

super reviewer A super reviewer is a user with permission to vote on change packages, but<br />

is not required to be a listed reviewer for the change package. Voting as a super reviewer<br />

overrides all other votes. For example, casting an accept vote as a super reviewer is sufficient<br />

for accepting the change package.<br />

text function A text function is used to perform text calculations with text and numeric<br />

fields, for example, using an item’s ID to create a computed field that calculates a unique<br />

identifier for an item, such as REQ-00001234.<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.<br />

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

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

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


Glossary<br />

ViewSet A ViewSet is a collection of views in a specific configuration that persists each time<br />

the user opens and closes the <strong>MKS</strong> <strong>Integrity</strong> Client. As an administrator, you have the ability<br />

to 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 dashboards<br />

workflow Each <strong>MKS</strong> <strong>Integrity</strong> item follows a workflow, the process established by your<br />

administrator to capture and track information during your software development cycle.<br />

Each item type can have its own set of states to advance through the development cycle. For<br />

example, a change request may go through the following states: submitted, work started,<br />

tested, reviewed, and closed. Items and their current states provide change management<br />

information necessary to support business decisions.<br />

399


Appendix B: Glossary<br />

400


Index<br />

A<br />

access keys<br />

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

admin migration<br />

copying database 152<br />

e-mail notification 151<br />

managing admin locks 154<br />

staging server startup 152<br />

testing IM configuration 153<br />

using admin locks 155<br />

wizard 147–160<br />

using 156<br />

admin object<br />

converting to 219<br />

references 220<br />

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

application window 12<br />

command line interface 41<br />

connecting to an <strong>Integrity</strong> <strong>Server</strong> 28<br />

disconnecting from an <strong>Integrity</strong> <strong>Server</strong> 29<br />

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

Change Package Types view 297<br />

Fields view 104<br />

Projects view 229<br />

States view 77<br />

Types view 82<br />

opening the interface 10<br />

preferences<br />

setting 37<br />

shutting down the interface 12<br />

administrator<br />

assigning 74–77<br />

described 4<br />

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

project 74, 240<br />

super 74<br />

type 93<br />

project<br />

assigning 241<br />

super 4<br />

role 5<br />

super, described 74<br />

type<br />

assigning 95<br />

aggregated function<br />

described 274<br />

aggregation expression<br />

described 271<br />

allow<br />

branching 89<br />

labels 89<br />

project backing 88<br />

time entries 88<br />

arithmetic function<br />

described 274<br />

arithmetic operators<br />

computed expression 271<br />

assessing process 70<br />

attachment data type<br />

described 107<br />

attachment size<br />

configuring in <strong>MKS</strong> <strong>Integrity</strong> 214<br />

Authorization <strong>Administration</strong><br />

preferences, setting 39<br />

B<br />

boolean operators<br />

computed expression 272<br />

branching<br />

enabling 89<br />

building block<br />

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

deleting 161<br />

C<br />

calculate<br />

computed field<br />

dynamic 286<br />

static 287<br />

state metrics 290<br />

capabilities, state-based 79, 100<br />

cell properties, default 177<br />

401


Index<br />

change package<br />

allowing 79, 80, 85, 100<br />

described 296, 315<br />

review process<br />

how it works 317<br />

type 296<br />

customizing 299<br />

viewing 303<br />

Change Package Types view<br />

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

<strong>Administration</strong> Client 297<br />

changing<br />

<strong>MKS</strong> Source event trigger resolution order<br />

353<br />

order of states 81<br />

character sets<br />

controlling 163<br />

chart<br />

described 214<br />

historical trends using computed fields<br />

287<br />

checkmark, tab 193<br />

choose<br />

groups 21<br />

<strong>MKS</strong> <strong>Integrity</strong> projects 22<br />

principals 21<br />

users 21<br />

client<br />

<strong>Administration</strong> 10<br />

<strong>Administration</strong> window 12<br />

logging<br />

HTTP messages 381<br />

client-side<br />

event triggers, <strong>MKS</strong> Source 355<br />

environment variables 362<br />

closing<br />

client 11<br />

collecting<br />

properties and log files 30<br />

command<br />

im logging 383<br />

si createproject 245<br />

si dropproject 250<br />

si import 249<br />

si importproject 247<br />

si logging 382<br />

command line interface<br />

<strong>Administration</strong> Client 41<br />

described 41<br />

common project<br />

potential problems 267<br />

402<br />

components<br />

<strong>MKS</strong> Source event trigger 347<br />

subproject 260<br />

computed expression<br />

described 269<br />

function classes 274<br />

group fields 274<br />

rules 271<br />

types 270<br />

user fields 274<br />

computed field<br />

charting historical trends 287<br />

computation times<br />

scheduling 290<br />

creating 284<br />

performance 293<br />

scalability 293<br />

security 292<br />

state metrics<br />

calculating 290<br />

static<br />

calculating 287<br />

conditions<br />

defining 41<br />

configuration management 244<br />

configuring<br />

attachment size, <strong>MKS</strong> <strong>Integrity</strong> 214<br />

preferences 32<br />

query limit<br />

group timeout 216<br />

maximum item count 216<br />

query limit, <strong>MKS</strong> <strong>Integrity</strong> 214<br />

subproject 263<br />

text searching, <strong>MKS</strong> <strong>Integrity</strong> 217<br />

connecting<br />

to an <strong>Integrity</strong> <strong>Server</strong> 28<br />

context based text search<br />

in <strong>MKS</strong> <strong>Integrity</strong> 217<br />

converting<br />

user objects to admin 219<br />

copy<br />

item tree 89<br />

copying<br />

item presentation template 196<br />

type 91<br />

create<br />

computed field 284<br />

state metrics 290<br />

creating<br />

a support package 30<br />

event triggers<br />

<strong>MKS</strong> <strong>Integrity</strong> 327


field 106<br />

field relationships 134<br />

item presentation template 181<br />

project 232<br />

using CLI 245<br />

state 78<br />

type 84<br />

workflow 140<br />

custom reports, <strong>MKS</strong> <strong>Integrity</strong> 201<br />

images 204<br />

report tags 205<br />

template files 203<br />

customize<br />

rich content fields 199<br />

customizing item presentation 170<br />

cells 187<br />

designer 171<br />

grids 186<br />

images 194<br />

labels 189<br />

logos 195<br />

previewing 179<br />

properties 174<br />

default cell 177<br />

default grid 176<br />

default text style 176<br />

general 174<br />

text style 175<br />

setting template 183<br />

D<br />

dashboard<br />

described 6<br />

data<br />

filtering 17<br />

searching 17<br />

data conversion<br />

computed expression 274<br />

data type<br />

attachment<br />

described 107<br />

date<br />

described 112<br />

field value attribute<br />

described 109<br />

floating point<br />

described 111<br />

group<br />

described 117<br />

integer<br />

described 108<br />

item backed picklist<br />

described 108<br />

logical<br />

described 112<br />

long text<br />

described 114<br />

phase<br />

described 120<br />

pick<br />

described 110<br />

query backed relationship<br />

described 121<br />

range<br />

described 122<br />

relationship<br />

described 117<br />

short text<br />

described 113<br />

SI project<br />

described 124<br />

user<br />

described 116<br />

database<br />

copying for admin migration 152<br />

date data type<br />

described 112<br />

date operations<br />

computed expression 273<br />

deactivating<br />

pick list values 130<br />

project 239<br />

default cell properties 177<br />

default grid properties 176<br />

default text style properties 176<br />

defining logical conditions 41<br />

deleting<br />

building block 161<br />

field 131<br />

field relationships 137<br />

item 161<br />

item presentation template 198<br />

project 237<br />

state 81<br />

type 92<br />

designing<br />

custom presentation template 170<br />

project 266–268<br />

subproject 266<br />

diagnostics<br />

client logging level 380<br />

Index<br />

403


Index<br />

differencing files 378<br />

environment information 374<br />

FLEXNet logs 384<br />

IDE log 385<br />

log files 379<br />

running server as application 377<br />

tools 386<br />

dialog box<br />

option prompts 33<br />

directory tree 243<br />

hierarchical structures 243<br />

disconnecting<br />

from an <strong>Integrity</strong> <strong>Server</strong> 29<br />

from server 11<br />

display<br />

type workflow 88<br />

display pane<br />

graphical user interface 15<br />

display pattern 27<br />

Dr. Watson logs 384<br />

drop project, described 249<br />

E<br />

ECMAScript 347<br />

editing<br />

field 129<br />

field relationships 137<br />

item presentation template 185<br />

project 235<br />

state 80<br />

type 90<br />

electronic signatures 218<br />

customizing triggers 218<br />

e-mail<br />

controlling character sets 163<br />

notification 5<br />

permission 163<br />

notification of admin lock break 151<br />

empty fields<br />

computed expression 272<br />

enable<br />

branching 89<br />

labels for items 89<br />

project backing 88<br />

time entries 88<br />

encrypted archives 246<br />

env.properties file 349<br />

environment information, for diagnostics 374<br />

environment variables<br />

<strong>MKS</strong> Source triggers 362<br />

404<br />

event<br />

in <strong>MKS</strong> Source 340<br />

event trigger<br />

client-side 355<br />

described 323<br />

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

adding script to library 338<br />

creating 327<br />

creating rule based change trigger<br />

327<br />

creating scheduled trigger 331<br />

creating time entry trigger 334<br />

defining rule based change trigger<br />

329<br />

deleting 336<br />

described 321, 324<br />

disable scheduled 333<br />

editing 336<br />

how to use 323<br />

managing 326<br />

planning 325<br />

post-event 325<br />

pre-created scripts 337<br />

pre-event 324<br />

resolution order 337<br />

rule based event 323<br />

running a scheduled trigger 335<br />

schedule event 323<br />

schedule frequency 333<br />

schedule query 333<br />

schedule running using CLI 333<br />

schedule running using GUI 335<br />

script library 337<br />

selecting scripts 330<br />

time entry event 323<br />

viewing 335<br />

writing 338<br />

<strong>MKS</strong> Source 340–355<br />

changing resolution order 353<br />

client-side 355<br />

components 347<br />

env.properties file 349<br />

event definition files 347<br />

event trigger scripts 347<br />

global context 346<br />

information 355<br />

member event 340<br />

planning 349, 350<br />

post-test 345<br />

pre-configured as enabled 348<br />

pre-test 345<br />

project context 346


project event 341<br />

properties file 347<br />

referencing Beans 350<br />

resolution 352<br />

revision event 341<br />

saving your script 351<br />

scripts 347<br />

sequence of operations 345<br />

server event 342<br />

si.triggers.disabled 348<br />

si.triggers.disableSubProjects 348<br />

si.triggers.enable 348<br />

si.triggers.environmentVariables 349<br />

si.triggers.events 348<br />

si.triggers.mail<strong>Server</strong> 349<br />

si.triggers.resolution 348<br />

si.triggers.resolutionOrder 349<br />

subproject 346<br />

triggers.scripts 349<br />

type 346<br />

updating global events definition<br />

template 352<br />

using JavaScript 345<br />

variable declared as JavaBeans 345<br />

writing 350<br />

external information function<br />

described 275<br />

F<br />

favorites<br />

selecting 26<br />

field<br />

computed<br />

creating 284<br />

creating 106<br />

deleting 131<br />

editing 129<br />

managing 102<br />

moving 132<br />

pick, multiple values 110<br />

rich content<br />

customizing 199<br />

setting field relevance 124<br />

viewing 130<br />

visibility 101<br />

field relationships<br />

creating 134<br />

default columns 124<br />

deleting 137<br />

editing 137<br />

managing 132<br />

field value attribute data type<br />

described 109<br />

Fields view<br />

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

<strong>Administration</strong> Client 104<br />

file<br />

importing 247<br />

importing using CLI 248, 249<br />

filter<br />

data 17<br />

groups 21<br />

<strong>MKS</strong> <strong>Integrity</strong> projects 22<br />

principals 21<br />

users 21<br />

finding<br />

properties and log files 30<br />

FLEXlm<br />

log files 384<br />

floating point data type<br />

described 111<br />

format<br />

numeric values 27<br />

function<br />

aggregate<br />

described 274<br />

arithmetic<br />

described 274<br />

external information<br />

described 275<br />

text<br />

described 274<br />

function classes<br />

computed expression 274<br />

FVA field<br />

described 109<br />

G<br />

general<br />

template properties 174<br />

graphical user interface<br />

described 10<br />

display pane 15<br />

menu bar 13<br />

shortcut menu 14<br />

status bar 16<br />

title bar 13<br />

toolbars 14<br />

tooltips 16<br />

tree pane 14<br />

Index<br />

405


Index<br />

workspace 16<br />

grid properties, default 176<br />

group<br />

deleting 161<br />

project permission 230<br />

selecting 21<br />

group data type<br />

described 117<br />

group fields<br />

computed expression 274<br />

H<br />

hide<br />

data 17<br />

I<br />

IBPL field<br />

described 108<br />

im diag<br />

command 387<br />

im logging command 383<br />

im recomputehistory command 287<br />

image, saving workflow 146<br />

images for reports 204<br />

importing<br />

files 247<br />

project<br />

using CLI 247<br />

viewset 50<br />

integer data type<br />

described 108<br />

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

logging level 380<br />

logs 379<br />

preferences<br />

setting 33<br />

version number 375<br />

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

connecting to 28<br />

disconnecting from 29<br />

logging levels 380<br />

version number 375<br />

intra-item expression<br />

described 270, 271<br />

is.properties file<br />

controlling character sets 163<br />

isutil<br />

command 389<br />

406<br />

item<br />

copying tree 89<br />

copying tree heirarhcy 89<br />

deleting 161<br />

linking with a project 237<br />

item backed picklist data type<br />

described 108<br />

item presentation template 170, 171<br />

cells 187<br />

copying 196<br />

creating 181<br />

deleting 198<br />

editing 185<br />

grids 186<br />

images 194<br />

labels 189<br />

logos 195<br />

previewing 179<br />

properties 174<br />

default cell 177<br />

default grid 176<br />

default text style 176<br />

general 174<br />

text style 175<br />

setting 183<br />

tabs 192<br />

viewing 197<br />

K<br />

kerberos<br />

troubleshooting 392<br />

L<br />

labels<br />

enabling 89<br />

launching<br />

the <strong>Administration</strong> Client 10<br />

limit<br />

query<br />

group timeout 216<br />

maximum item count 216<br />

lock<br />

managing admin 154<br />

using admin 155<br />

log files<br />

collecting 30<br />

Dr. Watson 384<br />

FLEXNet server 384<br />

for diagnostics 379


integrations 385<br />

<strong>Integrity</strong> Client 379<br />

logging<br />

HTTP messages 381<br />

levels<br />

<strong>Integrity</strong> Client 380<br />

<strong>Integrity</strong> <strong>Server</strong> 380<br />

<strong>MKS</strong> <strong>Integrity</strong> 383<br />

<strong>MKS</strong> Source 382<br />

logging on<br />

<strong>Administration</strong> Client 10<br />

logical conditions<br />

defining 41<br />

logical data type<br />

described 112<br />

logo<br />

adding to custom template 195<br />

long text data type<br />

described 114<br />

long text fields<br />

customizing 199<br />

M<br />

manage<br />

project metadata 237<br />

managing<br />

field 102<br />

creating 106<br />

editing 129<br />

moving 132<br />

viewing 130<br />

field relationships 132<br />

pick list values<br />

deactivating 130<br />

project 229<br />

creating 232<br />

deactivating 239<br />

deleting 237<br />

editing 235<br />

moving 237<br />

reparenting 237<br />

viewing 236<br />

state 77–81<br />

creating 78<br />

deleting 81<br />

editing 80<br />

metrics 81<br />

moving 81<br />

viewing 80<br />

type 82<br />

copying 91<br />

creating 84<br />

deleting 92<br />

editing 90<br />

moving 93<br />

repositioning 93<br />

viewing 91<br />

maximum item count, query timeout 216<br />

member<br />

event, in <strong>MKS</strong> Source 340<br />

importing 247<br />

importing using CLI 249<br />

importing using GUI 248<br />

menu bar<br />

graphical user interface 13<br />

messages<br />

HTTP-related 381<br />

metrics<br />

state 81<br />

creating 290<br />

tracking for projects 257<br />

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

attachment size 214<br />

custom reports 201<br />

images 204<br />

report tags 205<br />

template files 203<br />

e-mail notification 5<br />

event trigger<br />

creating rule based change trigger<br />

327<br />

creating scheduled trigger 331<br />

creating time entry trigger 334<br />

defining rule based change trigger<br />

329<br />

deleting 336<br />

described 321, 324<br />

disable scheduled 333<br />

editing 336<br />

how to use 323<br />

managing 326<br />

planning 325<br />

post-event 325<br />

pre-created scripts 337<br />

pre-event 324<br />

resolution 337<br />

rule based event 323<br />

running a scheduled trigger 335<br />

schedule event 323<br />

schedule frequency 333<br />

schedule query 333<br />

Index<br />

407


Index<br />

schedule running using CLI 333<br />

schedule running using GUI 335<br />

script library 337<br />

selecting scripts 330<br />

time entry event 323<br />

viewing 335<br />

printing views 30<br />

project administrator 74, 240<br />

query limit 214<br />

group timeout 216<br />

maximum item count 216<br />

setting up 4–7<br />

states<br />

described 77<br />

super administrator 74<br />

time entry<br />

allowing 79, 80, 100<br />

type administrator 93<br />

understanding 4–7<br />

using 4–7<br />

workflow 5<br />

workflow migration<br />

e-mail notification 151<br />

summary steps 148, 149<br />

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

access keys 16<br />

ACLs 39<br />

shortcut keys 16<br />

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

serial number 374<br />

<strong>MKS</strong> Source<br />

change package<br />

allowing 79, 80, 85, 100<br />

client-side triggers<br />

environment variables 362<br />

event 340<br />

event trigger 340–355<br />

client-side 355<br />

information 355<br />

member event 340<br />

planning 349, 350<br />

post-test 345<br />

pre-configured as enabled 348<br />

pre-test 345<br />

project context 346<br />

project event 341<br />

properties file 347<br />

referencing Beans 350<br />

resolution 352<br />

revision event 341<br />

408<br />

saving your script 351<br />

sequence of operations 345<br />

server event 342<br />

subproject 346<br />

type 346<br />

using JavaScript 345<br />

variable declared as JavaBeans 345<br />

writing 350<br />

event trigger property<br />

si.triggers.disabled 348<br />

si.triggers.disableSubProjects 348<br />

si.triggers.enable 348<br />

si.triggers.events 348<br />

si.triggers.resolution 348<br />

si.triggers.resolutionOrder 349<br />

si.triggers.scripts 349<br />

triggers.environmentVariables 349<br />

triggers.mail<strong>Server</strong> 349<br />

events definition file 347<br />

global event trigger 346<br />

project 244–250<br />

reporting<br />

troubleshooting 394<br />

subproject 260<br />

mksis<br />

command 388<br />

moving<br />

field 132<br />

project 237<br />

state 81<br />

type 93<br />

multiple servers<br />

configuring 35<br />

multiple value<br />

pick field 110<br />

N<br />

notification<br />

e-mail 5<br />

permission 163<br />

numeric values<br />

formatting 27<br />

O<br />

opening the <strong>Administration</strong> Client 10<br />

logging on 10<br />

organizing projects 243


P<br />

performance<br />

computed fields 293<br />

permission<br />

e-mail notification 163<br />

phase data type<br />

described 120<br />

pick data type<br />

described 110<br />

pick field<br />

allowing multiple values 110<br />

pick list values<br />

deactivating 130<br />

planning <strong>MKS</strong> Source event trigger<br />

performance 350<br />

pre- or post-event 349<br />

system security 349<br />

post-test <strong>MKS</strong> Source event trigger 345<br />

preferences<br />

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

setting 37<br />

Authorization <strong>Administration</strong><br />

setting 39<br />

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

setting 33<br />

server<br />

setting 35<br />

setting 32<br />

toolbar<br />

setting 37<br />

presentation template 170<br />

cells 187<br />

copying 196<br />

creating 181, 185, 197, 198<br />

described 171<br />

designer 171<br />

grids 186<br />

images 194<br />

labels 189<br />

logos 195<br />

previewing 179<br />

properties 174<br />

default grid 176<br />

general 174, 176, 177<br />

text style 175<br />

setting 183<br />

tabs 192<br />

presentation templates<br />

reports 201<br />

pre-test <strong>MKS</strong> Source event trigger 345<br />

principal<br />

selecting 21<br />

printing<br />

<strong>MKS</strong> <strong>Integrity</strong> views 30<br />

workflow 146<br />

process<br />

assessing 70<br />

production server<br />

installing and starting 150<br />

project 244–250, 257<br />

administrator<br />

assigning 241<br />

administrator, described 240<br />

administrator, <strong>MKS</strong> <strong>Integrity</strong> 240<br />

browsing <strong>MKS</strong> Source projects 25<br />

common 266<br />

creating 232<br />

deactivating 239<br />

deleting 161, 237<br />

designing 266<br />

directory 243<br />

editing 235<br />

event, in <strong>MKS</strong> Source 341<br />

linking with an item 237<br />

managing 229<br />

member<br />

sharing 265<br />

metadata<br />

managing 237<br />

moving 237<br />

organization 243<br />

permission 230<br />

reparenting 237<br />

restoring<br />

in CLI 251<br />

restoring to a previous checkpoint 250<br />

selecting <strong>MKS</strong> <strong>Integrity</strong> projects 22<br />

selecting <strong>MKS</strong> Source projects 25<br />

sharing archive 265<br />

sharing member 265<br />

single directory 243<br />

viewing 236<br />

visibility 230<br />

project backing<br />

enabling 88<br />

Projects view<br />

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

<strong>Administration</strong> Client 229<br />

prompts<br />

dialog boxes 33<br />

properties<br />

collecting 30<br />

Index<br />

409


Index<br />

proxy server<br />

preferences<br />

setting 35<br />

Q<br />

quantify<br />

numeric values 27<br />

query<br />

described 214<br />

limit<br />

configuring in <strong>MKS</strong> <strong>Integrity</strong> 214<br />

group timeout 216<br />

maximum item count 216<br />

query backed relationship data type<br />

described 121<br />

quick access keys<br />

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

access keys 16<br />

shortcut keys 16<br />

R<br />

range data type<br />

described 122<br />

RCS<br />

directory 244<br />

references, viewing 220<br />

relationship data type<br />

default columns 124<br />

described 117<br />

relevance 124<br />

described 124<br />

reparenting<br />

project 237<br />

reports 201<br />

described 201<br />

images 204<br />

tags 205<br />

template files 203<br />

repositioning<br />

type 93<br />

resolution<br />

<strong>MKS</strong> Source event triggers 352<br />

restoring project<br />

in CLI 251<br />

restoring project to a previous checkpoint 250<br />

review<br />

process<br />

change packages, how it works 317<br />

410<br />

revision<br />

event, in <strong>MKS</strong> Source 341<br />

rich content fields<br />

customizing 199<br />

role<br />

super administrator 5<br />

rule selection 45<br />

rules<br />

computed expressions 271<br />

selecting 45<br />

S<br />

saving workflow, as image 146<br />

scalability<br />

computed fields 293<br />

schedule<br />

computed field computations times 290<br />

script library 337<br />

search<br />

data 17<br />

groups 21<br />

<strong>MKS</strong> <strong>Integrity</strong> projects 22<br />

principals 21<br />

users 21<br />

searching<br />

context based 217<br />

secure sockets layer 7<br />

security<br />

computed fields 292<br />

realm<br />

debugging 381<br />

select<br />

favorites 26<br />

group 21<br />

<strong>MKS</strong> <strong>Integrity</strong> projects 22<br />

user 21<br />

selecting<br />

rules 45<br />

serial number<br />

locating 374<br />

server<br />

disconnecting 11<br />

event, in <strong>MKS</strong> Source 342<br />

preferences, setting 35<br />

session<br />

closing client 11<br />

shutting down client 12<br />

setting<br />

administrators 74–77<br />

preferences 32


setting up<br />

<strong>MKS</strong> <strong>Integrity</strong> 4–7<br />

shared subproject<br />

adding 262<br />

sharing<br />

archive<br />

with other project 265<br />

member 265<br />

file ownership 265<br />

solution 266<br />

update/compatibility concerns 265<br />

short text data type<br />

described 113<br />

shortcut<br />

keys<br />

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

16<br />

menu<br />

<strong>Administration</strong> Client 14<br />

show<br />

data 17<br />

shutting down<br />

<strong>Administration</strong> Client 12<br />

<strong>Integrity</strong> Client 12<br />

si command<br />

createproject 245<br />

diag 386<br />

dropproject 250<br />

import 249<br />

importproject 247<br />

logging 382<br />

si diag<br />

command 386<br />

SI project data type<br />

described 124<br />

si.properties file 347<br />

signatures<br />

electronic 218<br />

customizing triggers 218<br />

SSL<br />

See secure sockets layer<br />

staging server<br />

installing and starting 150<br />

starting 152<br />

starting<br />

the <strong>Administration</strong> Client 10<br />

the <strong>Integrity</strong> <strong>Server</strong><br />

in Safemode 390<br />

using mksis 388<br />

state<br />

capabilities 79, 100<br />

creating 78<br />

deleting 81<br />

described<br />

<strong>MKS</strong> <strong>Integrity</strong> 77<br />

edit workflow 145<br />

editing 80<br />

managing 77–81<br />

metrics 81<br />

moving 81<br />

transitions<br />

workflow 144<br />

viewing 80<br />

state metrics<br />

creating 290<br />

States view<br />

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

<strong>Administration</strong> Client 77<br />

status bar<br />

graphical user interface 16<br />

subproject 260<br />

adding 261<br />

adding shared 262<br />

components 260<br />

configuring 263<br />

creating 260<br />

defined 260<br />

designing 266<br />

event triggers 346<br />

super administrator, described 74<br />

support package<br />

creating 30<br />

syntax<br />

computed expression 271<br />

T<br />

tab<br />

checkmark 193<br />

item presentation template 192<br />

tags, for reports 205<br />

template<br />

designer<br />

cells 187<br />

grids 186<br />

images 194<br />

images, logo 195<br />

labels 189<br />

files, for reports 203<br />

item presentation<br />

copying 196<br />

creating 181<br />

deleting 198<br />

Index<br />

411


Index<br />

designer 171<br />

editing 185<br />

previewing 179<br />

properties 174<br />

tabs 192<br />

viewing 197<br />

text fields<br />

customizing 199<br />

text function<br />

described 274<br />

text searching<br />

configuring in <strong>MKS</strong> <strong>Integrity</strong> 217<br />

text style properties 175<br />

time entry<br />

allowing 79, 80, 100<br />

enabling 88<br />

timeout<br />

query<br />

group 216<br />

maximum item count 216<br />

timestamps<br />

computed expression 273<br />

title bar<br />

graphical user interface 13<br />

toolbar<br />

graphical user interface 14<br />

preferences<br />

setting 37<br />

tools<br />

diagnostic 386<br />

si diag command 386<br />

tooltips<br />

graphical user interface 16<br />

tracking metrics for 257<br />

tree pane<br />

graphical user interface 14<br />

troubleshooting<br />

client logging level 380<br />

differencing files 378<br />

environment information 374<br />

FLEXNet logs 384<br />

IDE log 385<br />

kerberos 392<br />

log files 379<br />

<strong>MKS</strong> Source<br />

reporting 394<br />

running server as application 377<br />

tools 386<br />

type<br />

administrator<br />

assigning 95<br />

described 93<br />

412<br />

administrator, <strong>MKS</strong> <strong>Integrity</strong> 93<br />

branching<br />

enabling for type 89<br />

change package 296<br />

customizing 299<br />

viewing 303<br />

copying 91<br />

creating 84<br />

deleting 92, 161<br />

editing 90<br />

field visibility 101<br />

labelling for items 89<br />

managing 82<br />

moving 93<br />

project backing<br />

enabling 88<br />

repositioning 93<br />

time entries<br />

enabling 88<br />

viewing 91<br />

workflow<br />

displaying 88<br />

Types view<br />

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

<strong>Administration</strong> Client 82<br />

U<br />

understanding <strong>MKS</strong> <strong>Integrity</strong> 4–7<br />

updating <strong>MKS</strong> Source global events<br />

definition template 352<br />

user<br />

deleting 161<br />

described 4<br />

group<br />

project permission 230<br />

selecting 21<br />

user data type<br />

described 116<br />

user fields<br />

computed expression 274<br />

user objects<br />

converting to admin 219<br />

using <strong>MKS</strong> <strong>Integrity</strong> 4–7<br />

V<br />

variables<br />

environment<br />

client-side triggers 362


version number<br />

<strong>Integrity</strong> Client 375<br />

<strong>Integrity</strong> <strong>Server</strong> 375<br />

viewing<br />

admin object references 220<br />

change package types 303<br />

field 130<br />

item presentation template 197<br />

project 236<br />

state 80<br />

type 91<br />

workflow 142<br />

views<br />

printing 30<br />

viewset<br />

importing 50<br />

managing 50<br />

visibility 101, 230<br />

fields 101<br />

project 230<br />

W<br />

workflow 5, 139<br />

creating 140<br />

described 138<br />

edit<br />

state 145<br />

managing (editing) 143<br />

printing 146<br />

save as image 146<br />

state transitions 144<br />

type<br />

displaying 88<br />

view 138<br />

described 138<br />

viewing 142<br />

workflow migration 147–160<br />

coping database 152<br />

e-mail notification 151<br />

installing<br />

production server 150<br />

staging server 150<br />

managing admin locks 154<br />

staging server startup 152<br />

summary steps 148, 149<br />

testing IM configuration 153<br />

using admin locks 155<br />

using wizard 156<br />

workspace<br />

graphical user interface 16<br />

writing <strong>MKS</strong> Source event triggers 350<br />

looking up the Bean 350<br />

referencing Beans 350<br />

saving your script 351<br />

Index<br />

413


Index<br />

414


Product Notices<br />

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

U.S. Government Restricted Rights. The software and<br />

documentation provided to you (the “Software and<br />

Documentation”) are “commercial items,” developed exclusively<br />

at private expense, consisting of “commercial computer<br />

software” and “commercial computer software documentation”<br />

as such terms are defined in the applicable acquisition<br />

regulations. If you are the U.S. Government or any agency or<br />

department thereof (collectively referred to as the<br />

“Government”), the Software and Documentation are licensed<br />

hereunder (i) only as a commercial item and (ii) with only those<br />

rights as are granted to all other end users to the extent that such<br />

rights are consistent with this paragraph. If you are any agency of<br />

the Department of Defense of the Government, the following<br />

notice is given: The Software and Documentation are provided<br />

with RESTRICTED RIGHTS. You shall not use, duplicate or<br />

disclose the Software or Documentation in any way not<br />

specifically permitted by <strong>MKS</strong> Software Inc. or mandated by U.S.<br />

law. Manufacturer is <strong>MKS</strong> Software Inc., 410 Albert Street,<br />

Waterloo, Ontario Canada N2L 3V3.<br />

This product contains Apache Jakarta Commons HttpClient<br />

software developed by The Apache Software Foundation<br />

(http://www.apache.org/). 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-<br />

2.0. 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 Apache Jakarta Commons Logging 1.0.3<br />

software developed by The Apache Software Foundation http:/<br />

/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 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 © 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 University” 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–<br />

2005, publicobject.com, O'Dell Engineering Ltd. 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., 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 Version 2.2<br />

developed by The Apache Software Foundation (http://<br />

www.apache.org/). Licensed under the Apache License, Version<br />

1.1. Copyright © 2002 The Apache Software Foundation. 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: 1. Redistributions of source<br />

code must retain the above copyright notice, this list of conditions<br />

and the following disclaimer. 2. Redistributions in binary form<br />

must reproduce the above copyright notice, this list of conditions<br />

and 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/).”; 4. The names “BSF” “Apache” and<br />

“Apache Software Foundation” must not be used to endorse or<br />

promote products derived from this software without prior<br />

written permission. For written permission, please contact<br />

apache@apache.org. 5. Products derived from this software may<br />

not be called “Apache”, nor may “Apache” appear in their name,<br />

without prior written permission of the Apache Software<br />

Foundation. THIS SOFTWARE IS PROVIDED “AS IS” AND<br />

ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,<br />

BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR


Product Notices<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS<br />

BE 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<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

This product contains IBM Toolbox for Java software.<br />

Copyright © up to and including 2006, 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<br />

language governing permissions and limitations under the<br />

License. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT<br />

WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,<br />

INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF<br />

MERCHANTABILITY, FITNESS FOR A PARTICULAR<br />

PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL<br />

THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR<br />

ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER<br />

IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,<br />

ARISING FROM, OUT OF OR IN CONNECTION WITH THE<br />

SOFTWARE OR THE USE OR OTHER DEALINGS IN THE<br />

SOFTWARE. IN NO EVENT SHALL THE 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<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE<br />

This product contains ICU v. 1.8.1. Copyright © 1995–2003<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. All trademarks and registered trademarks<br />

mentioned herein are the property of their respective owners.<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 ©<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 acknowledgement may<br />

appear in the software itself, if and wherever such third-party<br />

acknowledgements 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 />

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.


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<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 software developed<br />

by 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 use,<br />

copy, modify, merge, publish, distribute, sub-license, and/or sell<br />

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 />

Product Notices<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.<br />

Copyright © 2001 Silver Egg Technology. Permission is hereby<br />

granted, free of charge, to any person obtaining a copy of this<br />

software and associated documentation files (the “Software”), to<br />

deal in the Software without restriction, including without<br />

limitation the rights to use, copy, modify, merge, publish,<br />

distribute, sublicense, and/or sell copies of the Software, and to<br />

permit persons to whom the Software is furnished to do so,<br />

subject to the following conditions: The above copyright notice<br />

and this permission notice shall be included in all copies or<br />

substantial portions of the 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<br />

“AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either<br />

express or implied. See the License for the specific language<br />

governing rights and limitations under the License. The Original<br />

Code is Rhino code, released May 6, 1999. The Initial Developer of<br />

the Original Code is Netscape Communications Corporation.<br />

Portions created by Netscape are Copyright © 1997–1999<br />

Netscape Communications Corporation. All Rights Reserved.<br />

Contributor(s): Norris Boyd<br />

This product contains JBoss version 4.0.4. Copyright © 2004–2007<br />

JBoss, Inc. 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 Jdesktop Integration Components.<br />

Copyright © 2004 Sun Microsystems, Inc. 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., 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 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


Product Notices<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 Xerces 2.6.0 developed by The Apache<br />

Software Foundation (http://www.apache.org/) licensed<br />

under the Apache License, Version 1.1. Copyright © 2000–2002<br />

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/).; 4. The names “Xerces”, “Apache“ and<br />

“Apache Software Foundation“ must not be used to endorse or<br />

promote products derived from this software without prior<br />

written permission. For written permission, please contact<br />

apache@apache.org. 5. Products derived from this software may<br />

not be called “Apache”, nor may “Apache“ appear in their name,<br />

without prior written permission of the Apache Software<br />

Foundation. THIS SOFTWARE IS PROVIDED “AS IS” AND<br />

ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,<br />

BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS<br />

BE 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<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

This product contains jTDS Drivers version 1.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 />

Copyright © 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.<br />

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 includes Log4J software developed by The Apache<br />

Software Foundation (http://www.apache.org/) licensed<br />

under the Apache Software License, Version 1.1. Copyright ©<br />

1999 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 acknowledgment may<br />

appear in the software itself, if and wherever such third-party<br />

acknowledgments normally appear. 4. The names “log4j“ and<br />

“Apache Software Foundation“ must not be used to endorse or<br />

promote products derived from this software without prior<br />

written permission. For written permission, please contact<br />

apache@apache.org. 5. Products derived from this software may<br />

not be called “Apache”, nor may “Apache“ appear in their name,<br />

without prior written permission of the Apache Software<br />

Foundation. THIS SOFTWARE IS PROVIDED “AS IS” AND<br />

ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,<br />

BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS<br />

BE 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<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<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 © 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–2007 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


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 />

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.<br />

This 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 />

Product Notices<br />

This product contains Sapia Ubik software developed by Sapia<br />

Open Source Software. Copyright © 2002, 2003 Sapia Open<br />

Source Software. 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:<br />

Redistributions of source code must retain the above copyright<br />

notice, this list of conditions and the following disclaimer.<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. The end-user documentation included with<br />

the redistribution, if any, must include the following<br />

acknowledgment: “This product includes software developed by<br />

Sapia Open Source Software Organization (http://www.sapiaoss.org/).“<br />

Alternately, this acknowledgment may appear in the<br />

software itself, if and wherever such third-party<br />

acknowledgments normally appear. The names “Sapia”, “Sapia<br />

Open Source Software“ and “Sapia OSS“ 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 />

info@sapia-oss.org. Products derived from this software may not<br />

be called “Sapia”, nor may “Sapia“ appear in their name, without<br />

prior written permission of Sapia OSS. 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 SAPIA OSS ORGANIZATION OR<br />

ITS 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 JDOM software. Copyright © 2000–2004<br />

Jason Hunter & Brett McLaughlin. 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 disclaimer that follows these conditions in the documentation<br />

and/or other materials provided with the distribution. 3. The<br />

name “JDOM“ must not be used to endorse or promote products<br />

derived from this software without prior written permission. For<br />

written permission, please contact<br />

. 4. Products derived from this<br />

software may not be called “JDOM", nor may “JDOM“ appear in<br />

their name, without prior written permission from the JDOM<br />

Project Management . In addition,<br />

we request (but do not require) that you include in the end-user<br />

documentation provided with the redistribution and/or in the<br />

software itself an acknowledgement equivalent to the following:<br />

“This product includes software developed by the JDOM Project<br />

(http://www.jdom.org/).”; Alternatively, the acknowledgment<br />

may be graphical using the logos available at http://<br />

www.jdom.org/images/logos. 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 JDOM AUTHORS OR THE<br />

PROJECT 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


Product Notices<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 />

Portions of this product are Copyright 2007, Microsoft<br />

Corporation. All rights reserved.<br />

This product contains W3C Sirpac. This work (and included<br />

software, documentation such as READMEs, or other related<br />

items) is being provided by the copyright holders under the<br />

following license. By obtaining, using and/or copying this work,<br />

you (the licensee) agree that you have read, understood, and will<br />

comply with the following terms and conditions. Permission to<br />

copy, modify, and distribute this software and its documentation,<br />

with or without modification, for any purpose and without fee or<br />

royalty is hereby granted, provided that you include the<br />

following on ALL copies of the software and documentation or<br />

portions thereof, including modifications: The full text of this<br />

NOTICE in a location viewable to users of the redistributed or<br />

derivative work. Any pre-existing intellectual property<br />

disclaimers, notices, or terms and conditions. If none exist, the<br />

W3C Software Short Notice should be included (hypertext is<br />

preferred, text is permitted) within the body of any redistributed<br />

or derivative code. Notice of any changes or modifications to the<br />

files, including the date changes were made. (We recommend you<br />

provide URIs to the location from which the code is derived.)<br />

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED<br />

“AS IS,“ AND COPYRIGHT HOLDERS MAKE NO<br />

REPRESENTATIONS OR WARRANTIES, EXPRESS OR<br />

IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES<br />

OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR<br />

PURPOSE OR THAT THE USE OF THE SOFTWARE OR<br />

DOCUMENTATION WILL NOT INFRINGE ANY THIRD<br />

PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER<br />

RIGHTS. COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR<br />

ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL<br />

DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE<br />

OR DOCUMENTATION. The name and trademarks of copyright<br />

holders may NOT be used in advertising or publicity pertaining<br />

to the software without specific, written prior permission. Title to<br />

copyright in this software and any associated documentation will<br />

at all times remain with copyright holders.<br />

This product contains XML Parsing Library for C version 2.6.7.<br />

Copyright © 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.<br />

This product contains the Sun Java 1.5.0 Update Platform which<br />

may include the following software:<br />

The following software may be included in this product: CS<br />

CodeViewer v1.0; Use of any of this software is governed by the<br />

terms of the license below: Copyright 1999 by CoolServlets.com.<br />

This software is distributed under the terms of the BSD License.<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. Neither name of<br />

CoolServlets.com nor the names of its contributors may be used<br />

to endorse or promote products derived from this software<br />

without specific prior written permission. THIS SOFTWARE IS<br />

PROVIDED BY COOLSERVLETS.COM AND CONTRIBUTORS<br />

“AS IS” 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 AUTHOR 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 />

The following software may be included in this product: Crimson<br />

v1.1.1; Use of any of this software is governed by the terms of the<br />

license below: / The Apache Software License, Version 1.1<br />

Copyright © 1999–2000 The Apache Software Foundation. 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: 1. Redistributions of source<br />

code must retain the above copyright notice, this list of conditions<br />

and the following disclaimer. 2. Redistributions in binary form<br />

must reproduce the above copyright notice, this list of conditions<br />

and 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 acknowledgment may<br />

appear in the software itself, if and wherever such third-party<br />

acknowledgments normally appear. 4. The names “Crimson“ and<br />

“Apache Software Foundation“ must not be used to endorse or<br />

promote products derived from this software without prior<br />

written permission. For written permission, please contact<br />

apache@apache.org. 5. Products derived from this software may<br />

not be called “Apache”, nor may “Apache“ appear in their name,<br />

without prior written permission of the Apache Software<br />

Foundation. THIS SOFTWARE IS PROVIDED “AS IS” AND<br />

ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,<br />

BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS<br />

BE 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<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

The following software may be included in this product: Xalan J2;<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.


The following software may be included in this product: NSIS<br />

1.0j; Use of any of this software is governed by the terms of the<br />

license below: Copyright © 1999–2000 Nullsoft, Inc. This software<br />

is provided “as-is”, without any express or implied warranty. In<br />

no event will the authors be held liable for any damages arising<br />

from the use of this software. Permission is granted to anyone to<br />

use this software for any purpose, including commercial<br />

applications, and to alter it and redistribute it freely, subject to the<br />

following restrictions: 1. The origin of this software must not be<br />

misrepresented; you must not claim that you wrote the original<br />

software. If you use this software in a product, an<br />

acknowledgment in the product documentation would be<br />

appreciated but is not required. 2. Altered source versions must<br />

be plainly marked as such, and must not be misrepresented as<br />

being the original software. 3. This notice may not be removed or<br />

altered from any source distribution. Justin Frankel<br />

justin@nullsoft.com“ Some Portions licensed from IBM are<br />

available at: http://oss.software.ibm.com/icu4j/ Portions<br />

Copyright Eastman Kodak Company 1992 Lucida is a registered<br />

trademark or trademark of Bigelow & Holmes in the U.S. and<br />

other countries. Portions licensed from Taligent, Inc.<br />

The following software may be included in this product: IAIK<br />

PKCS Wrapper; Use of any of this software is governed by the<br />

terms of the license below: Copyright © 2002 Graz University of<br />

Technology. All rights reserved. Redistribution and use in source<br />

and binary forms, with or without modification, are permitted<br />

provided that the following conditions are met: 1. Redistributions<br />

of source code must retain the above copyright notice, this list of<br />

conditions and the following disclaimer. 2. Redistributions in<br />

binary form must reproduce the above copyright notice, this list<br />

of conditions and the following disclaimer in the documentation<br />

and/or other materials provided with the distribution. 3. The<br />

end-user documentation included with the redistribution, if any,<br />

must include the following acknowledgment: “This product<br />

includes software developed by IAIK of Graz University of<br />

Technology.“ Alternately, this acknowledgment may appear in<br />

the software itself, if and wherever such third-party<br />

acknowledgments normally appear. 4. The names “Graz<br />

University of Technology“ and “IAIK of Graz University of<br />

Technology“ must not be used to endorse or promote products<br />

derived from this software without prior written permission. 5.<br />

Products derived from this software may not be called “IAIK<br />

PKCS Wrapper”, nor may “IAIK“ appear in their name, without<br />

prior written permission of Graz University of Technology. THIS<br />

SOFTWARE IS PROVIDED “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 LICENSOR 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 />

The following software may be included in this product:<br />

Document Object Model (DOM) v. Level 3; Use of any of this<br />

software is governed by the terms of the license below: W3C®<br />

SOFTWARE NOTICE AND LICENSE http://www.w3.org/<br />

Consortium/Legal/2002/copyright-software-20021231<br />

This work (and included software, documentation such as<br />

READMEs, or other related items) is being provided by the<br />

copyright holders under the following license. By obtaining,<br />

using and/or copying this work, you (the licensee) agree that you<br />

have read, understood, and will comply with the following terms<br />

and conditions. Permission to copy, modify, and distribute this<br />

software and its documentation, with or without modification,<br />

for any purpose and without fee or royalty is hereby granted,<br />

provided that you include the following on ALL copies of the<br />

Product Notices<br />

software and documentation or portions thereof, including<br />

modifications: 1. The full text of this NOTICE in a location<br />

viewable to users of the redistributed or derivative work. 2. Any<br />

pre-existing intellectual property disclaimers, notices, or terms<br />

and conditions. If none exist, the W3C Software Short Notice<br />

should be included (hypertext is preferred, text is permitted)<br />

within the body of any redistributed or derivative code. 3. Notice<br />

of any changes or modifications to the files, including the date<br />

changes were made. (We recommend you provide URIs to the<br />

location from which the code is derived.) THIS SOFTWARE AND<br />

DOCUMENTATION IS PROVIDED “AS IS,“ AND COPYRIGHT<br />

HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES,<br />

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO,<br />

WARRANTIES OF MERCHANTABILITY OR FITNESS FOR<br />

ANY PARTICULAR PURPOSE OR THAT THE USE OF THE<br />

SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE<br />

ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS<br />

OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE<br />

LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR<br />

CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF<br />

THE SOFTWARE OR DOCUMENTATION. The name and<br />

trademarks of copyright holders may NOT be used in advertising<br />

or publicity pertaining to the software without specific, written<br />

prior permission. Title to copyright in this software and any<br />

associated documentation will at all times remain with copyright<br />

holders. This formulation of W3C’s notice and license became<br />

active on December 31, 2002. This version removes the copyright<br />

ownership notice such that this license can be used with materials<br />

other than those owned by the W3C, reflects that ERCIM is now a<br />

host of the W3C, includes references to this specific dated version<br />

of the license, and removes the ambiguous grant of “use”.<br />

Otherwise, this version is the same as the previous version and is<br />

written so as to preserve the Free Software Foundation’s<br />

assessment of GPL compatibility and OSI's certification under the<br />

Open Source Definition. Please see our Copyright FAQ for<br />

common questions about using materials from our site, including<br />

specific terms and conditions for packages like libwww, Amaya,<br />

and Jigsaw. Other questions about this notice can be directed to<br />

site-policy@w3.org.<br />

The following software may be included in this product: Xalan,<br />

Xerces; Use of any of this software is governed by the terms of the<br />

license below: / The Apache Software License, Version 1.1<br />

Copyright © 1999–2003 The Apache Software Foundation. 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: 1. Redistributions of source<br />

code must retain the above copyright notice, this list of conditions<br />

and the following disclaimer. 2. Redistributions in binary form<br />

must reproduce the above copyright notice, this list of conditions<br />

and 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 acknowledgment may<br />

appear in the software itself, if and wherever such third-party<br />

acknowledgments normally appear. 4. The names “Xerces“ and<br />

“Apache Software Foundation“ must not be used to endorse or<br />

promote products derived from this software without prior<br />

written permission. For written permission, please contact<br />

apache@apache.org. 5. Products derived from this software may<br />

not be called “Apache”, nor may “Apache“ appear in their name,<br />

without prior written permission of the Apache Software<br />

Foundation. THIS SOFTWARE IS PROVIDED “AS IS” AND<br />

ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,<br />

BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS<br />

BE 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


Product Notices<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 />

The following software may be included in this product: W3C<br />

XML Conformance Test Suites v. 20020606; Use of any of this<br />

software is governed by the terms of the license below: W3C®<br />

SOFTWARE NOTICE AND LICENSE Copyright © 1994–2002<br />

World Wide Web Consortium, (Massachusetts Institute of<br />

Technology, Institut National de Recherche en Informatique et en<br />

Automatique, Keio University). All Rights Reserved. http://<br />

www.w3.org/Consortium/Legal/ This W3C work (including<br />

software, documents, or other related items) is being provided by<br />

the copyright holders under the following license. By obtaining,<br />

using and/or copying this work, you (the licensee) agree that you<br />

have read, understood, and will comply with the following terms<br />

and conditions: Permission to use, copy, modify, and distribute<br />

this software and its documentation, with or without<br />

modification, for any purpose and without fee or royalty is<br />

hereby granted, provided that you include the following on ALL<br />

copies of the software and documentation or portions thereof,<br />

including modifications, that you make: 1. The full text of this<br />

NOTICE in a location viewable to users of the redistributed or<br />

derivative work. 2. Any pre-existing intellectual property<br />

disclaimers, notices, or terms and conditions. If none exist, a short<br />

notice of the following form (hypertext is preferred, text is<br />

permitted) should be used within the body of any redistributed<br />

or derivative code: “Copyright © up to and including 2006 World<br />

Wide Web Consortium, (Massachusetts Institute of Technology,<br />

Institut National de Recherche en Informatique et en<br />

Automatique, Keio University). All Rights Reserved. http://<br />

www.w3.org/Consortium/Legal/“ 3. Notice of any changes or<br />

modifications to the W3C files, including the date changes were<br />

made. (We recommend you provide URIs to the location from<br />

which the code is derived.) THIS SOFTWARE AND<br />

DOCUMENTATION IS PROVIDED “AS IS,“ AND COPYRIGHT<br />

HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES,<br />

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO,<br />

WARRANTIES OF MERCHANTABILITY OR FITNESS FOR<br />

ANY PARTICULAR PURPOSE OR THAT THE USE OF THE<br />

SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE<br />

ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS<br />

OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE<br />

LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR<br />

CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF<br />

THE SOFTWARE OR DOCUMENTATION. The name and<br />

trademarks of copyright holders may NOT be used in advertising<br />

or publicity pertaining to the software without specific, written<br />

prior permission. Title to copyright in this software and any<br />

associated documentation will at all times remain with copyright<br />

holders. This formulation of W3C’s notice and license became<br />

active on August 14 1998 so as to improve compatibility with<br />

GPL. This version ensures that W3C software licensing terms are<br />

no more restrictive than GPL and consequently W3C software<br />

may be distributed in GPL packages. See the older formulation<br />

for the policy prior to this date. Please see our Copyright FAQ for<br />

common questions about using materials from our site, including<br />

specific terms and conditions for packages like libwww, Amaya,<br />

and Jigsaw. Other questions about this notice can be directed to<br />

site-policy@w3.org.<br />

The following software may be included in this product: W3C<br />

XML Schema Test Collection v. 1.16.2; Use of any of this software<br />

is governed by the terms of the license below: W3C DOCUMENT<br />

NOTICE AND LICENSE Copyright © 1994-2002 World Wide<br />

Web Consortium, (Massachusetts Institute of Technology, Institut<br />

National de Recherche en Informatique et en Automatique, Keio<br />

University). All Rights Reserved. http://www.w3.org/<br />

Consortium/Legal/ Public documents on the W3C site are<br />

provided by the copyright holders under the following license.<br />

The software or Document Type Definitions (DTDs) associated<br />

with W3C specifications are governed by the Software Notice. By<br />

using and/or copying this document, or the W3C document from<br />

which this statement is linked, you (the licensee) agree that you<br />

have read, understood, and will comply with the following terms<br />

and conditions: Permission to use, copy, and distribute the<br />

contents of this document, or the W3C document from which this<br />

statement is linked, in any medium for any purpose and without<br />

fee or royalty is hereby granted, provided that you include the<br />

following on ALL copies of the document, or portions thereof,<br />

that you use: 1. A link or URL to the original W3C document. 2.<br />

The pre-existing copyright notice of the original author, or if it<br />

doesn't exist, a notice of the form: “Copyright yyyy [$date-ofdocument]<br />

World Wide Web Consortium, (Massachusetts<br />

Institute of Technology, Institut National de Recherche en<br />

Informatique et en Automatique, Keio University). All Rights<br />

Reserved. http://www.w3.org/Consortium/Legal/“<br />

(Hypertext is preferred, but a textual representation is permitted.)<br />

3. If it exists, the STATUS of the W3C document. When space<br />

permits, inclusion of the full text of this NOTICE should be<br />

provided. We request that authorship attribution be provided in<br />

any software, documents, or other items or products that you<br />

create pursuant to the implementation of the contents of this<br />

document, or any portion thereof. No right to create<br />

modifications or derivatives of W3C documents is granted<br />

pursuant to this license. However, if additional requirements<br />

(documented in the Copyright FAQ) are satisfied, the right to<br />

create modifications or derivatives is sometimes granted by the<br />

W3C to individuals complying with those requirements. THIS<br />

DOCUMENT IS PROVIDED “AS IS,“ AND COPYRIGHT<br />

HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES,<br />

EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,<br />

WARRANTIES OF MERCHANTABILITY, FITNESS FOR A<br />

PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;<br />

THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE<br />

FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF<br />

SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY<br />

PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.<br />

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY<br />

DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL<br />

DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT<br />

OR THE PERFORMANCE OR IMPLEMENTATION OF THE<br />

CONTENTS THEREOF. The name and trademarks of copyright<br />

holders may NOT be used in advertising or publicity pertaining<br />

to this document or its contents without specific, written prior<br />

permission. Title to copyright in this document will at all times<br />

remain with copyright holders. This formulation of W3C’s notice<br />

and license became active on April 05 1999 so as to account for the<br />

treatment of DTDs, schema's and bindings. See the older<br />

formulation for the policy prior to this date. Please see our<br />

Copyright FAQ for common questions about using materials<br />

from our site, including specific terms and conditions for<br />

packages like libwww, Amaya, and Jigsaw. Other questions<br />

about this notice can be directed to site-policy@w3.org.<br />

webmaster (last updated by reagle on 1999/04/99.)<br />

The following software may be included in this product:<br />

Common Unix Printing System API Libraries (CUPS API library);<br />

This library is free software; you can redistribute it and/or<br />

modify it under the terms of the GNU Library General Public<br />

License as published by the Free Software Foundation; either<br />

version 2 of the License, or (at your option) any later version. 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 Library General Public<br />

License for more details. You should have received a copy of the<br />

GNU Library General Public License along with this library; if<br />

not, write to the Free Software Foundation, Inc., 51 Franklin<br />

Street, Fifth Floor, Boston, MA 02110-1301 USA.<br />

The following software may be included in this product: Mesa<br />

3-D graphics library v. 5; Use of any of this software is governed<br />

by the terms of the license below: core Mesa code include/GL/<br />

gl.h Brian Paul Mesa GLX driver include/GL/glx.h Brian Paul<br />

Mesa Ext registry include/GL/glext.h SGI SGI Free B include/<br />

GL/glxext.h Mesa license: The Mesa distribution consists of<br />

several components. Different copyrights and licenses apply to


different components. For example, GLUT is copyrighted by<br />

Mark Kilgard, some demo programs are copyrighted by SGI,<br />

some of the Mesa device drivers are copyrighted by their authors.<br />

See below for a list of Mesa's components and the copyright/<br />

license for each. The core Mesa library is licensed according to the<br />

terms of the XFree86 copyright (an MIT-style license). This allows<br />

integration with the XFree86/DRI project. Unless otherwise<br />

stated, the Mesa source code and documentation is licensed as<br />

follows: Copyright © 1999–2003 Brian Paul 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 BRIAN PAUL BE<br />

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,<br />

WHETHER IN AN ACTION OF CONTRACT, TORT OR<br />

OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION<br />

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS<br />

IN THE SOFTWARE. SGI FREE SOFTWARE LICENSE B<br />

(Version 1.1 [02/22/2000]) Except to the extent portions of this<br />

file are made subject to an alternative license as permitted in the<br />

SGI Free Software License B, Version 1.1 (the “License“), the<br />

contents of this file are subject only to the provisions of the<br />

License. You may not use this file except in compliance with the<br />

License. You may obtain a copy of the License at Silicon Graphics,<br />

Inc., attn: Legal Services, 1600 Amphitheatre Parkway, Mountain<br />

View, CA 94043-1351, or at: http://oss.sgi.com/projects/<br />

FreeB Note that, as provided in the License, the Software is<br />

distributed on an “AS IS” basis, with ALL EXPRESS AND<br />

IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED,<br />

INCLUDING, WITHOUT LIMITATION, ANY IMPLIED<br />

WARRANTIES AND CONDITIONS OF MERCHANTABILITY,<br />

SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR<br />

PURPOSE, AND NON-INFRINGEMENT. Original Code. The<br />

Original Code is: [name of software, version number, and release<br />

date], developed by Silicon Graphics, Inc. The Original Code is<br />

Copyright © [dates of first publication, as appearing in the Notice<br />

in the Original Code] Silicon Graphics, Inc. Copyright in any<br />

portions created by third parties is as indicated elsewhere herein.<br />

All Rights Reserved. Additional Notice Provisions: [such<br />

additional provisions, if any, as appear in the Notice in the<br />

Original Code under the heading “Additional Notice<br />

Provisions”]<br />

The following software may be included in this product: Byte<br />

Code Engineering Library (BCEL) v. 5; Use of any of this software<br />

is governed by the terms of the license below: Apache Software<br />

License / The Apache Software License, Version 1.1 Copyright ©<br />

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 acknowledgment may<br />

appear in the software itself, if and wherever such third-party<br />

acknowledgments normally appear. 4. The names “Apache“ and<br />

“Apache Software Foundation“ and “Apache BCEL“ must not be<br />

used to endorse or promote products derived from this software<br />

without prior written permission. For written permission, please<br />

Product Notices<br />

contact apache@apache.org. 5. Products derived from this<br />

software may not be called “Apache”, “Apache BCEL”, 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 />

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 />

The following software may be included in this product: Regexp,<br />

Regular Expression Package v. 1.2; Use of any of this software is<br />

governed by the terms of the license below: The Apache Software<br />

License, Version 1.1 Copyright © 2001 The Apache Software<br />

Foundation. All rights reserved. Redistribution and use in source<br />

and binary forms, with or without modification, are permitted<br />

provided that the following conditions are met: 1. Redistributions<br />

of source code must retain the above copyright notice, this list of<br />

conditions and the following disclaimer. 2. Redistributions in<br />

binary form must reproduce the above copyright notice, this list<br />

of conditions and the following disclaimer in the documentation<br />

and/or other materials provided with the distribution. 3. The<br />

end-user documentation included with the redistribution, if any,<br />

must include the following acknowledgment: “This product<br />

includes software developed by the Apache Software Foundation<br />

(http://www.apache.org/).“ Alternately, this acknowledgment<br />

may appear in the software itself, if and wherever such thirdparty<br />

acknowledgments normally appear. 4. The names<br />

“Apache“ and “Apache Software Foundation“ and “Apache<br />

Turbine“ must not be used to endorse or promote products<br />

derived from this software without prior written permission. For<br />

written permission, please contact apache@apache.org.<br />

5. Products derived from this software may not be called<br />

“Apache”, “Apache Turbine”, nor may “Apache“ appear in their<br />

name, without prior written permission of the Apache Software<br />

Foundation. THIS SOFTWARE IS PROVIDED “AS IS” AND<br />

ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,<br />

BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF<br />

MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<br />

APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS<br />

BE 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<br />

OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />

POSSIBILITY OF SUCH DAMAGE.<br />

The following software may be included in this product: CUP<br />

Parser Generator for Java v. 0.10k; Use of any of this software is<br />

governed by the terms of the license below: CUP Parser<br />

Generator Copyright Notice, License, and Disclaimer Copyright<br />

1996–1999 by Scott Hudson, Frank Flannery, C. Scott Ananian<br />

Permission to use, copy, modify, and distribute this software and<br />

its documentation for any purpose and without fee is hereby<br />

granted, provided that the above copyright notice appear in all<br />

copies and that both the copyright notice and this permission<br />

notice and warranty disclaimer appear in supporting<br />

documentation, and that the names of the authors or their<br />

employers not be used in advertising or publicity pertaining to


Product Notices<br />

distribution of the software without specific, written prior<br />

permission. The authors and their employers disclaim all<br />

warranties with regard to this software, including all implied<br />

warranties of merchantability and fitness. In no event shall the<br />

authors or their employers be liable for any special, indirect or<br />

consequential damages or any damages whatsoever resulting<br />

from loss of use, data or profits, whether in an action of contract,<br />

negligence or other tortious action, arising out of or in connection<br />

with the use or performance of this software.<br />

The following software may be included in this product: JLex: A<br />

Lexical Analyzer Generator for Java v. 1.2.5; Use of any of this<br />

software is governed by the terms of the license below: JLEX<br />

COPYRIGHT NOTICE, LICENSE AND DISCLAIMER. Copyright<br />

1996–2003 by Elliot Joel Berk and C. Scott Ananian Permission to<br />

use, copy, modify, and distribute this software and its<br />

documentation for any purpose and without fee is hereby<br />

granted, provided that the above copyright notice appear in all<br />

copies and that both the copyright notice and this permission<br />

notice and warranty disclaimer appear in supporting<br />

documentation, and that the name of the authors or their<br />

employers not be used in advertising or publicity pertaining to<br />

distribution of the software without specific, written prior<br />

permission. The authors and their employers disclaim all<br />

warranties with regard to this software, including all implied<br />

warranties of merchantability and fitness. In no event shall the<br />

authors or their employers be liable for any special, indirect or<br />

consequential damages or any damages whatsoever resulting<br />

from loss of use, data or profits, whether in an action of contract,<br />

negligence or other tortious action, arising out of or in connection<br />

with the use or performance of this software. Java is a trademark<br />

of Sun Microsystems, Inc. References to the Java programming<br />

language in relation to JLex are not meant to imply that Sun<br />

endorses this product.<br />

The following software may be included in this product: SAX v.<br />

2.0.1; Use of any of this software is governed by the terms of the<br />

license below: Copyright Status SAX is free! In fact, it's not<br />

possible to own a license to SAX, since it's been placed in the<br />

public domain. No Warranty Because SAX is released to the<br />

public domain, there is no warranty for the design or for the<br />

software implementation, to the extent permitted by applicable<br />

law. Except when otherwise stated in writing the copyright<br />

holders and/or other parties provide SAX “as is“ without<br />

warranty of any kind, either expressed or implied, including, but<br />

not limited to, the implied warranties of merchantability and<br />

fitness for a particular purpose. The entire risk as to the quality<br />

and performance of SAX is with you. Should SAX prove<br />

defective, you assume the cost of all necessary servicing, repair or<br />

correction. In no event unless required by applicable law or<br />

agreed to in writing will any copyright holder, or any other party<br />

who may modify and/or redistribute SAX, be liable to you for<br />

damages, including any general, special, incidental or<br />

consequential damages arising out of the use or inability to use<br />

SAX (including but not limited to loss of data or data being<br />

rendered inaccurate or losses sustained by you or third parties or<br />

a failure of the SAX to operate with any other programs), even if<br />

such holder or other party has been advised of the possibility of<br />

such damages. Copyright Disclaimers This page includes<br />

statements to that effect by David Megginson, who would have<br />

been able to claim copyright for the original work. SAX 1.0<br />

Version 1.0 of the Simple API for XML (SAX), created collectively<br />

by the membership of the XML-DEV mailing list, is hereby<br />

released into the public domain. No one owns SAX: you may use<br />

it freely in both commercial and non-commercial applications,<br />

bundle it with your software distribution, include it on a CD-<br />

ROM, list the source code in a book, mirror the documentation at<br />

your own web site, or use it in any other way you see fit. David<br />

Megginson, sax@megginson.com 1998-05-11 SAX 2.0 I hereby<br />

abandon any property rights to SAX 2.0 (the Simple API for<br />

XML), and release all of the SAX 2.0 source code, compiled code,<br />

and documentation contained in this distribution into the Public<br />

Domain. SAX comes with NO WARRANTY or guarantee of<br />

fitness for any purpose. David Megginson,<br />

david@megginson.com 2000-05-05.<br />

The following software may be included in this product: Cryptix;<br />

Use of any of this software is governed by the terms of the license<br />

below: Cryptix General License Copyright © 1995–2003 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: 1. Redistributions of source code must retain<br />

the copyright notice, this list of conditions and the following<br />

disclaimer. 2. 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<br />

“AS IS” 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 CRYPTIX FOUNDATION LIMITED OR<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 product contains DOM4J 1.6.1. Copyright 2001-2005 ©<br />

MetaStuff, Ltd. All Rights Reserved. Redistribution and use of<br />

this software and associated documentation (“Software“), with or<br />

without modification, are permitted provided that the following<br />

conditions are met: 1. Redistributions of source code must retain<br />

copyright statements and notices. Redistributions must also<br />

contain a copy of this document. 2. Redistributions in binary form<br />

must reproduce the above copyright notice, this list of conditions<br />

and the following disclaimer in the documentation and/or other<br />

materials provided with the distribution. 3. The name “DOM4J“<br />

must not be used to endorse or promote products derived from<br />

this Software without prior written permission of MetaStuff, Ltd.<br />

For written permission, please contact dom4jinfo@metastuff.com.<br />

4. Products derived from this Software may<br />

not be called “DOM4J“ nor may “DOM4J“ appear in their names<br />

without prior written permission of MetaStuff, Ltd. DOM4J is a<br />

registered trademark of MetaStuff, Ltd. 5. Due credit should be<br />

given to the DOM4J Project - http://www.dom4j.org. THIS<br />

SOFTWARE IS PROVIDED BY METASTUFF, LTD. 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 METASTUFF, LTD. 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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!