How to Style an ADF Checkbox

December 6, 2016

By: Andreja Sambolec – Application Consultant

Sometimes, you want to customize your checkbox component by changing the background color.

This can be done using CSS and :after and :before pseudo classes on checkbox elements.

This is what a checkbox looks like:

code

The condition necessary to be able to change the background color:

The element must precede the

The steps to style a checkbox:

#1 Hide the checkbox

input[type=checkbox] {
opacity: 0;
}

#2 Use :checked and :before pseudo classes to style checkbox

.checkbox input[type=checkbox]:checked + label::before{
content: 'ON';
background-color: #428bca;
}

Read more on these steps here.

So, how do you apply these steps to ADF components?

To display a checkbox component in ADF, we are using af:selectBooleanCheckbox element:

<af:selectBooleanCheckbox value=”#{bindings.InternalApplication1.inputValue}”

text=”#{bindings.InternalApplication1.label}”

styleClass=”checkbox”

shortDesc=”#{bindings.InternalApplication1.hints.tooltip}”

id=”sbc1″

disabled=”true”/>

There are two options to set the label:

  1. Using label attribute– it’s placed before input component
  2. Using text attribute – it’s placed after input component

When using text, the result is:

<td valign=”top” nowrap=”” class=”AFPanelFormLayoutContentCell”>

<span class=”af_selectBooleanCheckbox_content”>

<span class=”af_selectBooleanCheckbox_content-input”>

<input id=”r1:0:sbc4::content” name=”r1:0:sbc4″ class=”af_selectBooleanCheckbox_native-input” type=”checkbox” value=”t” checked=”” onclick=”this.focus()”>

<label for=”r1:0:sbc4::content” class=”p_OraHiddenLabel”></label>

</span>

<label for=”r1:0:sbc4::content” class=”af_selectBooleanCheckbox_item-text”>Refugee</label>

</span>

</td>

 

When using label, the result is:

 

<tr class=”checkbox af_selectBooleanCheckbox p_AFDisabled” id=”r1:0:sbc1″ _adftrc=”r1:0:sbc1::icon-style”>

<td class=”af_selectBooleanCheckbox_label af_panelFormLayout_label-cell”>

<label class=”af_selectBooleanCheckbox_label-text” for=”r1:0:sbc1::content” id=”r1:0:sbc1::contentlabelId”>Internal Application</label>

</td><td valign=”top” nowrap=”” class=”AFPanelFormLayoutContentCell”>

<span class=”af_selectBooleanCheckbox_content”>

<span class=”af_selectBooleanCheckbox_content-input”>

<input id=”r1:0:sbc1::content” name=”r1:0:sbc1″ disabled=”” class=”af_selectBooleanCheckbox_native-input” type=”checkbox” value=”t” checked=”” onclick=”this.focus()” aria-labelledby=”r1:0:sbc1::contentlabelId”>

</span></span>

</td></tr>

 

We can see that only the option with text works because the label is set after the input element.

If you have the readOnly attribute set to ‘true’, replace it with ‘disabled=true’. This will make it easier to style.

This is what the CSS should look like:

/**hide checkbox*/
.checkbox input[type="checkbox"] {
opacity: 0;
width: 0px;
}

/*style label to display checkbox*/
.checkbox .p_OraHiddenLabel {
position: relative;
left: inherit;
font-size: 12px;
top: inherit;
content: "";
display: inline-block;
position: relative;
width: 17px;
height: 17px;
left: inherit;
margin-left: 0px;
border: 1px solid #cccccc;
border-radius: 3px;
background-color: #428bca;
border-color: #428bca;
}

/*style for unchecked state
Set the content to have no issues with moving elements when switching between states – the content is hidden, but save space for it.
*/

.checkbox input[type="checkbox"]:not(:checked) + label:before {
content: "ON";
color: #428bca;
display: inline-block;
}

/*style for checked state*/
.checkbox input[type="checkbox"]:checked + label:before {
font-family: 'FontAwesome';
content: "\f00c";
display: inline-block;
}

/*styling disabled chheckbox*/
.checkbox input[type="checkbox"]:disabled + label {
background-color: #428bca;
border-color: #428bca;
opacity: 0.65;
}

