Introduction

Oracle Sales and Service modules of Oracle Fusion Applications can be extended to add WebCenter Content-based managed attachments associated with specific records of the module.

Use the solution Managed Attachments using Application Composer-based Standard Business Objects if:

Use this solution Managed Attachments using Page Composer and Visual Builder Cloud Service-based Application Extension if

Common Steps for Managed Attachments

The steps in this section are common for the solutions based on Application Composer Standard Business Objects or VBCS-based Application Extension.

Learn to install and configure the Fusion Application adapters, enable embedding of managed attachments user interface, enable advanced security in WebCenter Content, and other key configurations you need to enable integration of Oracle Sales and Service application with WebCenter Content.

Configure WebCenter Content for FA Integration

Log in to wls-1 of WebCenter Content stack VMs and run the following commands to configure it for FA integration.

sudo su - oracle

# For existing stacks after patching (This will have latest scripts and should be used as preferred location)
cd /u01/scripts/patch/lcm/sh

# For new stacks (If in case configure_wcc_fa_adapter.sh script is not found on above path)
cd /u01/scripts/lcm/sh

For IDCS SSO-based environments

Run the configuration script with the following arguments.

sh configure_wcc_fa_adapter.sh --fa_domain <fa-domain-host> --ucm_domain <ucm domain host> --idcs_user <WCC Idcs Administrator user>

When the script prompts for password input as shown below, enter the administrator password for WebCenter Content IDCS:

Please provide IDCS User's Password: 

For non-IDCS SSO environments

Run the configuration script with the following arguments.

sh configure_wcc_fa_adapter.sh --fa_domain <fa-domain-host> --ucm_domain <ucm domain host>

Enable Advanced Security in WebCenter Content

  1. Log in to WebCenter Content as an administrator.

  2. Navigate to Administration and then to Configuration for wcc****.

  3. On the Configuration Information page, make a note of the value for the search engine under the System Configuration section.

  4. Under Administration, click Oracle Advanced Security Configurations.

  5. On the Oracle Advanced Security Configurations page, complete the following updates:

    If WebCenter Content is set to use DATABASE.METADATA as the search engine:

    1. Select the Core QueryText Security Config check box.

    2. Custom table names: AFOBJECTS

    3. Custom field names: Leave this field blank.

    4. Click Update.

    If WebCenter Content is set to use DATABASE.FULLTEXT or OracleTextSearch as the search engine:

    1. Select the Core QueryText Security Config check box.

    2. Custom table names: AFOBJECTS

    3. Custom field names: dreleasestate

    4. Click Update.

    If custom metadata is used with DATABASE.METADATA:

    1. Select the Core QueryText Security Config check box.

    2. Custom table names: Leave this field blank.

    3. Custom field names: <xCustomMetadataField1; xCustomMetadataField2; xCustomMetadataField3;...>

    4. Click Update.

    If custom metadata is used with DATABASE.FULLTEXT or OracleTextSearch:

    1. Select the Core QueryText Security Config check box.

    2. Custom table names: Leave this field blank.

    3. Custom field names: <xCustomMetadataField1; xCustomMetadataField2; xCustomMetadataField3;...>

    4. Click Update.

Enable Webservice Security Policy for WebCenter Content Grant Webservice

In case the required policy is already applied, skip this section.

  1. Log in to Enterprise Manager as an administrator.

  2. Navigate to UCM_Server1, Deployments, Oracle UCM Webservices, Modules and Components, Webservices, AfGrantService, and then to AfGrantAccessPort.

  3. Click Attach/Detach policies.

  4. Click Directly Attached Policies and then click Attach/Detach.

  5. In the Available Policies section, search for oracle/wss_http_token_service_policy

  6. Click Attach, click Validate, and then click Ok.

  7. Restart all WebCenter Content servers.

Configure Managed Attachments UI locale

The Managed attachments UI will automatically pick up locale from Oracle Sales and Service Application locale and display the UI in that locale. For this to work, the locale should be enabled in the WebCenter Content environment by the administrator by completing the following steps.

  1. Navigate to WebCenter Content, Administration, and then Localization page.
  2. Select the desired locale to enable it and click Update.

If the locale is not enabled in WebCenter Content or not available, then UI will use default locale.

Create a Sandbox

Create a sandbox to implement the Oracle Sales and Service application changes for this integration:

  1. Sign in to Oracle Sales and Service application as an administrator.

  2. Click the hamburger icon in the upper left corner of the page. Select the Configuration option from the menu and then select Sandboxes.

  3. On the Create Sandbox page, complete the following fields:

    1. On the Sandboxes page, click Create Sandbox.

      The image shows the Create Sandbox page with fields such as Name, Description, Publishable, and the All Tools list. The option Yes is selected in the Publishable field in this example and the Application Composer check box is selected in the All Tools list.

    2. On the Create Sandbox page, specify a name for this sandbox in the Name field (for example, WebCenter Content Records Management Integration).

    3. From the All Tools list, select the Application Composer check box.

    4. If you are using Page Composer and VBCS Application Extension-based solution, then select the Page Composer check box too.

    5. Click Create and Enter.

Create WebCenter Content Grant Webservice

  1. To enter the application composer where you'll be making your WebCenter Content integration changes, click Tools in the upper left corner of the page and then select Application Composer from the drop-down list.

  2. Choose Common Setup and then Web Services from the left navigation menu.

  3. On the Web Services page, click the Create a new Web Service icon.

  4. In the Select Connection Type dialog, select the SOAP option and click OK.

  5. On the Create SOAP Web Services Connection page, complete the following fields:

    1. In the Name field, specify WebCenterContentGrantWebservice as the name of the folder.

    2. In the URL field, enter https://<WebCenter Content URL>/idcws/AfGrantAccess?WSDL as the web service URL.

    3. Click Read WSDL.

    4. Navigate to Security, Security Scheme, and then select Call with basic authentication.

    5. In the Credential key field, click + to add a credential key. If credentials for this web service already exist, you can select the existing credentials, otherwise, create one using the following steps.

      1. Credential Key - Specify a name.

      2. User name - If WebCenter Content is configured with IDCS Single Sign-on, then specify the administrator name for WebCenter Content IDCS, otherwise, specify the administrator name for WebCenter Content Weblogic.

      3. Password - If WebCenter Content is configured with IDCS Single Sign-on, then specify the administrator password for WebCenter Content IDCS, otherwise, specify the administrator password for WebCenter Content Weblogic.

Note: For WebCenter Content web service, use HTTPS-based URL (not HTTP-based). Also, the URL should have valid HTTPS certificates because the FA connection to the web service will not work without valid HTTPS certificates. It will not work with self-signed certificates.

