Installing PMF for Multi-Tenancy

How to:

The following procedure asserts some steps as best practices. Although it is possible to change them to meet your preferences, note that these best practices make follow-up work with a multi-tenant installation easier to do. For example, naming databases using a different schema (such as DB01 and DB02) works from a technical standpoint, but might result in confusion when updating the configuration at a later point. Following these steps ensures future confusion is reduced.

Note: The following procedure has two sample tenants. ABC Manufacturing will be named ABC and DEF Logistics will be named DEF.


Top of page

x
Procedure: How to Install PMF for Multi-Tenancy
  1. Install a copy of PMF normally by following all of the required steps.
  2. Create new [tenant-name]\pmfdata and [tenant-name]\pmf[rdbms] folders under the IBI approot folder, as configured for the WebFOCUS client and server instances.

    If you have shared client and server instances, you would need to create only one set of folders. If you have a split-tier configuration, you would create separate sets of folders on both the client and the server.

    For example, assuming this is a shared client/server configuration and is using SQL Server as host RDBMS for the PMF Data Mart, you would create ABC\ and DEF\ folders under the application root, and then make one copy of the pmfdata and pmfmss folders (with content) under each of these tenant name folders.

  3. Create a database in the RDBMS for each tenant by following the standard build and DDL process for PMF. Name each database PMF_[TENANT_NAME]. Use the proper DDL to create the data mart. In the case of SQL Server, you would run apps\pmfdbms\mssql_ddl\sqlmss.sql. You would need to run this once for each data mart.

    Tip: For ultimate security purposes, you could also configure the data mart using OS security to only allow the local OS user for each tenant to access this database.

  4. Create a WebFOCUS server profile for each tenant [tenant-name].prf in the WebFOCUS server profiles folder.

    Sample content of a Profile for tenant ABC would be:

    APP MAP pmfdata  X:*****\ibi\apps\ABC\pmfdata
    APP MAP pmfmss   X:*****\ibi\apps\ABC\pmfmss
    -SET &NEW_DATA_DIR='TENANT_NAME/pmfdata';
    APP PREPENDPATH pmfdata pmfmss 
    ENGINE SQLMSS SET CONNECTION_ATTRIBUTES mainstreet [SERVER]/[USER-ID],[PASS];PMF_ABC
  5. Edit the ODIN.CFG of the WebFOCUS Client and add a new client node.

    Sample content of an ODIN.CFG for tenant ABC would be:

    NODE = ABC
    BEGIN
      PROTOCOL = TCP
      HOST = 127.0.0.1
      PORT = 8120
      CLASS = CLIENT
      SECURITY = [SECURITY TOKEN]
      DESCRIPTION = ABC
    END

    Note: [SECURITY TOKEN] is the encrypted user and password for this tenant.

  6. Change the ReportCaster configuration to add the same server as above.
  7. If MR content and Group Views will differ between tenants only, follow these additional steps:
    1. Copy the pmf domain in the MR basedir folder, and change the name to TENANT_NAME (lowercase 8 characters). Rename the folder and HTML File, and add this entry to mrrepos.htm.
    2. Create new MR groups for this tenant and create new Group Views in View Builder (TENANT_NAME PMF Admin, TENANT_NAME PMF Author).

      Additional groups are (Analyst, Consumer).

    3. Open the group view folder in worp_user folder and copy the xml files from pmf_adm_gbv (Admin) and pmf_aut_gbv (Author) and optionally from pmf_aut_gbv (Analyst) and pmf_cns_gbv (Consumer). Note that Group Views can also be created for any additional Functional Roles you might have to configure for your users. For more information, see the PMF documentation.
    4. Open the layout.xml and replace pmf/pmf.htm with name of tenant domain.
  8. For testing purposes, create at least one sample user for each tenant in MR, or in the system of record used for CUS security, and assign them to the proper group.
  9. Log on to PMF for each tenant and add a tenant administration user to the PMF_datamart of the tenant. It is required for simplicity that you add the default pmfadmin ID to each MR Domain as a bootstrap. Once you have logged in as that user and set up additional users, you can delete the pmfadmin ID from PMF and from the MR Domain.
  10. For PMF 5.1.1 and earlier only, open a_hostname.fex in the tenant pmfdata folder and add the following lines:
    -SET &PMF_DOM='xxx/xxx.htm';
    -SET &PMF_FOL='#pmfb0e27bt8f';
    -SET &PMF_SER='NODENAME';

    where:

    NODENAME

    Is the name of the tenant node in ODIN.CFG.

    xxx/xxx.htm

    Is the technical name of tenant PMF domain.

    #pmfb0e27bt8f

    Is the name of the PMF folder within domain (no change needed).

  11. Add the following block to site.wfs:
    <IF> IBIMR_domain EQ "xxx/xxx.htm"
    _site_profile = -INCLUDE FILTERS
    IBIF_wfdescribe = OFF
    IBIC_server=NODENAME
    <ENDIF>

    where:

    NODENAME

    Is the name of the odin.cfg node.

    xxx/xxx.htm

    Is the name of the new domain for this tenant.

  12. Run and test PMF for the tenant.

WebFOCUS