/**/
af|selectBooleanCheckbox::item-text {
margin: 0px 1px;
padding-right: 3px;
padding-left: 2px;
vertical-align: middle;
margin-left: 1px;
left: -167px;
position: relative;
}

/**hide checkbox*/
.checkbox input[type="checkbox"] {
opacity: 0;
width: 0px;
}

af|selectBooleanCheckbox::content {
line-height: 19px;
}

The end result:

adf-blog


Records Management Configuration Migration

October 31, 2016

By: Dwayne Parkinson – Solution Architect

In virtually every Records Management environment there is a production server and at least one other server for development, staging, testing or QA. The Records Manager may test out new configurations on one of the other servers and then “promote” those changes to production or they may do the changes in production and want to propagate them to all the other servers. Unfortunately, this is often done manually and prone to mistakes. Thankfully, there’s a better way.

Exporting Records Management Settings

The first step is to export existing Records Management settings from the server with the new configuration. Select the Records menu and then Import/Export and choose Archives.

records-1On the next screen, select the records objects that are used and click on the Export button. The screen is a little confusing because the same screen is used to import a file. For this step, you don’t use the Update checkbox or the Browse button!

 

records-2

When you click the Export button a file named “UieArchive.hda” will be downloaded to your local workstation. You are now ready to import this configuration into another system.

Importing Records Management Settings

On the next system navigate to the same “Records > Import/Export > Archive” menu option. This time check the box that says “Attempt Update” and click the “Browse” at the bottom to select the “UieArchive.hda” file you downloaded in the steps above. Be sure to check the items you want to update and then click “Import”.

records-3

While the import is running, you’ll see a message at the bottom of the screen indicating that the import is in progress.

records-4

Once it’s complete you will receive a message indicating that the import succeeded!

records-5

If you receive any errors, they are almost always security related. The profile you’re logged in with must have the appropriate rights to update Records Management Settings.

Summary

The Records Management Archive function is designed to eliminate the tedious and often error-prone manual effort of keeping different Records environments configured identically. By using the Records Archive function, a Records Manager or System Administrator can quickly and easily keep the settings between environments in lockstep. For additional best practices on how to make the most of your WebCenter software or Oracle Cloud Service deployments please contact TEAM Informatics.


Encryption Options for WebCenter Content

September 20, 2016

By: Raoul Miller – Enterprise Architect

With the increased focus on security in the workplace, TEAM is seeing that more and more of our clients have the requirement to encrypt important data. The content that is managed in their WebCenter Content instance is already an important asset, so the business may see a need to encrypt some or all of that content.

Because there are different areas that can be encrypted, there has been some confusion as to how to go about this process. The following lists the three major options for data encryption within WCC and some of the pros and cons associated with each:

Transport Layer Security (TLS) for Traffic

The easiest and quickest level of encryption to deploy is SSL (Secure Sockets Layer) configuration for web traffic, JDBC connection, and LDAP queries. All of these can be configured from the WebLogic Server (WLS) console interface and require only certificate procurement and management from the client.

Pros

  • Encryption of traffic prevents sniffing of credentials or data from the wired or wireless networks
  • Relatively quick to configure and simple to deploy

Cons

  • Does not address encryption of content or metadata
  • Requires certificate procurement and management

 

Metadata Encryption

The next step in encryption is to encrypt some or all of the tables or columns in the database. While encryption is now available in Microsoft SQL Server 2016, this is not officially supported by Oracle and has not been tested by TEAM. For those using Oracle Database Enterprise Edition, this path requires licensing of the Advanced Security option and deployment of TDE (transparent data encryption) within the JDBC client.

While it is possible to encrypt only some of the metadata, the overhead involved with this would be quite substantial and there would be a risk of exposing newly created custom metadata. All of TEAM’s clients that use encryption have chosen to encrypt the entire metadata schema.

Pros

  • Flexibility as to which tables or columns within the schema should be encrypted
  • Fully supported by Oracle
  • Provides additional security from internal threats and escalation of privileges