Managed Attachments Using Application Composer-Based Standard Business Objects

For the module you are planning to add Managed Attachments to, use this solution if:

Prerequisites

Complete the steps in section Common Steps for Managed Attachments if not completed already.

Configure Oracle Sales and Service Application Integration

Learn to create a mashup, and other key configurations you need to configure the Oracle Sales and Service application integration.

Create a Global Function to Call WebCenter Content Grant

  1. Choose Common Setup and then Global Functions from the left navigation menu.

  2. On the Global Functions page, click the Add a Global Function icon.

  3. On the Create Global Function page, complete the following fields:

    1. In the Function Name field, specify WebCenterContentGrantWebserviceFunction as the name of the function.

    2. Select String from the Returns drop-down menu.

    3. In the Parameters section, click the Add Parameter icon and add the following fields:

      1. Name - SrNumber

      2. Type - String

      In the Edit Script field, paste the following script:

      println("Executing WebCenter Content Grant Access for SR " + SrNumber);
      
      def curUserName = adf.context.getSecurityContext().getUserName();
      def locale = adf.context.getLocale();
      
      def response = [:];
      // NOTE - Change this to a name corresponding to your instance
      def applicationName = "MyCompanySalesCloud";
      
      def request =
        [
          commandNamespace : "UCM_Managed_Attachments",
          solutionNamespace: "UCM_Managed_Attachments",
          username         : curUserName,
          userContext      : [],
          requestParameters:
            [
              entry:
                [[
                   key  : "businessObjectType",
                   value: "ServiceRequest",
                 ],
                 [
                   key  : "businessObjectKey1",
                   value: "SRNumber",
                 ],
                 [
                   key  : "businessObjectValue1",
                   value: SrNumber,
                 ],
                 [
                   key  : "application",
                   value: applicationName,
                 ],
                 [
                   key  : "labelValue1",
                   value: "Managed Attachments - Service Request Documents",
                 ]]
            ]
        ];
      
      
      try {
        // Execute WebCenter Content Grant web service
        response = adf.webServices.WebCenterContentGrantWebservice.execute(request);
      
        // Retrieve WebCenter Content MA URL from response
        String ucmMaUrl = "";
        String afGuidVal = "";
        def responseCommands = response["responseCommands"].get(0);
        for (responseCommand in responseCommands) {
          if (responseCommand["command"] == "OPEN_BROWSER") {
            String url = responseCommand["value"];
      
            // Extract afGuid
            url = url.substring(url.indexOf("?") + 1);
            String[] urlParams = url.split('&');
            for (String urlParam : urlParams) {
              String[] nameValPair = urlParam.split('=');
              if (nameValPair[0] == "afGuid") {
                afGuidVal = nameValPair[1];
                break;
              }
            }
            ucmMaUrl = "&afGuid=" + afGuidVal + "&locale=" + locale;
      
            println("Extracted WebCenter Content attachment url suffix " + ucmMaUrl);
            break;
          }
        }
      
        return ucmMaUrl;
      } catch (Exception e) {
        println("Error getting WebCenter Content Managed attachment url for SR " + SrNumber + " " + e);
      }

      Note: For applicationName, enter a name for your Sales cloud instance. For example, <MyCompany>SalesCloud.

      About Grant webservice payload

      You can specify up to 5 keys (businessObjectKey1,. businessObjectKey5) and their corresponding values (businessObjectValue1,. businessObjectValue5) respectively in the payload. The maximum character lengths of various parameters are:

      • applicationName: 20

      • businessObjectType: 100

      • businessObjectKey's: 80

      • businessObjectValue's: 80

      These variables should form a unique combination to attach the documents. They should be provided the same values consistently for a given object record so that previously attached documents (if any) are retrieved using the same combination of values.

      Specifying Custom Title in Managed Attachments UI

      Redwood UI

      For managed attachments title customization use the maHeader and maTitle url parameters described in Configuration Reference.

      Non-Redwood UI

      The value for the key “labelValue1” in the payload is used to customize the managed attachments UI title. The custom title will not be translated to other languages. This field is not mandatory. If this field is not provided in the payload, a default title will be present in the UI.

  4. Click Save and Close.

Create a Mashup

A Mashup is a window into an independent external application such as WebCenter Content. To create a Mashup to embed the WebCenter Content embedded user interface (so that it can be exposed in an Oracle Sales and Service business object):

  1. Choose Common Setup and Mashup Content from the left navigation menu.

  2. On the Mashup Content: Web Applications page, click Register Web Application.

  3. On the Register Web Application page, complete the following fields:

    1. In the Name field, specify WebCenterContentManagedAttachmentsUIMashup as the name of the application.

    2. For the Type field, select the Groovy Expression option.

    3. In the URL Definition field, enter https://<WebCenter Content Server Host>:<WebCenter Content Server Port>/cs/idcplg?IdcService=EMBEDLOGIN_HOME&ActAsAnonymous=true as the WebCenter Content embedded UI URL.

    The image shows the Register Web Application page with fields such as Name, Type, and URL Definition.

  4. Click Save and Close.

Configure Specific Business Object Integration

In order to configure specific business object integration, learn to extend the business object.

Extend the Business Object

Business objects can be extended using a Mashup (like the one created earlier) to expose an external application such as WebCenter Content within the Business Object user interface. To create a new service request page layout to include the WebCenter Content integration:

  1. Choose Objects, then Standard Objects, then Service Request, and then Pages from the left navigation menu.

  2. On the Service Request: Pages page, in the Details Page Layouts section, click the Duplicate Details Page Layout icon.

    Note: If a custom page has already been created, then that page can be used for the WebCenter Content asset integration instead of creating a new one and step 3 can be skipped.

  3. In the Duplicate Layout dialog, complete the following fields:

    1. In the New Layout Name field, specify WebCenterContentEmbeddedUIIntegration as the name.

    2. In the Source Layout field, select Standard layout from the drop-down menu.

    3. Click Save and Edit.

  4. In the Details Layout page, select the Add icon from the bottom of the left navigation menu in the Subtabs Region section to add the WebCenter Content embedded UI.

  5. Select the Mashup Content option. Click Next.

  6. On the next page, select the WebCenterContentEmbeddedAssetsUIMashup option that was created earlier and click Insert.

  7. On the next page, complete the following fields:

    1. In the Display Label field, enter Managed Attachments.

    2. For the Display Icon, click Change Icon if you want to change the default icon that shows up in the service request UI as a tab.

    3. In the Edit Script field, paste the following script:

      println("Service Request Managed Attachments Tab Selected: " + SrNumber)
      
      // Create MA url based off the item SrNumber
      def ucmMaUrl = adf.util.WebCenterContentGrantWebserviceFunction(SrNumber);
      
      println("WebCenter Content MA Url suffix " + ucmMaUrl);
      
      return ucmMaUrl;
    4. Click Next.

    5. Click Save and Close.

