Skip Headers
Siebel CRM Assignment Manager Administration Guide
Siebel Innovation Pack 2015
E24725-01
  Go to Documentation Home
Home
Go To Table Of Contents
Contents
Go To Index
Index

Previous
Previous
 
Next
Next
    View PDF

About Running Batch Assignment

Use batch assignment to assign multiple records of an object in a single batch. Typically, you want to run batch jobs periodically when you anticipate the least amount of database activity (such as daily or weekly after-hours).

Batch assignment runs only in rule group mode. At the time of the assignment request, you specify one of the rule groups as the Assignment Key parameter for the AsgnBatch server component job along with the request. You identify the records for batch assignment using an SQL WHERE clause. This WHERE clause is usually based on columns in the base table of the assignment object. For example, an example of a WHERE clause is:

WHERE OWNER_EMP_ID = NULL

You can use this clause to identify all service requests that are not as yet assigned to a owner.

You can have a batch assignment task load only a particular group of rules into memory by specifying the row ID of the rule group in the Assignment Key parameter when you start the task. If no rule group is specified for this parameter, then the batch task loads all rules in the Default Rule Group into memory. If no rule groups have been defined in the application, then all active rules in the database load.


Caution:

For performance reasons, do not run dynamic assignment when running batch assignment. If you run both batch assignment and dynamic assignment in your environment, then the batch assignment can activate dynamic assignment due to triggers created in the database required to run dynamic assignment. Before running batch assignment, deactivate all assignment policies and drop related triggers to prevent dynamic assignment from processing modified rules, objects, and candidates. After completing batch assignment, you can reactivate the assignment policies and re-enable dynamic assignment.

This topic contains the following information:

Running Batch Assignment

This topic is part of "About Running Batch Assignment".

Batch assignment executes the Batch Assignment component (AsgnBatch) to perform assignment in batch mode. This component can take the Object Where Clause parameter and other appropriate parameters that determine the candidates for chosen objects

You typically use batch assignment for importing new records from a legacy system, or when an assignment rule changes, such as when a sales representative no longer manages a specific ZIP Code.

When You Must Run Batch Assignment

You must run Assignment Manager in batch mode if you change nonobject data that can affect assignments. Such situations occur whenever you do the following:

  • Modify assignment rules and want these changes to affect existing objects. You modify assignment rules when you:

    • Add or remove employees, positions, or organizations

    • Add, remove, or update assignment criteria or criteria values

    • Associate a rule with a different rule group or change the rule sequence number

    • Change scores

    • Change activation and expiration dates

    • Change exclusive mode

  • Modify the list of employees, positions, or organizations and you want these changes to affect existing objects.

  • Change the Assignment Manager configuration in Siebel Tools and you want your changes to affect existing objects. You change the Assignment Manager configuration when you:

    • Change Assignment Attribute definitions

    • Change Assignment Criteria definitions

    • Change Assignment Object definitions

    • Change Workflow Policy Object definitions

  • Use Siebel Enterprise Integration Manager (EIM) to perform initial loads (if you do not run Generate Triggers to create the appropriate triggers).


    Note:

    When using Siebel EIM to load assignment rules, then make sure that the column ASGN_TYPE_CD includes a value. If it is left NULL, which is permissible in Siebel EIM, then the rules are loaded but Assignment Manager fails.

  • Determine that existing assignments might not be accurate. Assignment Manager does not change assignments if the existing assignments are correct.


    Note:

    When batch mode is run on correct assignments, even if there are no changes to the team or primary, an update of the record occurs. This situation can disturb other workflow policies relying on various record fields. For example, a workflow policy relying on the PR_POSTN_ID column to trigger an action does not work properly if this field is updated from a new batch assignment. If your deployment uses Microsoft SQL Server, then this note does not apply.

You can configure the Batch Assignment server component for your implementation by adjusting the appropriate parameters. Table 9-1 lists the parameters used by the Batch Assignment component that you can set.