Cons

  • There is an encryption / decryption overhead at the server and client level (client in this case is WLS Server)
  • Management of database and certificates places additional burden on DBAs
  • Requires Enterprise Edition Oracle Database and Advanced Security licenses

 

Content Encryption

The ultimate step in security is to encrypt the content as well as the metadata. The only supported method for this is to store the content in the Oracle database using SecureFiles.  While in theory this could be done without metadata security, to do so would be very poor practice, so this assumes that both metadata and content are to be encrypted.

The FileStore Provider within WebCenter Content (WCC) manages file storage and when content is created / submitted to the content management system, it must be tagged with a metadata field (xStorageRule) indicating where it is to be stored. The system can manage multiple file system storage rules, but only a single JDBC rule. Assignment of the storage rule is normally done either through profiles or workflow.

Clients have 3 options for storage of content:

  • Encrypted in a database
  • Unencrypted in a database
  • Unencrypted on a file system (the default content storage option).

Clients may also choose to store some (or most) content unencrypted on the file system, and another portion encrypted within the database, but WCC does not (currently) support storage of some content unencrypted in the database while other content is also encrypted in the database. Combining unencrypted storage rules for content on the file system and an encrypted storage rule for the database will allow for a “mixed” system where only that content that is required to be encrypted has the overhead.

Pros

  • Encryption of content is an added layer of security
  • Performance of SecureFiles is comparable to network attached storage
  • Content is now fully encrypted in transport and at rest to the highest standards (TDE supports AES256, AES192 – default for TDE column encryption, AES128 – default for TDE tablespace encryption, and 3DES168).
  • Fully supported by Oracle

Cons

  • There is an encryption / decryption overhead at the server and client level (client in this case is WLS Server)
  • Management of database and certificates places additional burden on DBAs
  • Requires Enterprise Edition Oracle Database, Advanced Security, and Partitioning licenses
  • Setup of tablespace storage can be complex and is poorly documented

All of the above options assume that the deployment is on-premises, or deployed on infrastructure as a service (IaaS). You can still encrypt content on hosted systems, and I will follow up on your choices for hosted systems in another post in the near future.

Please feel free to contact TEAM for all of your WebCenter Content questions, particularly those around content security, encryption, and redaction.

Want to talk at OpenWorld? Email sales@teaminformatics.com

More Information

SSL Setup

http://docs.oracle.com/middleware/12211/wls/SCOVR/concepts.htm#SCOVR163

http://docs.oracle.com/middleware/12211/wls/SECMG/ssl_jsse_impl.htm#SECMG502

TDE (Transparent Data Encryption)

http://www.oracle.com/technetwork/database/security/tde-faq-093689.html#A12003

Advanced Security on Oracle Database

http://www.oracle.com/technetwork/database/options/advanced-security/index-082628.html

SecureFiles

http://www.oracle.com/technetwork/database/features/secure-files/dbfs-benchmark-367122.pdf

http://www.oracle.com/technetwork/database/perf-087187.html

https://docs.oracle.com/cloud/latest/db121/ASOAG/asotrans_other.htm#ASOAG10436

 


Sending E-mail from WebCenter Content using Office 365

September 8, 2016

By: Joe Hutchings – Director, Managed Services & Dwayne Parkinson – Solution Architect

It’s a familiar tale. The whole company migrated to Office 365 over the weekend BUT… someone forgot to test WebCenter Content. Now, that critical workflow that sends e-mail message notifications has suddenly stopped working! Since your system isn’t working, we won’t waste any more words. Here’s the fix.

  1. From WebCenter Content, go to the Administration menu and select Admin Server and then Internet Configuration as shown below.

email-blog

2. Change the mail server address on that screen so it points to the Mail Exchange record (aka MX record) on your DNS server that is used by Office 365. You should be able to find that information by using this link: http://mxtoolbox.com/SuperTool.aspx# and entering the domain of your company.  NOTE: the domain does not include “www” so it’s just something like myCompany.com.

3. Add an SPF entry to your DNS server with the IP address of your WebCenter Content server to prevent the WebCenter Content e-mails from being flagged as SPAM. Details about setting up the SPF record for Office 365 can be found here:
https://technet.microsoft.com/en-us/library/dn554323(v=exchg.150).aspx#Howtodirectsend