Verify the Integration in the Sandbox

Now, verify if the integration was set up properly.

Create a New Service Request

To create a new service request:

  1. Click the site name just to the right of the Hamburger icon in the upper left corner of the page and then select the Service tab.

  2. In the Service page, select the Service Requests application.

  3. On the Service Requests page, click Create Service Request.

  4. On the Create Service Request page, complete the following fields for the service request:

    1. In the Title field, enter the service request name (for example, My Service Request).

    2. Click Save and Continue.

Add Attachments

  1. Click the Managed Attachments tab to load the attached assets in the WebCenter Content embedded user interface.

    Note: Sign in as the same user used in the Oracle Sales and Service application (these users must match between systems). If you're using Chrome in Incognito mode, you must allow cookies. If not already logged in to WebCenter Content, you must allow pop-ups for the log-in window to appear.

  2. Click New.

  3. Enter a title.

  4. Click Browse and select the file to attach.

  5. Click Upload.

  6. Click Refresh to refresh the attachments, or navigate to another tab and come back to the Managed Attachments tab to refresh it.

Publish the Sandbox and Use the Integration

Once the integration is tested and is working as expected, then the changes you made can be published for public consumption.

Publish the Sandbox

For publishing, enter the following sandbox details:

  1. Select the name of your sandbox in the upper left corner of the page, (for example, WebCenter Content Managed Attachments Integration) and then select the Sandbox Details option from the drop-down menu.

  2. On the Sandbox Details page, click Publish to publish the sandbox.

    In the warning message box, click Yes if you’re certain that the integration is working as expected and you’re ready to make these changes permanent (and public).

Use the Integration

Production users should now be able to use the WebCenter Content Managed Attachments within the context of a service request.

Organizations can now easily access, view, and upload assets associated with a service request directly from the Managed Attachments tab with all material stored within Oracle WebCenter Content. The embedded Oracle WebCenter Content Managed Attachment UI provides an easy and modern interface for contributing and storing content.

Managed Attachments Using Page Composer and Visual Builder Cloud Service-Based Application Extension

Follow this approach if:

  1. The module does not have a standard business object in Application Composer.

  2. The module page is editable by Page Composer and a hyperlink can be added in the page.

  3. The module page has exposed the following to Page Composer: Unique binding parameter(s) in the page which can be used in the link to uniquely identify the object to which the attachments can be associated.

Learn how to add the Managed Attachments functionality to the Invoices page under Payables.

Prerequisites

The administrator and the users of this solution should have Custom Objects Administration role - ORA_CRM_EXTN_ROLE.

Complete the steps in section Common Steps for Managed Attachments if not completed already.

Validate Access to a Given Invoice Number for the Current User Using Fusion Cloud REST API

For a given invoice, let us validate if the current user has access to the object. Only then corresponding managed attachments of the object will be shown to the user.

Create Invoice Access Webservice

This webservice will return the invoice based on the given invoice number if the current user has access to the invoice.

  1. To enter the Application Composer where you’ll be making your WebCenter Content integration changes, click Tools in the upper left corner of the page and then select Application Composer from the drop-down list.

  2. Choose Common Setup and then Web Services from the left navigation menu.

  3. On the Web Services page, click the Create a new Web Service icon.

  4. In the Select Connection Type dialog, select the REST option and click OK.

  5. On the Create REST Web Services Connection page, complete the following fields:

    1. Name - InvoiceWebservice

    2. URL - https://{faHost}/fscmRestApi/resources/11.13.18.05/invoices?q=InvoiceNumber=##InvoiceNumber##

    3. Authentication Scheme - Propagate user identity using SAML over SSL

  6. In Select and configure Methods against the Resource field:

    1. Select GET.

    2. Request Payload - Choose Schema URL.

    3. Response Payload - Choose Code Sample and enter value as {}.

  7. Click Save and Close.

Note
Currently, this is the Fusion Apps Cloud REST API version - 11.13.18.05. Please choose the appropriate version as per your environment.

Create a Global Function to Validate the Given Invoice

This global function calls InvoiceWebservice to check if the current user has access to the invoice object.

  1. Choose Common Setup and then Global Functions from the left navigation menu.

  2. On the Global Functions page, click the Add a Global Function icon.

  3. On the Create Global Function page, complete the following fields:

    • In the Function Name field, specify InvoiceValidate as the name of the function.

    • Select void from the Returns drop-down list.

  4. In the Parameters section, click the Add Parameter icon, and add the following fields:

    1. Name - InvoiceNumber

    2. Type - String

  5. In the Edit Script field, paste the following script:

    // validate InvoiceNumber is not empty
    InvoiceNumber = InvoiceNumber == null ? "" : InvoiceNumber.trim();
    if (InvoiceNumber.length() == 0) {
        String msg = "Error - InvoiceNumber is empty";
    
        println(msg);
        throw new oracle.jbo.ValidationException(msg);
    }
    
    def invoicesMap = null;
    
    // Verify if user has access to invoice object
    try {
        def invoiceWs = adf.webServices.InvoiceWebservice;
        invoiceWs.requestHTTPHeaders = ['Content-Type': 'application/json'];
        invoicesMap = invoiceWs.GET(InvoiceNumber);
    } catch (Exception e) {
        String msg = "Error accessing Invoice object for - " + InvoiceNumber + " " + e;
    
        println(msg);
        throw new oracle.jbo.ValidationException(msg);
    }
    
    
    // validate only one unique invoice is returned.
    String countStr = invoicesMap["count"];
    int count = new Integer(countStr);
    if (count == 0) {
        String msg = "Error in invoice access - No invoice found with InvoiceNumber " + InvoiceNumber;
    
        println(msg);
        throw new oracle.jbo.ValidationException(msg);
    } else if (count > 1) {
        String msg = "Error - Multiple invoices found with InvoiceNumber " + InvoiceNumber + ". Need unique key for managed attachments";
    
        println(msg);
        throw new oracle.jbo.ValidationException(msg);
    } else if (count != 1) {
        String msg = "Error in invoice access for InvoiceNumber - " + InvoiceNumber + ". Found invalid number of objects " + count;
    
        println(msg);
        throw new oracle.jbo.ValidationException(msg);
    }
    
    // Validate that api has returned correct object
    def retInvoiceObj = invoicesMap["items"].get(0);
    String retInvoiceNumber = retInvoiceObj["InvoiceNumber"];
    if (!(retInvoiceNumber == InvoiceNumber)){
        String msg = "Error in Invoice access - Invalid invoice found with InvoiceNumber " + InvoiceNumber;
    
        println(msg);
        throw new oracle.jbo.ValidationException(msg);
    }
  6. Click Save and Close.