Use the following procedure to run batch assignment.

To run batch assignment

  1. Navigate to the Administration - Server Management screen, and then the Jobs view.

  2. In the Jobs list, click New.

    A new record appears with a system-defined ID automatically populated with a status of Creating.

  3. In the new record, enter the relevant information for the new job.

    1. In the Component/Job field, select Batch Assignment.

    2. In the Requested Server field, type the name of the server on which you want to run this batch request.

    3. (Optional) If you want to run a specific rule group for this batch, then type the row ID of the assignment rule group for which you want rules processed for the AsgnKey parameter.

    4. Complete the rest of the fields for the new record, if needed.

  4. In the Job Parameters list, click New to create a new record, and enter relevant information for the assignment object that you want to assign as part of this batch request.

    1. In Name field, click the select button.

    2. In the Job Parameters dialog box, select Assignment Object Name, and then click OK.

    3. In the Value field, enter the name of the assignment object for the parameter.

      Use the exact name found in Siebel Tools, such as Service Request or Order (Sales Credit Assignment).


    Note:

    Because batch assignment cannot run more than one assignment object per batch, run batch assignment on only one assignment object for each batch.

  5. While still in the Job Parameters list, click New to create a new record so that Assignment Manager uses the Object Where Clause parameter to limit the number of rows processed at one time.

    1. In Name field, click the select button.

    2. In the Job Parameters dialog box, query for ObjWhereClause, click Go, and then click OK.

    3. In the Value field, enter a WHERE clause to select the object instance that you want to process; the WHERE clause can include up to 100 characters.

      For example, to select object instances beginning with ibm, type:

      WHERE name like 'ibm%'
      

    Note:

    If you leave the Value field blank, then all object instances are selected. However, it is strongly recommended that you limit the number of rows that Assignment Manager processes, to make sure that sufficient rollback space is available.

    For more information about using the object WHERE clause, see "Setting the Log Level of Siebel Assignment Manager Events".

  6. (Optional) If you want to enable Contact Denormalization for batch assignment, then add two more component job parameter records with values from the following table.

    Parameter Name Value
    Assignment Object Name Contact Denormalization
    Assignment Mode Denorm

  7. (Optional) If you want to save changes to the database during batch processing, then add another component job parameter, as follows:

    1. In Name field, click the select button.

    2. In the Job Parameters dialog box, query for Batch Size, and then click Go.

    3. In the Value field, enter the number of objects to assign before committing each batch.

  8. In the Job Detail form, click the menu button and choose Start Job.


    Note:

    Monitor the performance of Batch Assignment and increase or decrease the number of running tasks to obtain optimal performance.

Running Batch Assignment Using the Server Manager Command-Line Interface

This topic is part of "About Running Batch Assignment".

You can run batch assignment by running the Batch Assignment (AsgnBatch) component from the Server Manager command-line interface (srvrmgr), using the parameters described in Table 9-1.

For more information about using the Server Manager command-line interface, see Siebel System Administration Guide.

You can have a batch assignment task load only a particular group of rules into memory by specifying two job parameters in the request:

  • Use Key Value = Rule_Group

  • Actual Assignment Key = Rule_Group_ID

For example, the following command tells Assignment Manager to only look at or modify candidates on the team whose rule group ID is 1-34XD4 and runs only those rules that are a part of that rule group.

start task for comp asgnbatch with asgnobjname = "Activity", usekeyval = "Rule Group", ActualAsgnKey = "1-34XD4"

About Running Multiple Instances of Siebel Assignment Manager in Batch Mode

This topic is part of "About Running Batch Assignment".

When there are many objects that must be assigned, you can run multiple instances of Assignment Manager in batch mode to improve performance. First, develop a strategy for specifying multiple batches using the Object Where Clause parameter in the Batch Assignment component. Then, start multiple instances of batch assignment specifying the appropriate Object Where Clause value for each instance.