4. Restart the content server.

That’s it!  You’re off and running.  Now you can enjoy the rest of your day.


Automatic Redaction in WebCenter – A TEAM Webinar

September 7, 2016

redaction-logoProtecting sensitive data is extremely important for your organization. The release of public records, data breaches, and simple sharing between parties can cause unnecessary distress and costs when names, addresses, credit card numbers, etc. become public. Personally Identifiable Information, or PII, is any data that could potentially enable identification of a specific individual. Identifying this data is invariably important to protect your company, your employees, and your clients.

With a single disclosure breach reaching an estimated cost as high as seven million dollars ($7m) and affecting all manner of agencies, corporations, and hospitals across the globe every year, why not instead spend your resources on preemptive and preventative measures?

TEAM’s Redaction Engine utilizes multiple technologies to scan for and identify sensitive data already in your WebCenter Content repository, and newly scanned or checked-in documents. The engine then automatically redacts that information in subsequently generated PDFs.

Watch this video to learn more and join us for the webinar for a live demonstration for latest features and to answer any questions you may have.

redactionBenefits & Latest Features:

  • Integrated into Oracle WebCenter Content 11g & 12c
  • Pattern Recognition (regex and basic) identifies information such as:
    • SS Numbers
    • Date of Birth
    • Identification Numbers/Medical Forms
    • Credit Card Numbers
    • ACH Routing and Bank Account Numbers
  • Now allows multi-word phrases
  • Improved RegEx validation tester to provide better feedback for patterns
  • Redaction Templates
    • The ability to draw redactions in the UI and save them as a “template” that can be later utilized when checking in new documents
  • Create Redaction Sets – unique sets of criteria and patterns to be redacted
  • UI now includes comprehensive predefined Regular Expressions to match common use cases such as Social Security Numbers, telephone numbers, and financial amounts

 

TEAM’s 2nd Redaction Engine Webinar
September 29th, 2016 – 1:00PM CST 
Register Now!

Elasticsearch – The Smarter Way to Search

August 24, 2016

By: Marlene Laus – Marketing Specialist

No matter what size your business is or industry you’re engaged in, the necessity to efficiently locate content on demand is paramount. To locate an item, one must search, and to search there must be a pool of data that can be queried – an index.  The act of indexing creates searchable information that users can query to locate their target. Unfortunately, as businesses grow and content volumes rise, it becomes increasingly difficult for some search systems to keep up with the demands of indexing and querying, let alone return quality results.

elasticsearch logo

This is where Elasticsearch comes in. Elasticsearch changes the way your documents are both indexed and queried, making it more efficient and faster than ever to locate your content. TEAM has taken this technology to the next level by integrating it with Oracle WebCenter Content, an industry-leading Enterprise Content Management (ECM) system. By integrating Elasticsearch with WebCenter Content, you are able to get the latest, fastest and most advanced functionality.

 

Unmatched Speed

Traditionally, when data is entered into WebCenter Content it goes through Oracle Text Search (OTS) which indexes the data so that your document can be searched by any words within the document and on metadata applied to the document. Elasticsearch takes it even further by providing a data indexing system that is able to index your documents in real time at a remarkably fast speed, resulting in almost instant search results. Operating at an unmatched speed, the advanced indexing system is able to support big repositories with high volumes of search.

Scalable

One of the most impressive features of Elasticsearch is its ability to be easily scaled both horizontally and vertically. Expand vertically by adding more memory and processors on individual servers and the service will attempt to utilize everything you give it. Expand horizontally when you add additional servers to create clusters and  they’ll operate in tandem to power your search efforts.

elas_0401
Image Source

As repositories continue to grow, it can become difficult for typical indexing systems to keep up with the high demand. Indexes start to break down and it can take days or even weeks to re-build them, possibly rendering your search capabilities inactive. This is where Elasticsearch changes the game for organizations with large repositories; in what would normally take hours, Elasticsearch can efficiently re-build your indexes within minutes.

Custom and Customizable