Create Custom Object-Based Webservice to Generate Managed Attachment GUID

Create a Custom Business Object

  1. Click the “+” sign next to Custom Objects.

  2. Enter details of the custom object as follows:

    1. Display Label - WccManagedAttachment

    2. Plural Label - WccManagedAttachments

    3. Record Name Label - WccManagedAttachment

    4. Record Name Data Type select - Automatically Generated Sequence

    5. Sequence Format - Choose a prefix and sequence. For example: MA-{0000000}-{YY}{MM}{DD}

    6. Object Name - WccManagedAttachment

    7. Description - Wcc Managed Attachment

  3. Click OK and wait for the custom object to get created.

  4. Click Pages and click Create Default Pages.

Create a Function to Obtain and Expose the Managed Attachments GUID as a REST Webservice

  1. For custom object WccManagedAttachment, click Server Scripts, Object Functions, and then the Add a new Object Function button.

  2. Enter details as follows:

    1. Function Name - GetWccMaDocsUrl

    2. Type - Row Level

    3. Returns - String

    4. Visibility - Callable by External Systems

  3. Parameters:

    Create parameters of type String with the following names:

    • appName, boType

    • boKey1, boKey2, boKey3, boKey4, boKey5

    • boValue1, boValue2, boValue3, boValue4, boValue5

  4. Enter script code as specified below:

        // Verify if user has access to FA object
        if (boType == "Invoice") {
          String InvoiceNumber = boValue1;
          adf.util.InvoiceValidate(InvoiceNumber);
        } else {
          String msg = "Error - Unsupported boType - " + boType;
          println(msg);
          return msg;
        }
    
    
        // validate appName
        if (appName == null || appName.trim().length() == 0) {
          String msg = "Error - Mandatory parameter not available - appName";
          println(msg);
          return msg;
        }
    
        // validate boType
        if (boType == null || boType.trim().length() == 0) {
          String msg = "Error - Mandatory parameter not available - boType";
          println(msg);
          return msg;
        }
    
        // validate that boKey1 and boValue1 are available
        if (boKey1 == null || boKey1.trim().length() == 0) {
          String msg = "Error - Mandatory parameter not available - boKey1";
          println(msg);
          return msg;
        }
    
        if (boValue1 == null || boValue1.trim().length() == 0) {
          String msg = "Error - Mandatory parameter not available - boValue1";
          println(msg);
          return msg;
        }
    
        // Build request
        def curUserName = adf.context.getSecurityContext().getUserName();
    
        def request =
          [
            commandNamespace : "UCM_Managed_Attachments",
            solutionNamespace: "UCM_Managed_Attachments",
            username         : curUserName,
            userContext      : [],
            requestParameters:
              [
                entry:
                  [[
                     key  : "application",
                     value: appName,
                   ],
                   [
                     key  : "businessObjectType",
                     value: boType,
                   ]]
              ]
          ];
    
        // add key/value pairs to "entry"
        List<Map> entries = (List<Map>) request["requestParameters"]["entry"];
        def boKeys = [boKey1, boKey2, boKey3, boKey4, boKey5];
        def boValues = [boValue1, boValue2, boValue3, boValue4, boValue5];
    
        for (int i = 0; i < 5; i++) {
          String boKey = boKeys.get(i);
          boKey = boKey == null ? "" : boKey.trim();
    
          String boValue = boValues.get(i);
          boValue = boValue == null ? "" : boValue.trim();
    
          def keyIndex = i + 1;
          // validate that both key and value are present
          if (boKey.length() > 0 && boValue.length() == 0) {
            def msg = "Error - For key boKey" + keyIndex + ', Value not available for boValue' + keyIndex;
            return msg;
          }
    
          if (boKey.length() == 0 && boValue.length() > 0) {
            def msg = "Error - For value boValue" + keyIndex + ', Key not available for boKey' + keyIndex;
            return msg;
          }
    
          // add key, for example: [ key  : "businessObjectKey1", value: "InvoiceNumber" ],
          if (boKey.length() > 0) {
            def boKeyName = "businessObjectKey" + keyIndex;
            entries.add(["key": boKeyName, "value": boKey]);
          }
    
          // add value, for example: [ key  : "businessObjectValue1", value: "100000" ],
          if (boValue.length() > 0) {
            def boValueName = "businessObjectValue" + keyIndex;
            entries.add(["key": boValueName, "value": boValue]);
          }
        }
    
    
        // Get Managed attachment guid
        try {
          // Execute UCM Grant webservice
          def response = adf.webServices.WebCenterContentGrantWebservice.execute(request);
          println("Grant access ws response - " + response);
    
          // Retrieve UCM MA url from response
          String ucmMaUrl = "";
          String afGuidVal = "";
    
          def responseCommands = response["responseCommands"].get(0);
          for (responseCommand in responseCommands) {
            if (responseCommand["command"] == "OPEN_BROWSER") {
              String url = responseCommand["value"];
    
              // Extract afGuid
              url = url.substring(url.indexOf("?") + 1);
              String[] urlParams = url.split('&');
              for (String urlParam : urlParams) {
                String[] nameValPair = urlParam.split('=');
                if (nameValPair[0] == "afGuid") {
                  afGuidVal = nameValPair[1];
                  break;
                }
              }
              ucmMaUrl = "&afGuid=" + afGuidVal;
    
              println("Extracted ucm attachment url suffix" + ucmMaUrl);
              break;
            }
          }
    
          return ucmMaUrl;
        } catch (Exception e) {
          def msg = "Error getting UCM Managed attachment url for " + boType + " " + e;
          println(msg);
    
          return msg;
        }
    
        // If no error and not able to get url
        return "Error - No attachment url in response";
  5. Click Validate and then Save and Close

These variables are mandatory to be passed to the function.

Other key value pairs (boKey2 .. boKey5), (boValue2 .. boValue5) are optional. The pairs (if provided) should have both key and value given together.

All these variables are mapped to payload fields in WebCenter Content Grant Webservice: applicationName, businessObjectType, businessObjectKeys and businessObjectValues.

The maximum character lengths of various parameters as they are mapped to above fields are as follows:

Important

These variables should form a unique combination to attach to the documents. They should be provided the same values consistently for a given object record so that previously attached documents (if any) are retrieved using the same combination of values.

Note:

You can use the same webservice for different types of modules. For example, if you want to integrate with Expense Item object, add a condition for the variable boType like below:

    ...
    else if (boType == "ExpenseItem") {
      String ExpenseId = boValue1;
      adf.util.ExpenseItemValidate(ExpenseId);
    }

