Enabling Access to OpenAir From Within NetSuite

The OpenAir Within NetSuite (NetSuite Single Sign-On Integration) feature can be used to integrate NetSuite with OpenAir seamlessly through outbound single sign-on. You can give users of both NetSuite and OpenAir access to OpenAir directly from the NetSuite user interface without them having to sign in to OpenAir.

For an overview of the feature, see OpenAir Within NetSuite.

Warning:

The steps in this help topic describe how to enable and set up the upgraded version of the OpenAir Within NetSuite feature, which uses NetSuite as OIDC Provider as outbound single sign-on method instead of SuiteSignOn. For more information about NetSuite as OIDC Provider, see NetSuite as OIDC Provider (External link to NetSuite SuiteAnswer | Answer ID: 98241).

Until the OpenAir 2023.2 release, OpenAir Within NetSuite relied on the NetSuite Outbound Single Sign-On (SuiteSignOn) feature as outbound single sign-on method. NetSuite plans to end support for SuiteSignOn with the NetSuite 2024.2 for production accounts. The functionality relying on SuiteSignOn may stop working at any time after its end-of-support date.

Upgrade before the NetSuite 2024.2 release to ensure service continuity. For upgrade instructions, see Upgrading OpenAir NetSuite Connector Features to Remove the Dependency on SuiteSignOn.

You should test all integration configuration changes on sandbox NetSuite and OpenAir accounts before implementing them in your production accounts.