Elasticsearch enables you get the most out of your search indexes by allowing you to customize them! At a basic level, you have the ability to choose what metadata fields you want to use for searching your documents and the option of using friendly metadata names of your choosing. For example, if you want to find a document that contains the word “Marketing” in the title, you can type “title: Marketing” into the search bar and Elasticsearch will pull all of the documents in your repository with “Marketing” included in the title metadata field. At a more complex level, the Elasticsearch index allows dozens of intricate index configuration options, all of which are available to use with the integration. The different ways you choose to index and search for documents within your repository are limitless. Elasticsearch puts the power in hands of the user.

Screen Shot 2016-08-24 at 11.59.35 AM
Image Source

 

Finally, Elasticsearch enables you to utilize a practice called “stemming”. For example, if you query for the word “run,” Elasticsearch will compile your results and include documents that contain words where “run” is a stem, such as “runner” and “running”. The non-exact results will be returned with lower confidence than the exact matches but you can rest easy knowing your results will be as complete as possible.

Take Control of Your Searches

In a nutshell, Elasticsearch enables faster indexing and quicker, more accurate search results while making it easier than ever to utilize customized indexes all while staying fault- and load-tolerant. The possibilities are endless with Elasticsearch supercharging the search capabilities of your WebCenter Content repository.


How to Synchronize WebCenter Capture Configurations between Environments

July 29, 2016

By: Dwayne Parkinson – Solution Architect

Anyone who has used WebCenter Enterprise Capture appreciates the power and flexibility the tool provides for scanning, importing, converting, processing and exporting content. Its power and flexibility come from its wide range of configuration options.  However, in some situations this flexibility also creates problems as system administrators try to keep Capture configurations synchronized between environments.  Thankfully Oracle has provided a relatively easy way to synchronize Capture configurations between environments.

The process of migrating WebCenter Enterprise Capture configurations involves the following steps:

  1. Start the WebLogic scripting tool on the server running the WebCenter Capture instance that you want to export. This is done by running the wlst.cmd or wlst.sh depending on whether you’re running Windows or Linux.  Sample locations for the files are:
C:\Oracle\Middleware\Oracle_ECM1\common\bin\wlst.cmd
D:\Oracle\Middleware\Oracle_Home\oracle_common\common\bin
/home/middleware/Oracle_ECM1/common/bin/wlst.sh
/home/oracle/middleware/oracle_home/oracle_common/common/bin/wlst.sh

2. Connect to your Capture server using the connect WLST command. A sample may look like this:

connect(‘weblogic’, ‘myPassword’, ‘localhost:16400’)

3. Find the Capture workspace ID you want to export. Capture workspaces are assigned a numeric ID that you can obtain by using the listWorkspaces command from within the WebLogic Scripting Tool.  This command will list the ID followed by the name of the workspace.

listWorkspaces()

4. Using the ID of the workspace you want to export, issue the WebLogic Scripting Tool command to exportWorkspaces with the ID of the workspace and a destination path and file name.

 exportWorkspace(2,'/home/whatever/workspace2.xml')

5. Copy the file that was created in step 3 to the destination server that will be updated with the configurations.

6. Start the WebLogic Scripting Tool on the WebCenter Capture instance that you want to import the configurations into (see #1).

7. Connect to the destination Capture server (see #2)

8. Perform a listWorkspaces command (see #3) to insure that the name of the workspace you’re importing does not already exist. If there is an existing workspace with the same name as the workspace you exported in step 3, you must go into the Capture Console and either rename it or delete it before proceeding.

9. Issue the importWorkspace command to load the workspace from the configuration file from step 4 and create the workspace.

importWorkspace('/home/somefolder/workspace2.xml')

10. VERY IMPORTANT: be sure to verify the configuration and change Import Source settings such as the folder locations and e-mail addresses on Capture jobs so they point to the correct location for this environment.

sync blogHINT: By using similar paths and just changing from Development to Test, QA, Production, etc. the change should be relatively small and easy to manage.

Using the steps above, you will be able to quickly and easily keep your WebCenter Enterprise Capture configurations synchronized between environments, even in the most complex installations.

For more information about WebCenter Capture and how it can be leveraged to help your business, please contact TEAM Informatics.