Abstract Team-based development in PowerCenter facilitates collaboration across functional teams, such as development, quality assurance, and production administration, or across geographically disparate teams. This article describes frequently asked questions regarding team-based development in PowerCenter. Supported Versions PowerCenter 8.6.x - PowerCenter 9.0.1 Table of Contents Checking In and Checking Out........................................................................................................ 2 Copying Objects Between Folders and Repositories...................................................................... 3 Viewing Objects and Object History................................................................................................ 4 Non-Versioned Repositories............................................................................................................ 5 Development, Test, and Production Repositories........................................................................... 6 Reusable Objects ............................................................................................................................ 6 Third-Party Tools............................................................................................................................. 7 Versions........................................................................................................................................... 7 Miscellaneous.................................................................................................................................. 8
Checking In and Checking Out When I check out an object, does the repository lock the object for editing? When you check out an object, the repository obtains a write-intent lock on the object. No other repository users can edit the object while you have it checked out. This allows you to reserve an object while you work on it. When you work with composite objects, the Repository Service treats non-reusable objects as part of the parent object, so you cannot check in or out individual non- reusable objects. If I check out an object, does the repository lock or check out all versions of the object? You can check out only the most recent version of an object. Therefore, you cannot check out multiple versions of an object. However, you can view older versions of an object. In a versioned repository, do I have to check out a versioned object to modify it? In a versioned repository, you must check out a versioned object to modify it. Some objects, such as connection objects, are not versioned. You can modify these objects without checking them out. 2
How do I check out an object? I dont see a Checkout option on the Versioning menu. To check out an object, perform the following tasks: 1. Select the object you want to check out. 2. Click Versioning >Check Out. 3. In the Check Out dialog box, enter an optional comment in the comment field. 4. Click OK to check out the object, or Apply to All to apply the checkout comment to multiple objects. When the mapping is checked out for editing, do I need to check out the parent workflow even if I dont want to modify the workflow? Do I need to synchronize the version numbers for parent and child objects? No, you do not need to check out the corresponding parent workflow when you edit a child mapping. Only check out the objects that you want to modify. You do not need to synchronize the version numbers of parent and child objects. Can I check out and check in objects from the command line? You can check in objects from the command line, but you must check out objects via the User Interface. If I save changes to a repository object, but do not check in the objects, can other users view the changes? No. Consider a checked-out object version to be a private working copy of the object. If you want others to see it, you need to check it into the repository. If I update a child object, such as source definition, do parent objects, such as mappings, use the new version of the object? Yes. When you run a session, it uses the latest version of each object. For example, you update a source definition. The parent mapping uses the latest version of that source definition when you run the session. Copying Objects Between Folders and Repositories When I copy a versioned object and rename it, does the repository treat the renamed object as a new object? When you copy an object version and rename it, the repository treats this as the first version of a new object. For example, you copy version 6 of the Sales_Totals mapping to another repository. You rename the mapping as Sales_Statistics in the target repository. The Repository Service numbers the Sales_Statistics mapping as version 1. If I edit objects in a development folder and then deploy the objects to a production folder, should I check out the objects in the production folder before I deploy objects to it? You do not need to check out objects in the target repository to lock them during deployment. When you copy or replace a folder, or copy a deployment group, the repository does not allow the PowerCenter Integration Service to fetch objects from the target repository. When a PowerCenter Integration Service tries to access the repository to run a workflow, session, or task while a repository is blocked, the repository denies access. If you want to ensure that no other user can edit the objects in the production folder while you edit the objects, complete the following steps: 3
1. Check out the object in the production folder so that others cannot modify the object. 2. Check out the object in the development folder and make the necessary changes. 3. Once you complete the changes, check the objects in to the development folder. 4. Check the objects into the production folder. 5. Deploy the most recent object version from development folder to the production folder. When I run a deployment, where are the objects moving to and from? PowerCenter copies them from the source repository to the target repository. If I lock a label or deployment group, can I unlock it and add more objects before deployment? You can lock and unlock a label. You cannot lock a deployment group. You can add objects to a static deployment group at any time. When you run a dynamic deployment group, the Repository Service runs a query at the time of deployment to populate the deployment group. If I have a mapping in a one repository with a version number of 10, and I copy it to another repository, does the version number carry over to the target repository? No. The version number in the target repository is independent of the version number in the source repository. For example, if you copy a mapping with a version number of 10 from a development to a production repository, the version number in the production repository is 1. However, you can use labels to track object versions across repositories. I often receive requests from developers to reverse migrated objects from production to development repositories. If an object in the development repository is a later version than the object in the production repository, how does PowerCenter adjust the version numbers? The version number in the production repository is independent of the version number in the development repository. If you move an object that exists in two repositories from one repository to another, the version number increases by one in the target repository. For example, mapping A is version 2 in the production repository and version 8 in the development repository. If you move the mapping from the production repository to the development repository, the mapping becomes version 9 in the development repository. Viewing Objects and Object History If I want to view an object history, which client tools should I use? You can view an object history in the Designer, Workflow Manager, and Repository Manager. You can also view object history from the PowerCenter Repository Reports. Is the mapping version number appended to the end of a mapping name? No. The version number is a metadata field associated with the object. The name of the object does not change with every version created. Can I view the results of the dynamic deployment group query before I copy the deployment group to the target repository? Can I view objects in a static deployment group? Yes. You can open the query associated with a dynamic deployment group in the Query Editor and then execute it to see the results. Or, you can use the View Group button in the deployment group browser to view the objects in a static deployment group. 4
Can I open objects without checking them out? No, you must check out an object before you can open it. How can I view the relationship between objects in a production and test environment? You can view the relationships between source and target objects in several ways. If objects were deployed using a dynamic deployment groups, the deployment group history shows the history of deployed objects. Also, when you deploy objects, you can apply a label to the group of deployed objects in the source and target repositories. By identifying deployed objects with identifying labels, you can query a particular repository based on the label and object name to see the relationship. PowerCenter Repository Reports also has reports showing deployment history. Can I view a group of objects that use a particular label? You can use a query to see the objects that use a particular label. Use the Label parameter called in the Query Editor to search for objects that use a particular label. You can also add other parameters to your query to narrow the search, such as check-in time, object type, or folder parameters. Non-Versioned Repositories Can I copy objects from a versioned repository to a non-versioned repository and vice- versa? Yes, you can copy objects from a versioned repository to a non-versioned repository. When copying objects from a versioned repository to a non-versioned repository, only the latest checked-in version will be copied because a new version number is assigned to the object only when it is checked-in. Checked-out objects cannot be added to deployment groups and copied to another repository via a deployment group, but the Designer allows the checked-out object to be copied to another repository only by the user who modified that object. Can I use deployment groups in a non-versioned repository? No. You can use deployment groups in a versioned repository only. If you have a non-versioned repository, you can use the Copy Folder Wizard to copy a folder to another repository. Can I copy folders between versioned and non-versioned repositories? Yu can copy folders between versioned and non-versioned repositories. When you copy a folder from a versioned repository to a non-versioned repository, the Copy Deployment Group Wizard copies the latest checked-in version of the objects to the target repository. When you copy a folder from a non-versioned repository to versioned repository, the wizard copies an object as version 1. Can I copy a deployment group between versioned and non-versioned repositories? You can copy a deployment group between versioned and non-versioned repositories. When you copy a deployment group from a versioned repository to a non-versioned repository, the Copy Deployment Group Wizard replaces the objects in the target repository with the objects in the deployment group. When you copy a deployment group from a non-versioned repository to a versioned repository, the wizard creates new version of objects in the target repository. What happens when an object that I copied exists in the target non-versioned repository or a versioned repository? If an object copied to a non-versioned repository exists in the target repository, the wizard deletes the object before copying the object from the deployment group. In a versioned repository, a new 5
version of the object is created. You cannot roll back a deployment from a non-versioned repository. Can I convert a versioned repository to a non-versioned repository? There is no single step to convert a repository with versioning enabled to a repository that does not use versioning. If you use the repository backup/restore, deployment, or repository copy features, the new repository will also have versioning enabled. To create a non-versioned repository from a versioned repository, do the following: 1. Use Informatica Administrator to create a repository that does not have versioning enabled. Note: In PowerCenter 8.6x, use the Administration Console to create a repository. 2. Use the Repository Manager to copy the folders from the versioned repository to the new non-versioned repository. Development, Test, and Production Repositories What happens if I enable versioning in the development and test repositories, but not in the production repositories? You can copy objects between versioned and non-versioned repositories. However, you must copy the folder or use XML import/export to move objects from test repositories to the production repository. You can only use deployment groups when both source and target repositories are versioned. Issues can arise when deploying groups that contain shortcuts between a development, test and production repository. What is the best practice for avoiding these issues? If you have shortcuts, move the group from development to a test environment. Create a new deployment group in the test environment and then migrate from test to a production environment. If you do not have shortcuts, migrate the groups to a test environment. Make the changes to the groups in development after you test it and then migrate from development to production with the same deployment group. Reusable Objects How can I add a reusable object to a deployment group? To add a reusable repository object to a deployment group do the following: In the Repository Manager, open the folder containing the object in the Repository Navigator Window: Tasks. For reusable workflow tasks such as email tasks. Sources. For mapping sources. Targets. For mapping targets. Transformations. For reusable transformations. Mapplets. For mapplets. Worklets. For worklets. Workflows. For workflows. 6
You will see all objects listed in the window on the right. To add an object to a deployment group, right-click the object and select Version >Add to Deployment Group. How do I include reusable parent objects and non-reusable child objects in deployment groups? To include reusable parent objects and non-reusable child objects in a dynamic deployment group, you can use either of the following methods: In the query associated with the dynamic deployment group, include the Reusable Status query parameter and verify that it returns reusable and non-reusable objects. In the query associated with the dynamic deployment group, include the Reusable Status query parameter, and verify that the query returns reusable objects. When you run the dynamic deployment, include all non-reusable dependencies. Third-Party Tools Can PowerCenter integrate with an existing source-control management tool, such as ClearCase or StarTeam? You can use SCM tools, such as ClearCase and StarTeam today by exporting objects to XML and then checking them into these source control systems. You can use pmrep and set up automated scripts to integrate PowerCenter with your favorite SCM tool. Is the integration of PowerCenter versioning capabilities compatible with Microsoft VSS versioning capabilities? Integrating of PowerCenter versioning capabilities with the versioning capabilities of Microsoft VSS is currently not compatible. Versions Can I limit the number of object versions to store in the repository? There is no limit to the number of object versions you can store in a repository. To keep your repository from growing too large, you can purge older versions of objects. How does the repository store versioned objects? Each time you check in an object, the repository increments the version number by one and stores a new version of the object in the repository database. Can I dynamically purge " n" number of objects from a repository? For example, can I query a repository and purge all objects except the most recent 3 versions? Currently you can search for all objects that match a certain set of criteria or only the most recent version of objects that meet certain criteria. You cannot search for the most recent version and n versions before it. If I have ten versions of an object (1 through 10) in my repository, how can I restore version 3 of that object? You can restore an earlier version of an object in the following ways: You can export the previous version and import it as a new version. For example, if you want to restore version 3 of an object, you can export it and import it as version 11. 7
You can purge versions 4-10 so that the object version is the latest version. Do this only if you are certain that you no longer need versions 4-10. Miscellaneous Does the Team-Based Development option support code branching? Versioned repositories do not support code branching explicitly. You can use labels to branch work, but there is currently no merge objects feature. Therefore, you may not be able to bring the branch and the main line of code together. Can I deploy objects using a PowerCenter Client tool? Yes, you can copy deployment groups from the Repository Manager. Can I give certain privileges to a group of users and restrict privileges for others? For example, can I restrict users from checking out objects? You can assign read, write, and execute permissions for folders in the Repository Manager. Can you copy or deploy objects across different repositories that reside on different types of databases, such as Sybase and Oracle? Yes. You can copy or deploy objects to repositories on different databases, but the PowerCenter repositories must be the same version. How can I deploy non-reusable objects using deployment groups? To deploy a non-reusable object, perform the following tasks: Initially the parent object and all dependencies must be deployed. Add the parent object to a static deployment group. Select the Non Reusable option. This will add the parent with the non-reusable objects to the deployment group. Deploy the static group. How does a versioned Sequence Generator transformation update the current value when running a session? If you have multiple versions of a Sequence Generator transformation, the PowerCenter Integration Service updates the current value across all versions when it runs a session. The PowerCenter Integration Service updates the current value across versions regardless of whether you have checked out the Sequence Generator transformation or the parent mapping. The updated current value overrides an edited current value for a Sequence Generator transformation if the two values are different. For example, User 1 creates Sequence Generator transformation and checks it in, saving a current value of 10 to Sequence Generator version 1. Then User 1 checks out the Sequence Generator transformation and enters a new current value of 100 to Sequence Generator version 2. User 1 keeps the Sequence Generator transformation checked out. Meanwhile, User 2 runs a session that uses the Sequence Generator transformation version 1. The PowerCenter Integration Service uses the checked-in value of 10 as the current value when User 2 runs the session. When the session completes, the current value is 150. The PowerCenter Integration Service updates the current value to 150 for version 1 and version 2 of the Sequence Generator transformation even though User 1 has the Sequence Generator transformation checked out. 8
What is the impact of changing the operating system date on the PowerCenter Integration Service machine? Will this have any effect on repository? It is not advisable to switch back and forth between current system dates and future system dates since this will have an adverse affect on the metadata in the repository. PowerCenter uses the current system time to perform many operations in the database such as storing objects, checking in the objects, or storing the utc-ref_time for objects. If a future system date is set and later the date is set back to the current date, all date related operations will be adversely affected. Since the dates will be inaccurate, the dependencies of objects across repositories will also be inaccurate. These dependencies are used by deployment groups, export, and compare objects. After completing a deployment, why is the rollback option is disabled? The rollback option is disabled when viewing the source repository. To rollback, view the target repository then the rollback option will be available. The rollback can be performed only on the target repository while deploying and not on source repository. The target repository is listed as Deployed To under the column Type in Versioning | Deployment | History. Can I list multiple folders in the control file and deploy through the command line? Yes, you can use the OVERRIDEFOLDER element in the control file to list multiple source and target folders. Use the SOURCEFOLDERNAME and TARGETFOLDERNAME attributes to specify the following folders in the source and target repositories: The folder or folders that shortcuts point to. The folder or folders containing the deployment group objects. When you run the pmrep command, DEPLOYDEPLOYMENTGROUP, the deploy process picks the right target folder to use after checking the objects in the deployment group. For example, if a deployment group contains objects with shortcuts to one folder and objects in two folders, you can create a control file with three occurrences of OVERRIDEFOLDER. The following sample control file deploys a deployment group that contains objects with shortcuts pointing to the folder SHAREDSHORTCUT. It also contains objects in folders OBJ ECTFOLDER1 AND OBJ ECTFOLDER2. ! DOCTYPE DEPLOYPARAMS SYSTEM " depcnt l . dt d" > <DEPLOYPARAMS DEFAULTSERVERNAME=" dg_sun_71099" COPYPROGRAMI NFO=" YES" COPYMAPVARPERVALS=" YES" COPYWFLOWVARPERVALS=" YES" COPYWFLOWSESSLOGS=" NO" COPYDEPENDENCY=" YES" LATESTVERSI ONONLY=" YES" RETAI NGENERATEDVAL=" YES" RETAI NSERVERNETVALS=" YES" > <DEPLOYGROUP CLEARSRCDEPLOYGROUP=" NO" > <OVERRI DEFOLDER SOURCEFOLDERNAME=" OBJ ECTFOLDER1" SOURCEFOLDERTYPE=" LOCAL" TARGETFOLDERNAME=" OBJ ECTFOLDER1" TARGETFOLDERTYPE=" LOCAL" / > <OVERRI DEFOLDER SOURCEFOLDERNAME=" OBJ ECTFOLDER2" SOURCEFOLDERTYPE=" LOCAL" TARGETFOLDERNAME=" OBJ ECTFOLDER2" 9
10 TARGETFOLDERTYPE=" LOCAL" / > <OVERRI DEFOLDER SOURCEFOLDERNAME=" SHAREDSHORTCUTS" SOURCEFOLDERTYPE=" GLOBAL" TARGETFOLDERNAME=" SHAREDSHORTCUTS" TARGETFOLDERTYPE=" GLOBAL" / > </ DEPLOYGROUP> </ DEPLOYPARAMS> How does object versioning affect the repository size? If you upgrade from a non-versioned repository to a versioned repository, the repository size could increase up to 20% because of new tables and metadata required to support versioning. The repository grows based on the number of object versions in the repository. Authors Samir Pradhan Consulting Manager, Informatica Professional Services Indra Balasundaram Senior Instructor, Informatica Education Services