For example, you can run one instance of batch assignment for accounts that changed today and a different instance of batch assignment for accounts that changed yesterday. Use the Object Where Clause parameter to specify the following:

  • For the batch that processes accounts changed today:

    Object Where Clause: WHERE LAST_UPD = SYSDATE
    
  • For the batch that processes accounts changed yesterday:

    Object Where Clause: WHERE LAST_UPD = SYSDATE - 1
    

    Note:

    These examples use a nonindexed field: LAST_UPD. It is recommended, however, that you use indexed fields for object WHERE clause statements. Also, use the appropriate database datetime functions to determine the current date and time, depending on the database that you are using. This example uses SYSDATE, which is specific to Oracle Database datetime functions.

To process mutually exclusive sets of records when running multiple instances of Assignment Manager simultaneously for the same assignment object, specify an Object Where Clause for each assignment task. You can also distribute the tasks on multiple Siebel Servers to enhance performance.

When Not to Run Multiple, Simultaneous Batch Jobs

Do not run multiple, simultaneous batch jobs in the following cases:

  • If multiple assignment batches are executed for the same object.


    Note:

    If multiple assignment batches are executed for the same object using workload criteria, then the results can potentially vary and might not be as desired.

  • If the batch jobs update rows on the same table or tables.

  • If one batch job updates records in a table or tables used by another batch job as input.

  • If the batch jobs use workload criteria to assign the same object.

Examples of when you should not run multiple simultaneous batch jobs include:

  • Contact and Contact Denormalization, because the same tables are updated.

  • Account and Contact Denormalization, because Contact Denormalization uses Account team as input.

  • Opportunity and Contact Denormalization, because Contact Denormalization uses Opportunity team as input.

About Tuning Batch Assignment for Performance

This topic is part of "About Running Batch Assignment".

If users experience slow response time while running Assignment Manager in batch mode, then review the settings on virus software installed on the applicable server. Implement one or more of the following settings to improve batch assignment performance:

  • Virus scan only program files.

  • Exclude all outbound files from virus scanning.

  • Exclude the RDBMS directory from virus scanning. This directory contains MSB (Oracle message binary) files.

Make sure to run a full virus scan on all files during the weekend or off-peak time if the preceding settings were used.

You can also implement one or more of the following to boost batch performance in batch mode:

  • Increase the BatchSize parameter, for example, set the batch size to 500 (the default is set to 100).

    Increasing the parameter value increases the number of records that are processed within a transaction before a commit occurs, resulting in less resources used and faster assignment.


    Note:

    Only set large batch sizes when there are no or very few users on the system.

  • Create multiple instances of batch assignment (using WHERE clause statements). See "About Running Multiple Instances of Siebel Assignment Manager in Batch Mode".

  • Select a good filter.

    Carefully choosing a filter reduces the time it takes to retrieve Object records.


    Note:

    Use indexed field or fields for comparison in the object WHERE clause, such as Name for Account and Opportunity, or Last Name for Contacts.

  • Use better logic.

    For example, if you want to run Account Assignment based on account name, then you can create multiple batches so that the first batch starts with names starting with the letter C through K, and the second batch starts with the names starting with the letter L. Optionally, additional batches might be created starting with later letters.

    Consider the following logic for the object WHERE clause:

    WHERE NAME > 'B' AND NAME < 'L'
    

    Although this WHERE clause causes the database to retrieve account records with names starting with the letter C through K, the clause specifies that if accounts starting with the letter M through Z are encountered, they are passed on the first round because the values are greater than B. However, in the second round, these records are then eliminated by the database as unneeded, because there is a cap of account names less than L.

    It is better logic to use this object WHERE clause instead:

    WHERE NAME < 'L' AND NAME > 'B'
    

    By switching the order of the conditions, the extra parsing required by the database in the second round is eliminated because most of the names start with a letter greater than B.