product Command

The product command is used to define the names of products that are sold and licensed as dynamic product configurations and support product named user licensing.

For more information about user licensing, see the Installation Guide: Obtaining and Installing Your User Licenses. The product command allows you to use MQL in addition to the user interface provided in Collaboration and Approvals to manage user licenses. For information about using the user interface, see the Collaboration and Approvals User's Guide: Working with User Licenses.

A dynamic product configuration consists of a base product configuration plus a set of add-on products. For example, 3DLive (LIV) + CATIA Mechanical Design (MDE. Base product configurations are pre-defined products and installed with the software. They can viewed with the “list product * where 'dynamic==false'” command.

This page discusses:

User Level

Organization Manager

Syntax

The command uses this syntax.

[add|check|modify|list|print|delete]product NAME {CLAUSE};
  • NAME is the name of the product.
  • CLAUSEs provide additional information about the product.

The Add Product and Delete Product commands are only valid for dynamic product configurations.

Add Product

The Add Product command is used to define a dynamic product configuration.

Syntax

add product NAME [ADD_ITEM];
  • NAME is the name of the dynamic product configuration you are defining. The name must use the naming convention for dynamic product configurations: CCC-XXXYYYZZZ. A name including only the CCC portion of this naming convention is not valid.

    CCC is the trigram of the base product configuration. This trigram must be a valid base product configuration.

    XXX, YYY and ZZZ are the trigrams of any add-on products that were purchased. Each add-on product must be a trigram. If a trigram for a non-existent add-on product is used, the non-existent trigram will be ignored and a warning will be issued.You must alphabetize this list of trigrams.

    A dynamic product configuration must be a rich client and no trigram in the name can be for a web client. If a trigram for a web client is in the name, then the dynamic product configuration definition will fail.

  • ADD_ITEM provides additional information about the dynamic product configuration. The Add Product clauses are:
    description VALUE 
    title TITLE

Title Clause

This clause specifies the full name of the dynamic product configuration.

Check Product

The Check Product command lets you check if a license for the product exists.

check product license NAME [NAME] [dump [RECORDSEP]];

The result of this command is either true or false.

Modify Product

The Modify Product command is used to add or remove defining clauses and change the value of clause arguments for a product definition.

Syntax

modify product NAME [MOD_ITEM];
  • NAME is the name of the product you want to modify.
  • MOD_ITEM is the type of modification you want to make. You can make the following modifications. You only need to specify fields to be modified.
    Modify Product Clause Specifies
    title TITLE The title or full name of the custom configuration changes to that of the new title entered. This clause only applies to custom configurations.
    description VALUE The description is changed to the VALUE given. This clause only applies to custom configurations.
    add person NAME Adds a person to the product definition. For more information, see Assigning and Removing User Licenses.
    remove person NAME Removes a person from the product definition. For more information, see Assigning and Removing User Licenses.
    [!|not]hidden The hidden option is changed to specify that the object is not hidden.
    property NAME [to ADMININTERFACE NAME] [value STRING] The named property is modified.
    onlineinstance NAME Online instance ID. For more information, see Assigning Casual Licenses.
    casualhour HOUR Prepaid hours of a casual license. For more information, see Assigning Casual Licenses.

Assigning and Removing User Licenses

When you add a user to a product definition, a license is assigned to that user. This license is not automatically reserved for that user. Licenses are reserved for a user ONLY at the time they log in. This means if a user is assigned a license for a product after they have logged in, the new license will not be reserved until that user logs in again. Once a user logs in, a license is consumed in each product that contains a role assigned to that user.

Users assigned to roles in different products require licenses to be available in all those products. If a license is not available for every product the user requires, the user will not be able to login. All of the licenses associated with a user must be available. Additionally, even if a user is unable to login because all of the licenses associated are not available, a CPF license will still be reserved for that user.

When you remove a user from a product definition via MQL, that user’s license is not immediately released and made available. To release the user license immediately, you must remove the user via the user interface in BPS.

Assigning Casual Licenses

Casual licensing allows a customer to order a license with a maximum number of prepaid usage hours per month.

The MQL command to add, remove, or update the number of casual license hours is as follows:

modify product NAME [MOD_ITEM];
  • MOD_ITEM is:
    |add [onlineinstance NAME]  [casualhour HOUR] person NAME [person NAME]   |
    |remove [onlineinstance NAME] person [all|NAME] [person NAME]             |
    |update [onlineinstance NAME] [casualhour HOUR] person NAME [person NAME] |

The following is a typical casual licensing scenario:

  1. The V6 Customer orders casual licenses from DSX-ECO and enrolls the license keys into the Dassault Systèmes License Server (DSLS):
    1. Order casual licenses (prepaid hours per month) from DSX-ECO.
    2. Enroll casual license keys into the DSLS.
  2. The V6 Administrator assigns products to persons. Each product-person assignment can be either a full product assignment or a casual product assignment. A full product assignment means that the kernel requests a full license when the user logs in, whereas a casual product assignment means that the kernel requests a casual license instead of a full license. A person can have several products assigned, including some full products and some casual products, but cannot have a product assigned more than once. For example, a person could have two products assigned, such as CPF (full) and ENG (casual, 40 hours), but not the same product assigned twice, such as CPF (full) and CPF (casual, 40 hours).
    1. Retrieve casual license info (including prepaid hours) from the DSLS.
    2. Assign full and casual products (with prepaid hours) to persons. The number of prepaid hours must be specified when doing the casual product assignment because a customer might order, for example, two casual CPF licenses (one for 30 hours per month and another for 40 hours per month). The kernel needs to know which casual license is assigned to the person, CPF 30 hours or CPF 40 hours.
    3. Save product-person assignments to the database.
  3. The V6 webtop user can log into the Server once all required products are assigned to that user, and start to work. After the person’s username and password have been entered at login time, the kernel retrieves all assigned products (full and casual) from the database and reserves the corresponding licenses from the DSLS.

    The total number of hours that a casual license has been used per month is calculated by continually sending a User Still Alive event to the DSLS at a defined interval (the default is 15 minutes). The DSLS calculates the total hours that a casual license has been used in a month based on the login time stamp and these User Still Alive events.

    1. Log into the Server.
    2. Retrieve the assigned products (full and casual) from the database.
    3. Reserve licenses by passing the full and casual (with prepaid hours) assigned product list to the DSLS.
    4. Runtime end user interaction.
    5. Send User Still Alive events to the DSLS (for casual license users only, unless MX_NUL_FULL_USAGE_REPORT is set to true).
    6. Log out.
    7. Send User End Session event to tell the DSLS to stop recording usage (for casual license users only, unless the variable MX_NUL_FULL_USAGE_REPORT is set to true).

For casual users to be able to check the User Still Alive and User End Session events, the MX_NUL_TRACE variable must be enabled.

The selectables casualhour and onlineinstance, and their subselectables, can be applied to types Person and Product to retrieve information on their casual licenses.

Below are two examples of the MQL code that assigns the product ENG to two persons, one with a full license and another with a casual license for 30 hours per month. The first example shows the case of a non-online instance, the second one shows a case using an online instance:

// assign product to person (non-onlineinstance case)
MQL<1>modify product ENG add person p1;
MQL<2>modify product ENG add casualhour 30 person p2;
MQL<3>print product ENG select person;
product   ENG
   person = p1
MQL<4>print product ENG select casualhour;
product   ENG
   casualhour = 30
MQL<5>print product ENG select casualhour[30].person;
product   ENG
   casualhour[30].person = p2
MQL<6>print person p1 select product;
person    p1
   product = ENG
MQL<7>print person p2 select casualhour;
person    p2
   casualhour = 30
MQL<8>print person p2 select casualhour[30].product;
person    p2
   casualhour[30].product = ENG

// assign product to person (onlineinstance case)
MQL<1>modify product ENG add onlineinstance oi1 person p3;
MQL<2>modify product ENG add onlineinstance oi1 casualhour 40 person p4;
MQL<3>print product ENG select onlineinstance[oi1].person;
product   ENG
   onlineinstance[oi1].person = p3
MQL<4>print product ENG select onlineinstance[oi1].casualhour;
product   ENG
   onlineinstance[oi1].casualhour = 40
MQL<5>print product ENG select onlineinstance[oi1].casualhour[40].person;
product   ENG
   onlineinstance[oi1].casualhour[40].person = p4
MQL<6>print person p3 select onlineinstance[oi1].product;
product   ENG
   onlineinstance[oi1].product = ENG
MQL<7>print person p4 select onlineinstance[oi1].casualhour;
person    p4
   onlineinstance[oi1].casualhour = 40
MQL<8>print person p4 select onlineinstance[oi1].casualhour[40].product;
person    p4
   onlineinstance[oi1].casualhour[40].product = ENG

Delete Product

The Delete product command allows you to delete a dynamic product configuration that is no longer needed. Because deleting certain items can affect other elements, use it carefully.

delete product NAME;
  • NAME is the name of the dynamic product configuration you are deleting.