To enable access to OpenAir from within NetSuite:

  1. In NetSuite, enable the OAuth 2.0 and NetSuite as OIDC feature. See Enable the NetSuite as OIDC Provider Feature (External link to NetSuite SuiteAnswers | Answer ID: 98270).

  2. Install or update the following bundles. See Installing a Bundle (external link to NetSuite SuiteAnswers | Answer ID: 10223).

    • NetSuite OpenAir SRP Integration (Bundle ID: 369637) to version 4.0 or later.

      This bundle version:

      • Adds fields to the OpenAir: SRP Integration Settings custom record type. Some of the fields are required to enable OpenAir NetSuite Connector to use NetSuite as OIDC Provider for outbound single sign-on.

      • Adds the following permission to the NSOA Connector role:

        • OIDC Provider Setup (Full)

        • OAuth 2.0 Authorized Applications Management (Full)

        • Log in using OAuth 2.0 Access Tokens (Full)

        • Certificate management (Full)

    • NetSuite OpenAir SRP Single Sign-On (Bundle ID: 369619) to version 7.0 or later.

      This bundle version:

      • Updates SuiteScript 2 versions of Suitelet scripts to enable access to OpenAir modules in the PSA center tab using NetSuite as OIDC Provider.

      • Updates the OpenAir: Home module portlet v2.0 Portlet script to enable access to the OpenAir dashboard as a custom portlet on the NetSuite dashboard using NetSuite as OIDC Provider.

      • Adds the script OpenAir: Load subtab to enable access to the OpenAir record as a subtab on the matching record in NetSuite for selected NetSuite record types using NetSuite as OIDC Provider.

      • Switches to using SuiteScript 2 versions of all scripts in the bundle automatically.

      Important:

      Update NetSuite OpenAir SRP Integration bundle (Bundle ID 369637) to Version 4.0 or later before you update NetSuite OpenAir SRP Single Sign-On (Bundle ID 369619) to this version. NetSuite OpenAir SRP Integration bundle (Bundle ID 369637) 4.0 updates the OpenAir: SRP Integration Settings custom record type with settings required for using the NetSuite as OIDC Provider for the OpenAir within NetSuite feature.

      Both bundles include SuiteScript 2 and SuiteScript 1.0 versions of all scripts.

      • After you install or update the NetSuite OpenAir SRP Integration (Bundle ID: 369637) bundle from a previous version, SuiteScript 1.0 version of scripts are deployed by default, unless you switched to SuiteScript 2 versions before the update. You can switch to the SuiteScript 2 versions, or continue to use the updated SuiteScript 1.0 versions. See Switching to SuiteScript 2 Versions of Integration Bundle Scripts.

      • SuiteScript 1.0 versions of scripts in the NetSuite OpenAir SRP Single Sign-On (Bundle ID: 369619) bundle support only the SuiteSignOn method. OpenAir will end support for SuiteScript 1.0 versions of scripts in the NetSuite OpenAir SRP Single Sign-On (Bundle ID: 369619) bundle some time after the NetSuite 2024.2 release, when support for the SuiteSignOn feature ends (date to be confirmed).

  3. If you are using your own custom role for the OpenAir integration instead of the “NSOA Connector” role created by the NetSuite OpenAir SRP Integration (Bundle ID 369637) bundle, make sure that this custom role includes the following permissions and permission levels in the Setup secondary subtab. For more information, see Creating a Custom Role for the Integration in NetSuite.

    • OIDC Provider Setup (Full)

    • OAuth 2.0 Authorized Applications Management (Full)

    • Log in using OAuth 2.0 Access Tokens (Full)

  4. Create a custom integration record for the OpenAir Within NetSuite feature and set it up for OpenAir NetSuite Connector to use NetSuite as OIDC Provider for outbound single sign-on. See Create Integration Records for Applications that Use NetSuite as OIDC Provider for Outbound Single Sign-on (External link to NetSuite SuiteAnswers | Answer ID: 98323).

    1. Use the following settings under the OAuth 2.0 section of the integration record:

      • Authorization code grant — Check the box. This is required for the NetSuite as OIDC Provider integration to work.

      • Redirect URI — Enter one of the following URIs, depending on the type of OpenAir account type you are setting up for the integration:

        • Production account — https://auth.openair.com/oidc/callback/internal_netsuite_<netsuite_account_id>

        • Sandbox account — https://auth.sandbox.openair.com/oidc/callback/internal_netsuite_<netsuite_account_id>

        where <netsuite_account_id> is your NetSuite Account ID

        Important:

        All alphabetical characters in <netsuite_account_id> must be lowercase. If your NetSuite Account ID includes uppercase alphabetical characters, replace them with the lowercase equivalent. When setting up the integration between OpenAir and NetSuite sandbox accounts, the NetSuite sandbox account ID typically includes the characters SB and should be replaced with the lowercase equivalent sb. For example, if your NetSuite Account ID is 345678_SB2, the Redirect URI is https://auth.sandbox.openair.com/oidc/callback/internal_netsuite_345678_sb2.

      • OAuth2.0 consent policy — You should select Never Ask so that the integration is autoapproved by an administrator. With other settings, users need to authorize the integration before being able to view OpenAir within NetSuite UI.

    2. Copy the Consumer key / Client ID and Consumer secret / Client secret and store the information in a safe place. You will need to enter this information on the OpenAir NetSuite Connector credentials form in OpenAir for the NetSuite as OIDC Provider integration to work. See Enabling the OpenAir Within NetSuite Feature in OpenAir – Step 7.

  5. Give users access to the NetSuite as OIDC Provider integration for the OpenAir Within NetSuite feature.

    1. Go to Setup > Integration > NetSuite as OIDC Provider Setup.

    2. Click the name of the custom integration record you created for the OpenAir Within NetSuite feature (Step 4).

      The Application Settings: <Integration Name> window appears.

    3. On the Entities tab and Employees subtab, check the Select All box to give all users access to the NetSuite as OIDC Provider integration for the OpenAir Within NetSuite feature.

    4. On the Roles tab, check the Select All box to give all roles access to the NetSuite as OIDC Provider integration for the OpenAir Within NetSuite feature.

    5. Click Save.

  6. Add the Custom Record Entries permission with View permission level or higher to the relevant roles in NetSuite. Without this permission, users cannot access OpenAir from the NetSuite UI.

    For each role, do the following:

    1. Go to Setup > Users/Roles > User Management > Manage Roles > [Select a role].

    2. Click Edit.

    3. In the Permissions subtab, click the Lists secondary subtab.

    4. Add a row and select Custom Record Entries under Permission, and View under Level.

    5. Click Add.

    6. Click Save.

    Note:

    If you are using standard roles, you will need to customize standard roles, and assign these new custom roles to users to let these users access OpenAir from the NetSuite UI. For more information about managing roles in NetSuite, see Customizing or Creating NetSuite Roles (External link to NetSuite SuiteAnswers | Answer ID: 9896).

  7. Update the preferences for the NetSuite <> OpenAir integration.

    1. Go to Customization > Lists, Records and Fields > Record Types > [List OpenAir: SRP Integration Settings] > [Edit OpenAir SRP Integration Settings Record].

    2. Enter the following information:

      OpenAir SRP Integration Settings record holding integration preferences in NetSuite.
    3. In the NetSuite OpenAir SRP Single Sign-On subtab.

      • (Optional) Change the default Suitelet content height (px) and Suitelet content width (px). These values determine the size of the iFrame showing the OpenAir content in NetSuite for all users.

        Tip:

        To utilize the whole of the available page space, set Suitelet content height (px) and Suitelet content width (px) in function of the browser window height and width. For example, set Suitelet content height (px) to calc(100vh — 184px) and Suitelet content width (px) to calc(100vw — 39px).

      • (Optional) Enter any terminology overrides for OpenAir module names to match any custom terminology defined in OpenAir.

      • Check any of the boxes listed in the following table to show the OpenAir record as a subtab on the matching record in NetSuite. The table lists the integrations settings for each of the supported NetSuite record types and the corresponding types of OpenAir record shown in the OpenAir subtab.

        Setting

        NetSuite record type

        OpenAir record type

        Display OpenAir in Contact subtab

        Contact

        Contact

        Display OpenAir in Customer subtab

        Customer

        Customer

        Display OpenAir in Employee subtab

        Employee

        Employee

        Display OpenAir in Expense report subtab

        Expense Report

        Expense Report

        Display OpenAir in Invoice subtab

        Invoice

        Invoice

        Display OpenAir in Journal entry subtab

        Journal Entry

        Revenue Recognition Transaction

        Display OpenAir in Rate card subtab

        OpenAir: Project Rate Card (custom record type)

        Rate Card

        Display OpenAir in Project subtab

        Project

        Project

        Display OpenAir in Item subtab

        Service Item

        Category

        Note:

        Some of the configuration-based customization available when using the SuiteSignOn feature is not currently available when using the NetSuite as OIDC Provider feature. You would need to deploy custom SuiteScripts to achieve the following functionality.

        • Ability to show the Timesheets module on Support Case records as an OpenAir: Timesheets subtab in NetSuite when using the Tasks (Support Cases) Import Workflow.

        • Ability to set up custom OpenAir subtabs on NetSuite records and displaying OpenAir content other than those listed in the table above. With the SuiteSignOn feature, you could set up custom subtabs and use connection points to associate each custom subtab with a NetSuite record type and use integration variables to specify the OpenAir content shown in this subtab.

        If you want to deploy custom SuiteScripts to add support for custom subtabs and portlets, you can do the following:

        • Use the SuiteScripts included in the bundle as examples. Go to Customization > Scripting > Scripts, filter the list by bundle ID 369619 and review the script records.

        • Use the list of available integration parameters as reference. See Custom Subtabs and Portlets Integration Parameters.

      NetSuite OpenAir SRP Single Sign-on preferences in NetSuite.
    4. Click Save.

  8. Control which OpenAir modules are available from the PSA tab center submenu. See Managing OpenAir Modules Available from the PSA Center Tab.

  9. Control who can access OpenAir from within NetSuite. See Controlling Access to the PSA Center Tab.

  10. Enable the OpenAir Within NetSuite (NetSuite Single Sign-On Integration) feature in OpenAir and allow NetSuite outbound single sign-on access for users. See Enabling the OpenAir Within NetSuite Feature in OpenAir.

    Important:

    You must import user records from NetSuite into OpenAir in addition to explicitly allowing them to use the OpenAir Within NetSuite (NetSuite Single Sign-On Integration) feature on the user demographic form in OpenAir.

