Note: This was\is being designed for the specific needs of a specific client.
. But it may help you in the
very basic basics of Control-M version 7 or previous versions. Now I just got a preview for Control-M version 8 and it is a completely different GUI. Still same basic concepts but some of the basic operations and functions have changed identity. I'm sure I'll have stuff on 8 later..... Control-M 7 Basics This is currently a Work In Progress. Ignore any spelling errors or anything else really. Consider it a draft. Thanks. The goal of this guide is to provide a jump in point for Control-M. It is going to cover only the basic understanding of Control-M to allow someone with very little scheduling knowledge to jump into creating and uploading test jobs and learn on the fly. Disclaimer: When in doubt read the manual. BMC provides very easy to read manuals (compared to other applications) they are full of details and tidbits you just wont find anywhere else. I would have to say Control-M is very user intuitive and you can use the manuals as a great reference for any issues that arise. What is covered? How Control-M works Parts of Control-M How to create a job How to upload a table How Control-M works: A basic overview of Control-M requires you to only know 3 parts. The Control-M Data Center, The Agent, and Your server. Basically the Data Center is the Servers that Control-M itself resides on. There are several parts to these servers but it is not necessary for you to know this. Just understand the data center is where your jobs are contained. The Agent is a Control-M component that resides on your server. (there is agent less ability in Control-M 7+) The agent gives you many of the features Control-M offers and acts as a translator between the Data Center and your server. Your Server is where all the actual processing is done. Your scripts reside there that Control-M will trigger and monitor, or it is where commands are issue to from Control-M. Aging this is a very basic understanding of the way control-M works. There are several Servers combined housing various parts of Control-M its database and attached storage. Parts of Control-M. By parts I am referring to the interfaces you will use, GUI's or applications. Average users will use only two of these, Desktop and Enterprise Manager. There are however other interfaces like Configuration manager, Reporting facility and BIM. For the purpose of this we will cover Desktop and Enterprise Manager (EM). Desktop Desktop is used to create Tables and jobs. You will do all of you actual manipulation of the jobs in Desktop. If you were building a chair it would be the workshop you would cut and assemble the pieces. Enterprise Manager (EM) EM is where you follow your job and manipulate it daily. It is where if a job was scheduled to run and you wanted to hold it you would do so. If Control-M 7 Basics Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 14 of 25 12/1/2013 10:18 PM be the workshop you would cut and assemble the pieces. Enterprise Manager (EM) EM is where you follow your job and manipulate it daily. It is where if a job was scheduled to run and you wanted to hold it you would do so. If you wanted to see why the job hasn't run yet, Delete the job, rerun it etcetera you would do this all in EM. With our chair example this is the house you would sit in it at. How to create a job. Now lets get to the best part creating the job. There are several Job types, we are going to cover the following types; Job Type OS : Command, Job & Dummy. We will assume that most jobs are on a Linux platform but will also include a windows job as an example. We will go Tab by Tab in the job creation starting from the General Tab. Also here is a test Draft(Draft to be linked soon) ,the one used in the examples below. Right click on the link and do a Save Target as otherwise it will open as xml in your browser. Follow the steps below and\or use the sample as well. 1. Open Control-M Desktop Sign in using your Control-M ID and password. Sign into the the test server. 2. Click on File | New| Local Workspace - This will open your work area. 3. (Shortcut Step) Click on Edit| New| Job - This is going to create a new job into a blank table. It is a shortcut step because you are not creating a table first. The average group (in CompanyXYZ) does not use Smart tables so if you do refer to the manual. This will create a basic job and give you an error stating that No Control-M has been defined. Just acknowledge the error. 4. Create your Job - The most important items to start out with are Control-M, Parent Table, Application, Group. These tend to remain the same throughout all of your jobs and are the strictest when it comes to following standards. Refer to the screenshot for our test Jobs information. 5. General Tab - General Job information Job Name - Unique Identifier for the job - Follow job naming standards (Required for all Types) Task Type - Allows you to select the type of task (job) it is - Job, Command, Dummy, Detached (Required for all Types) File Name - This would be the file you are referencing on the server. (Required for Job & Detached only) File Path - If you have a file name you need a path. (Required for Job & Detached only) Over Lib - Override library this is mostly used for mainframe jobs. Refer to manual for other uses. Command - If your running a command job you need a command. This is where it would go. (Required for Command only) Hierarchy - This includes the Parent Table, Application and Group that should be standard for all jobs in a group. Owner - This is a very important field. It is the ID that the command or Job you are running requires on the server. Without this your jobs will not run (Required for all Types) Author - This is the person who created or last updated the job. (Required for all Types) Documentation - The URL of where your documentation (Call out procedure\ Run book) is stored. In CompanyXYZ Control-M is monitored 24/7/365 if your job fails someone will see it and check this location for call out requirements. (Required by CompanyXYZ for all Types) Description - Details on what the job does. This helps the team (yours and ours) to know what the purpose of this job is. (Required Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 15 of 25 12/1/2013 10:18 PM Author - This is the person who created or last updated the job. (Required for all Types) Documentation - The URL of where your documentation (Call out procedure\ Run book) is stored. In CompanyXYZ Control-M is monitored 24/7/365 if your job fails someone will see it and check this location for call out requirements. (Required by CompanyXYZ for all Types) Description - Details on what the job does. This helps the team (yours and ours) to know what the purpose of this job is. (Required by CompanyXYZ for all Types Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 16 of 25 12/1/2013 10:18 PM 6. Scheduling Tab - Define when the job should run You can also use a calendar see Using predefined calendars to schedule jobs Chapter 8 in the Control-M User Guide for information on this. (I will not cover it here) This section will allow you to pick the days and times a job is allowed or wanted to run. In Control-M job only come in when they are scheduled or demanded to run by another job. Here you will define when they can run as long as all other requirements on the job are satisfied. We will cover only the following field here: Month Days Week Days Months Month Days - These are the actual days you want the job to run. Highlight every day the job will run. If you want it to run with additional restrictions for example you want the job to run 5 days before the last day of the month you will use the Rules Box in the Days: section. Week Days - These are set up exactly the same as Month days except use the Days of the week. Using the And\Or option between the two fields will allow you to select if you want it to run on the 5 only if its a Wednesday or always on Wednesday's. There is also a Rules box for specific Day of the week rules you may need. Example: Need a job to run the First Tuesday of the month. Moths - Like above can be used in combination with Days and Weeks information or on its own. Example - Allow jobs to run All months or on January March and April. Image below - Show's jobs running on the 1,7,9,13,17,19,25,29 all months and ignores the Week Days. Image below - Shows the schedule as 8 days from the last day of the month and any Sunday or Saturday, but only in the months Jan, Mar, Jun, Aug, Oct and Dec. So this job would run only once if the 8th day from the last day was a Sunday or a Saturday but if it was not it would also run regardless of the day. Note: For any calendar information see the Manual. Smart Tables also operate differently. Please refer to the manual. 7. Execution Tab - Define where and how the job should run on dates scheduled (More to come)....... Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 17 of 25 12/1/2013 10:18 PM (More to come)....... Posted 14th October 2012 by Joshua Houzvicka Labels: BMC Computers Control-M ControlM Help Scheduling 0 Add a comment Control-M Job Handshakes Question was: In the below scenario, 001 and 002 are the main programs. 007 is just a log checker. The layout might be better displayed like this: 001 -> 007 | V 002 So 001 would run, no matter what 007 would also run, whether 001 passed or failed. 002 should only run if 001 passed AND 007 finished. But instead 002 is starting even tho 001 is failed. Solution: Control-M Job Handshakes Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 18 of 25 12/1/2013 10:18 PM 001 wlll creaLe condluon 001_Ck lf compleLes successfully lL wlll creaLe condluon 001_nC1Ck lf lL falls Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 19 of 25 12/1/2013 10:18 PM 002 wlll run only lf lL recelves condluon's 007_Ck and 001_Ck now lf you wanLed 002 Lo run lf 007 nlshed nC1Ck or Ck buL only aer 007 compleLed Lhen you would seL lL up llke Lhls. (8e sure Lo seL a nC1Ck sLep condluon llke we dld ln 001) 007 wlll run lf lL geLs condluon 001_nC1Ck (C8) 001_Ck Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 20 of 25 12/1/2013 10:18 PM 007 wlll run lf lL geLs condluon 001_nC1Ck (C8) 001_Ck Solved :-) Posted 12th October 2012 by Joshua Houzvicka Labels: BMC Computers Control-M ControlM Help Scheduling 0 Add a comment Deftable Script that allows the import of an xml file into control-m. equivalent of a write if you were using a draft file in 6.3 The script name is defimport.sh #!/bin/sh TABLE=$1 if [ $# -lt 1 ] then echo echo "Usage: $0 <Controlm Table Name - dot xml>" echo echo "e.g. /dun/XYZ123/controlm/em613/defimport.sh AP.xml" echo exit 1 fi SET_VARIABLES() { USER=emuser PWD=XXXXXXX SRVR=XYZ123.company.com } EXECUTE_COMMAND() { deftable -u $USER -p $PWD -s $SRVR -src $TABLE /o } ## ## MAIN SECTION SET_VARIABLES EXECUTE_COMMAND exit #!/bin/sh - This statement identifies the script as a SH(Bourne SHell) type TABLE=$1 - This is saying that when the job is run anything in spot 1 is a variable to be used in the job. Example: To run the job you would used command (in CM) defimport AP.xml AP.xml is the variable that will be used in the job in place of $TABLE if [ $# -lt 1 ] - This states that IF there is any variables after the command "$#" there can not be "-" less than "lt" one "1" Deftable Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 21 of 25 12/1/2013 10:18 PM AP.xml is the variable that will be used in the job in place of $TABLE if [ $# -lt 1 ] - This states that IF there is any variables after the command "$#" there can not be "-" less than "lt" one "1" variable then - If the above statement is not ment it will show the information below. echo echo "Usage: $0 <Controlm Table Name - dot xml>" echo echo "e.g. /dun/XYZ123/controlm/em613/defimport.sh AP.xml" echo - This is the information shouted to the sysout if there is something wrong with the format of the job. echo'ed to the screen of the user (via the sysout) fi - this is closure of the if statement. SET_VARIABLES() - Statement saying that there are going to be variable that need to be set within the script { USER=emuser PWD=XXXXXXX SRVR=XYZ123.company.co m } - The variable within the job that will need to be set. Example if $USER appears in the script the job will replace that variable with emuser { must contain the variables.} EXECUTE_COMMAND() - Tells the system that it is going to be executing a command { deftable -u $USER -p $PWD -s $SRVR -src $TABLE /o } - The command that the script is running. like the variable must be { contained }. This is most likely where variable will be used and the command must follow the format of the command as if you were running it on the system without a script. Like in the example -u indicates username for the command. All we did was use the $USER variable so it will use a specific ID. ## - Comments marker ## MAIN SECTION - this was commented out. Believe just leftover from a previous script SET_VARIABLES - Telling the job what it needs to do before it can go on EXECUTE_COMMAND - Its next step exit - Exit completed since there is not a 1 or another code it exits with 0. 0 normally indicates a successful run That's it. If I have something wrong feel free to correct it. I am not a scripter by any definition. I make things do what i have to make them do by trial, error and Google. Posted 12th October 2012 by Joshua Houzvicka Labels: BMC Control-M ControlM Help Scheduling Scripting 0 Add a comment Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 22 of 25 12/1/2013 10:18 PM 0 Add a comment How the Control-M 6.3 to 7.x Draft Convert Process works (Back end) This information is provided so there is complete knowledge transfer of how this is accomplished. It is provided so in the future it is needed for another convert the info to do it is available. It was not available to me besides in manuals and google. Enjoy... The reason this was needed is so that draft files from Control-M 6.3 could be converted into xml so control-m 7 could open them and they could be manipulated. Draft files from 6.3 CANNOT be opened in 7.0 in all cases. This removes that obstacle. (Also stops the need for a migration, system is already in use by other teams) First thing that had to be done was a XML file needed to be created called export7.xml This file contains the TERMS that Control-M looks for when running the export function export7.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE TERMS SYSTEM "terms.dtd"> <TERMS> <TERM> <PARAM NAME="DATACENTER" OP="EQ" VALUE="TEST-QA"/> <PARAM NAME="TABLE_NAME" OP="EQ" VALUE="convert7"/> </TERM> </TERMS> What this means line by line: <?xml version="1.0" encoding="UTF-8"?> This states that the file is XML and the encoding type <!DOCTYPE TERMS SYSTEM "terms.dtd"> This tells the file to look for the terms.dtd file control-m uses to define fields <TERMS> xml code saying start terms needed in xml formatting <TERM> xml code saying start term needed in xml formatting <PARAM NAME="DATACENTER" OP="EQ" VALUE="TEST-QA"/> says look in TEST-QA Data center <PARAM NAME="TABLE_NAME" OP="EQ" VALUE="convert7"/> says look for table names convert7 </TERM> xml code saying start end terms needed in xml formatting </TERMS>xml code saying start end term needed in xml formatting Once this file is created it needs to be placed on XYZ12 in this case we placed it in /dun/XYZ12/controlm /em613 Now we created a control-m job for the convert. using the following details CONTROL-M TEST-QA Job Type: OS Job Name: ExportDefTable Task Type: Command File Name: exportdeftable Just for reference not needed Path: /dun/XYZ12/controlm/em613 Command: exportdeftable -u %%USER1 -p %%PASS1 -s %%GUISERV -arg export7.xml -out %%PATH1 How the Control-M 6.3 to 7.x Draft Convert Process works (Back end) Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 23 of 25 12/1/2013 10:18 PM File Name: exportdeftable Just for reference not needed Path: /dun/XYZ12/controlm/em613 Command: exportdeftable -u %%USER1 -p %%PASS1 -s %%GUISERV -arg export7.xml -out %%PATH1 Owner: emuser Description: Export Table in XML to Control-M DIR Table| Application| and Group can be anything you will identify with We made the job only come in on demand so it has no schedule and has a Confirm needed. Has an Out condition of ExportDefTable_OK + so we can trigger the FTP job And we use the following Variable in the set tab Var Name Value PATH1 /dun/XYZ12/controlm/em613/7ready.xml GUISERV XYZ12.company.com USER1 emuser PASS1 password We did add a shout if this job fails but there is no need. the process we have you will be watching the job as it runs. Identifying the command: exportdeftable - this is the export table command -u %%USER1 - this is the username needed on the server -p %%PASS1 - this is the password needed on the server -s %%GUISERV - this is the server needed on the server -arg export7.xml - this is the file name with the TERMS needed to compare to -out %%PATH1 - this is the Patch and file name for the converted file FTPing the file to a pc There are a couple ways to do this. You could do it manually using Reflections but I decided to make a job to do it. First I installed FileZIlla FTP server on PC 4. Then created a FTP file (in 6.3 AFT is not installed) to use Linux to FTP the file to PC 4. Called the file 7ReadyFTP.sh 7ReadyFTP.sh #!/bin/bash HOST=PC4.enterprise.org #This is the FTP servers host or IP address. USER=ccsops #This is the FTP user that has access to the server. PASS=ccsops #This is the password for the FTP user. # Call 1. Uses the ftp command with the -inv switches. -i turns off interactive prompting. -n Restrains FTP from attempting the auto-login feature. -v enables verbose and progress. ftp -inv $HOST << EOF # Call 2. Here the login credentials are supplied by calling the variables. user $USER $PASS # Call 3. Here you will change to the directory where you want to put or get cd /dun/XYZ12/controlm/em613 # Call4. Here you will tell FTP to put or get the file. put 7ready.xml # or #get test.txt bye EOF This file is pretty descriptive of what is done so I'm not going to add anything else. Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 24 of 25 12/1/2013 10:18 PM bye EOF This file is pretty descriptive of what is done so I'm not going to add anything else. Then I created a simple Control-M job to run this script. using the following details CONTROL-M TEST-QA Job Type: OS Job Name: FTP_7readyxml Task Type: Job File Name: 7ReadyFTP.sh Path: /dun/XYZ12/controlm/em613 Owner: emuser Description: FTP 7ready.xml to PC4 Table| Application| and Group can be anything you will identify with We made the job only come in on demand so it has no schedule and has a In condition of of ExportDefTable_OK + and an out condition of ExportDefTable_OK - to reset the condition in case multiple runs are used in the same day We did add a shout if this job fails but there is no need. the process we have you will be watching the job as it runs. The default home directory for the FTP is the desktop but could be set to anything you would like. Posted 12th October 2012 by Joshua Houzvicka Labels: BMC Computers Control-M ControlM Help Scheduling Scripting 0 Add a comment Control-M 6.3 to 7.x Draft Convert Process Note: "This process was created when we had to convert from version 6.3 to 7.0. We wanted some manual manipulation of the xml file before we uploaded it into the new version. since you cannot just open a draft from one version to the other without exporting it into the xml format." This is to be used for any draft a team sends to us. It is important to complete each step before doing another. If this is not completed you may overwrite previously written data. What is assumed: You know how to use Control-MThe Filezilla FTP server is running on a local PC (PC4 in this example) You have access to PC4 1. Download the draft or save attachment from the email 2. Open the draft file in Desktop for 6.3 (for the example I am using FACTORY.drft) Control-M 6.3 to 7.x Draft Convert Process Learn While I Learn Control-M http://learningcontrolm.blogspot.in/?view=classic 25 of 25 12/1/2013 10:18 PM