where ExpenseItemValidate is the global function you have to create to verify if the current user has access to the given expense item by calling Expense REST API of Fusion Cloud.

Create a Custom Object Instance to Call the Managed Attachments REST Webservice on

  1. Select Navigator, Others, and then WccManagedAttachments.

  2. Click Create and then Save and Close.

  3. To get the record ID of this object, run the following command on a Linux command line shell:

    curl -k --location 'https://{FAHost}/crmRestApi/resources/11.13.18.05/WccManagedAttachment_c' \
        --header 'Authorization: Basic {Base64EncodedCredentials}'

    where {Base64EncodedCredentials} is the credentials string “{username}:{password}” in base64 encoded form.

Note:

You might have to replace the path crmRestApi with fscmApi, hcmApi, and so on based on the module the custom object is created. For example, Financials, HCM, etc.

The Rest API version 11.13.18.05 might change based on your environment.

It returns the Managed attachments object record in JSON format.

Pick the ID of the record and note it down.

Example:

    "Id" : 300100613004497,

We will call the row level REST API GetWccMaDocsUrl on this particular record. There is no other purpose for WccManagedAttachment object or this record. Its only purpose is to call this REST API. This particular record should not be deleted.

Disable Delete of WccManagedAttachment Records

As you have created the record on which you will call the REST API, you will need to disable the deletion of the records of this WccManagedAttachment object:

  1. Select the WccManagedAttachments custom object in Application Composer.

  2. Select Security.

  3. In the Delete field, deselect all the options.

  4. Click Save and Close.

Create VBCS-Based Application Extension

Note

Visual Builder Cloud Service is supported only in Chrome browser.

Create VBCS Project

  1. Select Navigator, Configuration, and then Visual Builder to navigate to Visual Builder Cloud Service.

  2. Click Create.

  3. Enter a name. For example: WccManagedAttachmentProject.

  4. Set Security to Private and Discoverable or choose Shared as per your requirements.

  5. Click Next.

  6. Set Template to Empty Project.

  7. Click Next.

  8. For Project Properties for Wiki Markup, select Markdown.

  9. Click Next.

  10. On the Team tab, add other members and their access to this project as per your requirements, and click Add.

  11. Click Finish.

  12. Wait for the project creation to finish.

Create a Fusion Application Cloud Environment

  1. On left navigation pane, click Environments.

  2. Click + Create Environment.

  3. Enter an environment name (for example, FAEnvironment) and a description.

  4. Click Create.

  5. Select the Environment FAEnvironment.

  6. Click Service Instances and then click + Add Instance.

  7. Complete the following:

    1. Instance Type - Select Oracle Cloud Applications.

    2. Add Instance Using - Select Application Credentials.

    3. Base URL - {FAUrl}

    4. Instance Name - {Name}

    5. Username - {username}

    6. Password - {password}

    7. Authorization Type - Basic

  8. Click Add

Click VBCS Workspace for Application Extension

  1. In the project, click Workspaces, New, and then Application Extension.

  2. For Workspace, enter the extension name WccManagedAttachmentWorkspace.

  3. The fields Extension Id and Workspace Name will be automatically populated.

  4. For Development Environment, choose the Fusion Application Cloud Service environment created earlier (FAEnvironment).

  5. For sandbox, choose the sandbox created earlier.

  6. For Git Repository, select Create new repository. Enter a name and a branch for the repository.

  7. Click Create.

  8. Wait for the application extension creation to finish.

Create VBCS Service for Managed Attachment Webservice

  1. Click Workspaces and then WccManagedAttachmentWorkspace to enter the workspace.

  2. Click Services and then the + Service Connection button.

  3. Select Define by endpoint.

  4. Set Method to POST.

  5. Enter the following in the URL field:

    https://{FAHost}/crmRestApi/resources/11.13.18.05/WccManagedAttachment_c/{Id}/action/GetWccMaDocsUrl

    where {Id} is the Id of WccManagedAttachment record we obtained from the earlier step.

  6. Select Update from the Action Hint drop-down list.

  7. Click Create Backend.

  8. On the next page, enter:

    1. Backend name - WccManagedAttachmentBackend

    2. Authentication - Oracle Cloud Account

  9. Click Next for service connection creation page.

    1. Service name - WccManagedAttachmentService

    2. Select the Accessible to application extensions checkbox.

  10. Click the Request tab and then the Headers tab.

  11. Click + Static Header.

  12. Enter the following:

    1. Name - Content-Type

    2. value - application/vnd.oracle.adf.action+json

  13. Click Create.

Note

For the URL, you might have to replace the path crmRestApi with fscmApi, hcmApi, and so on in the webservice URL based on the module the custom object is created. For Example: Financials, HCM, etc.

The RestApi version 11.13.18.05 might change based on your environment.

Test the Web Service Call from VBCS

You can test whether this webservice call works correctly or not by following these steps:

  1. Click the service WccManagedAttachmentService, Endpoints, /GetWccMaDocsUrl, row with POST method and then the Test tab.

  2. In the Body tab, enter:

    1. Media type - application/vnd.oracle.adf.action+json

    2. Payload as type - Text

  3. Enter the following value:

    {
        "appName": "<appName>",
        "boType": "Invoice",
        "boKey1": "InvoiceNumber",
        "boValue1": "<InvoiceNumber>"   
    }

You should get appropriate response based on whether the invoice with InvoiceNumber is accessible to you or not.

Create Managed Attachment UI for the Application Extension

  1. Click Workspaces and then WccManagedAttachmentWorkspace to enter the workspace.

  2. Click the App UIs section.

  3. Click the + App UI button.

  4. Enter a name for the app UI (for example: WccManagedAttachmentUI) and click Create.

  5. In the App UI tree, click wccmanagedattachmentui, main, and then main-start.

  6. Click the Properties tab on the right.

  7. Click Select Page Template.

  8. Under Page Content select Welcome Page Template and click Select.

  9. Click Page Designer tab and then select Welcome Page Template in Design tab.

  10. On the Design tab, select the template, select Properties, and provide a title in the Page Title field (for example: Managed Attachments).

  11. Click the Variables tab and add variables with following IDs:

    • appName, boType
    • boKey1, boKey2, boKey3, boKey4, boKey5
    • boValue1, boValue2, boValue3, boValue4, boValue5
  12. For all the variables, specify the following:

    1. Type - String

    2. Description - You can enter the variable name or specify a suitable description.

    3. Access for application extensions - Read/Write

    4. Input parameter check box - Select this check box.

    5. Pass on URL check box - Select this check box.

  13. Add a variable with statusMessage as the ID and with the following properties:

    1. Type - String

    2. Description - You can enter the variable name or specify a suitable description.

    3. Access for application extensions - Read/Write

    4. Input parameter check box - Deselect this check box.