Custom Subtabs and Portlets Integration Parameters

If you want to deploy custom SuiteScripts to add support for custom subtabs and portlets, you can do the following:

  • Use the SuiteScripts included in the bundle as examples. Go to Customization > Scripting > Scripts, filter the list by bundle ID 369619 and review the script records.

  • Use the following list of available integration parameters as reference.

Integration Parameters

Value

Required by

app

To show the default view for an OpenAir module in portlets or subtabs, set this variable to the two-letter code for that module.

  • km — Workspaces

  • ma — Account, Home, or Dashboard

  • pm — Projects

  • po — Purchases

  • rm — Resources

  • ta — Timesheets

  • tb — Charges or Invoices

  • te — Expenses

To show the item or transaction record on a subtab for a NetSuite record, set this variable to the two-letter code for the relevant module.

  • ma — Users, Customers, Contacts, Categories, Activities, or Services

  • pm — Projects

  • tb — Charges or Invoices

  • te — Expenses

Custom subtabs and portlets

Additional integration parametes for specific record types:

  • netsuite_employee_id

  • netsuite_customer_id

  • netsuite_project_id

  • netsuite_category_id

  • netsuite_company

  • netsuite_contact_id

  • netsuite_envelope_id

  • netsuite_invoice

  • netsuite_revenue_recognition_transaction

Integration parameter for specific record type. Set the value for the record ID in NetSuite: {id}

Note:

A contact can be associated with more than one company in NetSuite. To refer to a specific contact, set both the company and contact IDs using the integration variables — netsuite_company={company}, netsuite_contact_id={id}

Custom subtabs