Add a Text Field to Show the Current Status of Processing

  1. In the App UI tree, click wccmanagedattachmentui, main, and then main-start.

  2. Click the Page Designer tab.

  3. On the left navigation pane, click Components, click Text Box input field on the top with the hint text Filter, and then search by typing the word Text.

  4. In the search results select the component named Text, drag and drop it into the Welcome Page Template.

  5. Bind the text field to the statusMessage variable using the following steps:

    1. Select the inserted text component on the canvas.

    2. Click the Properties tab on the right.

    3. Click the Text field.

    4. Click Icon (x) with text Select variable, select Page, select variables, and then select statusMessage.

Call the REST Webservice from the VBCS Management Attachment UI to Obtain the Attachment GUID

  1. If you are not already in the main-start element in the App UI tree, click wccmanagedattachmentui, main, and then main-start.

  2. Click Action Chains tab and then click + Action Chain.

  3. Enter a name (for example, WccMaActionChain).

  4. Click Create.

  5. Click the Event Listeners tab, click + Event Listener, click Lifecycle Events, and then vbEnter.

  6. On the next page, for Select Action chain, select Page Action Chains and then WccMaActionChain and click Finish.

  7. Click Action chains and then WccMaActionChain.

  8. Select the code editor by clicking the code tab.

    You should be in the WccMaActionChain code editor now.

        class WccMaActionChain extends ActionChain {
            async run(context) {
            const { $page, ...} = context;
    
            // Paste Here
  9. Copy and paste the following code in the place indicated above.

        // NOTE - Before final publishing comment out console.log debug statements
    
        $variables.statusMessage = "Loading Attachments";
    
        // Create payload
        const requestBody = {
          appName: $variables.appName,
          boType: $variables.boType,
          boKey1: $variables.boKey1,
          boValue1: $variables.boValue1
        };
    
        // Add boKey2/boValue2
        if ($variables.boKey2 !== null) {
          requestBody.boKey2 = $variables.boKey2;
        }
    
        if ($variables.boValue2 !== null) {
          requestBody.boValue2 = $variables.boValue2;
        }
    
        // Add boKey3/boValue3
        if ($variables.boKey3 !== null) {
          requestBody.boKey3 = $variables.boKey3;
        }
    
        if ($variables.boValue3 !== null) {
          requestBody.boValue3 = $variables.boValue3;
        }
    
        // Add boKey4/boValue4
        if ($variables.boKey4 !== null) {
          requestBody.boKey4 = $variables.boKey4;
        }
    
        if ($variables.boValue4 !== null) {
          requestBody.boValue4 = $variables.boValue4;
        }
    
        // Add boKey5/boValue5
        if ($variables.boKey5 !== null) {
          requestBody.boKey5 = $variables.boKey5;
        }
    
        if ($variables.boValue5 !== null) {
          requestBody.boValue5 = $variables.boValue5;
        }
    
        console.log("Payload to Managed attachment api " + JSON.stringify(requestBody));
    
        // Make REST API call to custom object managed attachment function
        const response = await Actions.callRest(context, {
          endpoint: '<Service Endpoint>',
          body: requestBody,
          responseBodyFormat: 'json'
        }, { id: 'GetWccMaDocsUrl' });
    
        console.log("Got FA Rest response " + JSON.stringify(response));
    
        const managedAttachmentUrl = "https://{WCCHost}:{WCCPort}/cs/idcplg?IdcService=EMBEDLOGIN_HOME&ActAsAnonymous=true";
        console.log("Response url - " + response?.body?.result);
    
        // If response has afGuid redirect to managed attachment url
        if (response?.body?.result?.startsWith("&afGuid=")) {
          let redirectUrl = managedAttachmentUrl + response?.body?.result;
    
          console.log("Redirecting to - " + redirectUrl);
    
          await Actions.openUrl(context, {
            history: 'replace',
            url: redirectUrl
          });
    
        } else {
          console.log("Error in loading Attachments. Please contact Administrator");
    
          $variables.statusMessage = "Error in loading Attachments. Please contact Administrator";
        }
  10. For the Rest API call, change the endpoint name {Service Endpoint} to your endpoint name.

  11. Alternatively, you can also use the following steps:

    1. Click the line with text {Service Endpoint}.

    2. In properties panel click Select under Endpoint.

    3. In the selection popup expand Services, WccMaService.

    4. Select the element with text POST …/GetWccMaDocsUrl.

    5. In the window with code for the selected line make sure that the other properties, that is - body, responseBodyFormat to call the API are provided as specified below.

        const response = await Actions.callRest(context, {
            endpoint: '<Service Endpoint>',
            body: requestBody,
            responseBodyFormat: 'json'
          }, { id: 'GetWccMaDocsUrl' });
    
  12. In the code, replace {WCCHost} and {WCCPort} with the relevant host and port values as per your environment.

    const managedAttachmentUrl = "https://{WCCHost}:{WCCPort}/cs/idcplg?IdcService=EMBEDLOGIN_HOME&ActAsAnonymous=true";

In the code, there are Javascript console log statements for debugging on the browser console. Change those statements to comments before publishing the application extension.

Test the VBCS Application Extension

  1. Click the Preview button at the top panel extreme right.

    VBCS will compile the application and open a URL. The URL might fail now as we have not passed any relevant URL parameters.

  2. Copy the URL which will be in the following format and note it down.

    https://{FAHost}/fscmUI/redwood/WccManagedAttachmentUI?vbdt%3ApreferExtensionVersion=<value>
  3. Test the URL in the browser by passing test parameters.

    https://{FAHost}/fscmUI/redwood/WccManagedAttachmentUI?vbdt%3ApreferExtensionVersion=<value>&appName=<appName>&boType=Invoice&boKey1=InvoiceNumber&boValue1=<TestInvoiceNumber>

Based on the type of object you are trying to integrate, the parameters may change and the URL may have additional key values pairs boKey2, boValue2 … boKey5, and boValue5.

The VBCS application extension will call the Managed Attachment REST webservice, obtain the unique GUID for the combination of keys passed, and open the associated managed attachments page.

Note

Before the VBCS app is published, the app URL will be in the above format with a reference to the extension version which can be used for testing.

After it is published, the URL will be in the following format (without the extension version).

https://{FAHost}/fscmUI/redwood/WccManagedAttachmentUI
  1. Navigate to Payables and then Invoices.

  2. Search and open an invoice record.

  3. Select Tools and then Page Composer.

  4. Click Structure.

  5. Select the structure pane (which is available by default at the bottom of the page).

  6. In the structure pane select the UI element on which you need to insert the hyperlink. Click the + button in the panel.

  7. In the Add Content pop-up, select Components.

  8. Select Hyperlink and click +Add.

  9. In the structure pane, select the hyperlink you just added or in the Select tab, select the hyperlink component in the UI and click Edit Component.

  10. Enter

    1. Destination - https://{FAHost}/fscmUI/redwood/WccManagedAttachmentUI?vbdt%3ApreferExtensionVersion={value}&appName={appName}&boType=Invoice&boKey1=InvoiceNumber&boValue1=#{bindings.InvoiceNum.inputValue}

    2. Short Desc - Documents

    3. Target Frame - **_blank**

    4. Text - Documents

  11. Click OK.

  12. Close the Page Composer by clicking Close.

Publish the Changes

Publish the VBCS Extension

  1. On the VBCS page, for the Action Chain WccMaActionChain code, comment out the console.log debug statements as the code is now working in the environment.

  2. Navigate to the VBCS page for the project WccManagedAttachmentProject.

  3. Click Publish.

  4. Select Merge Now, enter a commit message, and click Publish.

  5. Enter Fusion Applications credentials if prompted.

  6. This will perform a schedule build of jobs whose status can be viewed by clicking Builds on the left pane.

  7. Wait for the publish job to complete.

On the Invoice page, you inserted the hyperlink as the URL under development (which has the extension version) using the steps in Use Page Composer to Insert Managed Attachments Link in Fusion Applications Page.

https://{FAHost}/fscmUI/redwood/WccManagedAttachmentUI?vbdt%3ApreferExtensionVersion=<value>&appName=<appName>&boType=Invoice&...

Change it to the published URL which does not have the extension version (retaining all other URL parameters without changes):

https://{FAHost}/fscmUI/redwood/WccManagedAttachmentUI?appName=<appName>&boType=Invoice&...

Publish the Sandbox

For publishing, enter the following sandbox details:

Select the name of your sandbox in the upper left corner of the page (for example, WebCenter Content Managed Attachments Integration) and then select the Sandbox Details option from the drop-down menu.

On the Sandbox Details page, click Publish to publish the sandbox.

In the warning message box, click Yes if you’re certain that the integration is working as expected and you’re ready to make these changes permanent (and public).

Use the Integration

Production users should now be able to use WebCenter Content Managed Attachments within the context of a payables invoice.

Organizations can now easily access, view, and upload assets associated with a payables invoice directly from the Managed Attachments tab with all material stored within Oracle WebCenter Content. The embedded Oracle WebCenter Content Managed Attachment UI provides an easy and modern interface for contributing and storing content.

Redwood UI for Managed Attachments

Default UI for Managed Attachments is Redwood based UI. URL parameters can be passed in EMBEDLOGIN_HOME IdcService URL to customize Managed Attachments.

.../cs/idcplg?IdcService=EMBEDLOGIN_HOME&<paramName>=<paramValue>

Switching to non-redwood UI for managed attachments

To switch to use non-redwood UI pass URL parameter given below to EMBEDLOGIN_HOME IdcService URL.

pageType=ClassicUI

Configuration Reference

The URL parameters supported for Redwood UI are given below

Parameter Type Comments
maHeader ‘on’ | ‘off’

on - Header and title are shown.

off - Header and title are hidden.

When not provided, this option defaults to ‘off’.

maTitle String

The title of the page.

The title is only shown if maHeader is ‘on’.

The custom title will not be translated to other languages.

If not provided default title is shown.

Adding custom metadata and searching Managed Attachments based on them

When a document is uploaded to managed attachments, a predefined set of metadata fields is automatically attached to it based on payload fields used for that attachment. The metadata fields are afApplication (from field application), businessObjectType (from field of same name) and businessObjectValue[1..5] (from fields of same name). These metadata fields can be copied to user-friendly metadata names during document checkin and can be searched based on user-friendly metadata names.

Note: The automatic metadata population feature is available only from Redwood UI.

We will use an example where businessObjectType is ‘Invoice’, businessObjectKey1 is ‘InvoiceNumber’ and businessObjectValue1 holds the invoice value.

Create new user-friendly metadata fields

  1. Log in to WebCenter Content as an administrator.
  2. Navigate to Administration, Admin Applets, Download Client and install it if necessary, Launch Client and log in.
  3. Click Configuration Manager.
  4. In tab Information Fields click Add.
  5. Enter InvoiceNumber and click OK.
  6. In details dialog for Field Caption enter a label string like InvoiceNumber.
  7. Select Field Type to Long Text.
  8. Keep other values as default and click OK.
  9. If you have more user-friendly named metadata fields for the attachment you can create similarly.
  10. Click button Update Database Design and click OK.

Create rule to copy predefined metadata to user-friendly metadata fields during managed attachments checkin

Here we will copy value of businessObjectValue1 to metadata InvoiceNumber if businessObjectType field value is Invoice during managed attachment document checkin.

  1. Click Rules tab.
  2. Click Add.
  3. Enter rule name as InvoiceMetadataCopy.
  4. Enter description as Rule to copy Invoice metadata for Managed Attachments.
  5. Check Use rule activation condition.
  6. Click Edit.
  7. In Conditions section click Add and enter name as InvoiceCheckin.
  8. In General sub-tab click option Use action and then Check In New.
  9. Click OK.
  10. Click tab Fields.
  11. Click Add.
  12. Select Field Name as InvoiceNumber and click OK.
  13. In next dialog keep Field Type as Edit.
  14. Check option Is derived field.
  15. Click Edit button next to it which opens a dialog.
  16. Click Add button next to Conditions.
  17. Enter Name as InvoiceNumberCopy and click OK.
  18. Select Field as MA Business Object Type.
  19. Select Operator as Matches.
  20. Enter value as Invoice.
  21. Click Add to add the condition.
  22. Click Compute.
  23. In Select Field dialog select MA Business Object Value 1 (ie businessObjectValue1) and click OK.
  24. In the next dialog click OK.
  25. In the next dialog which is Add Rule Field click OK.

If you have more metadata fields to copy you can add them in Fields tab similarly.

Create Rule to show user-friendly named custom metadata for Managed Attachments Profile

  1. Click Rules tab.
  2. Click Add.
  3. Enter rule name as InvoiceMetadataShow.
  4. Enter description as Rule to show Invoice metadata for Managed Attachments Profile.
  5. Click checkbox Use rule activation condition.
  6. Click Edit.
  7. In Conditions section click Add and enter name as InvoiceShow and click OK.
  8. In General sub-tab click option Use action and then click Content Information.
  9. Click OK.
  10. Click tab Fields.
  11. Click Add.
  12. Select Field Name as InvoiceNumber and click OK.
  13. In next dialog keep Field Type as Edit and Click OK.
  14. If you have more metadata fields to show you can add similarly.
  15. Click OK in next dialog.

Associate custom metadata rules to Managed Attachments Profile

  1. Click Profiles tab.
  2. Select FAProfile (ie the Managed Attachments Profile).
  3. Click Edit.
  4. In Rules section click Add.
  5. In next dialog for Name select InvoiceMetadataCopy and click OK.
  6. In Rules section click Add.
  7. In next dialog for Name select InvoiceMetadataShow and click OK.
  8. Click OK to close the Edit Profile dialog.

Now privileged users can search managed attachments based on user-friendly metadata field names.

Add appropriate permissions for privileged users to search for Managed Attachments

To search for managed attachments the user needs AFDocuments(R) permission which can be added as follows.

  1. Log in to WebCenter Content as an administrator.
  2. Navigate to Administration, Admin Applets, Download Client and install it if necessary, Launch Client and log in.
  3. Click User Admin.
  4. In menu click Security, Permissions by Role.
  5. Click button Add New Role.
  6. Enter Role Name as SearchMARole and click OK.
  7. In Roles section select SearchMARole.
  8. In Groups/Rights section select AFDocuments() and click button Edit Permissions.
  9. In Edit Permissions dialog box select Read and click OK.
  10. Click Close button.
  11. Login to IDCS Console as administrator.
  12. Click tab User Management.
  13. In Groups section click Create Group.
  14. Enter name as SearchMARole.
  15. In Users section select users who need the search privilege.
  16. Click Create.

The users in this role SearchMARole who have AFDocuments(R) permission can search for Managed Attachments.

Search for Managed Attachments based on metadata in Redwood UI

  1. In Redwood UI select Search tab.
  2. Click Open Advanced Search Drawer button next to the search text field.
  3. Select Profile in top right as Standard Search.
  4. In the list of query fields, for Profile select condition as Matches and value as FAProfile (ie Managed Attachments profile).
  5. The custom metadata name InvoiceNumber will be present in list of query fields.
  6. Put the appropriate condition and value for it and click Search.

Optionally you can create a search profile specific to the custom metadata so that only metadata related to it (for example ‘Invoice’ related) and any other metadata you want will appear in advanced search dialog for searching managed attachments.

Note: The managed attachment documents are always associated with FAProfile (Managed Attachments profile). This custom search profile is to show only required fields for searching managed attachments of a certain type for example ‘Invoice’. Also, this profile is not valid to be used for managed attachments checkin.

Create custom rule to show only required fields for the custom metadata search profile

  1. Log in to WebCenter Content as an administrator.
  2. Navigate to Administration, Admin Applets, Download Client and install it if necessary, Launch Client and log in.
  3. Click Configuration Manager.
  4. Click Rules tab.
  5. Click Add.
  6. Enter rule name as InvoiceSearchShow.
  7. Enter description as Rule to show Invoice metadata for Managed Attachments search.
  8. Click tab Fields.
  9. Click Add.
  10. Select Field Name as InvoiceNumber and click OK.
  11. In next dialog Field Type as Edit and click OK.
  12. Add more metadata fields to be shown as required.
  13. Here you can also select a field name and select Field Type as Hidden to hide the field for the search profile.
  14. Click OK in next dialog.
  1. Click tab Information Fields.
  2. Select IdcProfile and click Edit Values.
  3. Click Add button.
  4. For dProfileTriggerValue enter InvoiceProfile.
  5. For dProfileTriggerOrder enter 1.
  6. Click OK.
  7. Click Close.
  8. Click Profiles tab.
  9. Click Add.
  10. Enter profile name as InvoiceProfile and click OK.
  11. For Display Label enter InvoiceProfile.
  12. Click the button next to the Trigger field.
  13. In the list of triggers select trigger InvoiceProfile and click OK.
  14. In Rules section click Add.
  15. For Name select rule InvoiceSearchShow.
  16. Click OK to close the dialog box for Add Profile.

Search for Managed Attachments using Custom Search Profile

  1. Login to Redwood UI. If you are already logged in, logout and login again to Redwood UI for custom search profile changes to take effect in the Redwood UI.
  2. In Redwood UI select Search tab.
  3. Click Open Advanced Search Drawer button next to search text field.
  4. For Profile in top select InvoiceProfile.
  5. In the list of query fields for Profile select condition as Matches and value as FAProfile (ie Managed Attachments profile).
  6. The query fields will have the fields you have configured to show or hide in the rule InvoiceSearchShow (for example InvoiceNumber).
  7. Put the appropriate conditions and values for them and click Search.

Troubleshooting

Issue 1: Embedding Managed Attachments Mashup in Fusion Apps page shows error or no content.

Description: There is issue in embedding Managed Attachments iframe in Fusion Apps page.

After following steps in section Configure WebCenter Content for FA Integration and restarting WebCenter Content servers check that proper configuration values for enabling iframe embedding have been automatically added in WebCenter Content configuration.

Steps:

  1. Log in to WebCenter Content as an administrator.
  2. Navigate to Administration, Admin Server and then General Configuration.
  3. In section Additional Configuration Variables check that following fields are present with relevant values.
AllowedDomainLists=<FA_DOMAIN>,<UCM_DOMAIN>
RemoveXFrameOption=true
AllowContentServerInAnyDomains=true
RedwoodUIFrameAncestors=<FA_DOMAIN>
IsAdvanceSecurityConfigUIEnabled=true

Known Issues

Learn about the issues you may encounter when extending Oracle Sales and Service business objects with managed attachments.

Issue 1: In Firefox browser, Managed Attachments page shows error message "Firefox Can’t Open This Page"

Description:

In the Firefox browser, the Managed Attachments page shows the error message "Firefox Can’t Open This Page". This might show up when you click the refresh button in Managed Attachments, if the browser window size changes, etc. (anything that causes the Managed Attachments embedded mashup to refresh).

Workaround for this issue: Click any other sub tabs on the page and come back to the Managed Attachments page.

Issue 2: When Trigger field is updated to "Security Group", Managed Attachments functionalities stop working.

Description:

In Configuration Manager, Profiles tab, when Trigger field is updated to "Security Group", Managed Attachments functionalities stop working. For example, user is unable to upload documents in the managed attachments UI.

Workaround for this issue:

  1. Navigate to Configuration Manager, Profiles tab, Profiles section, and then select FAProfile.
  2. Click Edit.
  3. In Trigger, select AFDocuments.
  4. Click OK.