Perficient IBM blog

Subscribe to Emails

Subscribe to RSS feed

Archives

Follow our IBM Technologies board on Pinterest

WebSphere Portal-Custom Impersonation Portlet Invoked from Themes

This blog provides a different approach on implementing impersonation in portal applications. Impersonation, as we know, is a Portlet service, which lets the user (A) access the portal application as another user (B) by logging in as him or her (B). Out-Of-Box Impersonation Portlet provided by WebSphere Portal lacks flexibility and customization features specific to the requirement of the application.

There are 2 steps in implementing our custom impersonation Portlet:

i)  Creating a Portlet and implementing impersonation in action phase:

The following snippet use Sprint Portlet MVC annotations. Impersonation Service provided WebSphere Portal has two impersonate method. We use the one whose parameters are PortletRequest, PortletResponse and userDN. The first two parameters can be obtained in the action phase while the userDN we get it from the LDAP by passing the userID (of the user whom we are going to impersonate) using PUMA services.

Code1

Read the rest of this post »

WebSphere Commerce: Data Load for Custom Table

The Data Load utility is the new enhanced business object based loading utility that provides an efficient solution for loading into your WebSphere Commerce database.  Today I wanted to share a brief tutorial on the two ways you can load data using  Business Object Mediator and Table Object Mediator and how Catalog, Inventory, Price, Catalog Filter, Member, Location and Commerce Composer related data can be loaded with out of the box mappings using business object mediator.

Example 1:   Let’s say you have a table which a contains catalog entry id and some sort of code for each catentryid:

Database Table:

CREATE TABLE XCATENTRYCODE(
CATENTRY_ID BIGINT NOT NULL,
CODE VARCHAR(20),
OPTCOUNTER SMALLINT,
CONSTRAINT XCATIDCD1_PK PRIMARY KEY(CATENTRY_ID),
CONSTRAINT XCATIDCD1_FK FOREIGN KEY (CATENTRY_ID) REFERENCES CATENTRY(CATENTRY_ID));

The Data Load utility is the new enhanced business object based loading utility that provides an efficient solution for loading into your WebSphere Commerce database.  Today I wanted to share a brief tutorial on the two ways you can load data using Business Object Mediator and Table Object Mediator and how Catalog, Inventory, Price, Catalog Filter, Member, Location and Commerce Composer related data can be loaded with out of the box mappings using business object mediator.

Example 2:  Let’s say you have a table which contains a catalog entry id and some sort of code for each catentryid:

Database Table:

CREATE TABLE XCATENTRYCODE(
CATENTRY_ID BIGINT NOT NULL,
CODE VARCHAR(20),
OPTCOUNTER SMALLINT,
CONSTRAINT XCATIDCD1_PK PRIMARY KEY(CATENTRY_ID),
CONSTRAINT XCATIDCD1_FK FOREIGN KEY (CATENTRY_ID) REFERENCES CATENTRY(CATENTRY_ID));

If you notice the table, it contains two columns. CATENTRY_ID which is primary key and foreign key of CATENTRY.CATENTRY_ID. The source system sent a CSV file in the following format:

DailyCatentryCode.csv

PartNumber,Code

Now we have a data file and table to which this data goes. This is how we map the data. XCATENTRYCODE.CODE mapped to CSV file “Code” column.  Before going with the data load process, we need to understand the point that we have only a part number and using this, we get CATENTRY_ID from the CATENTRY table. It is possible to get, if we have a unique index.  CATENTRY has only one unique index i.e PARTNUMBER + MEMBER_ID.
So far we have table XCATENTRYCODE (Destination) , CSV file (Source) and mapping between source and destination:

wc-loader-code.xml
<_config:DataloadBusinessObjectConfiguration
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://www.ibm.com/xmlns/prod/commerce/foundation/config ../../../../xml/config/xsd/wc-dataload-businessobject.xsd”
xmlns:_config=”http://www.ibm.com/xmlns/prod/commerce/foundation/config”>

Now let’s go through the following mapping:

We are going to load CATENTRY_ID column with CATENTRY_ID that can be retrieved from IDResolve.  This IDResolve declared to use CATENTRY table, which means CATENTRY_ID will be retrieved from the CATENTRY table and not to generate a new key.  The next two columns (UniqueIndexColumn) are the unique index columns. PARTNUMBER is mapped with CSV PartNumber.  MEMBER_ID is retrieved from BusinessContext. In the business Context storeOwnerId is nothing but MEMBER_ID.  Now the mappings are completed.

wc-dataload-code.xml
<_config:DataLoadConfiguration
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://www.ibm.com/xmlns/prod/commerce/foundation/config ../../../../xml/config/xsd/wc-dataload.xsd”
xmlns:_config=”http://www.ibm.com/xmlns/prod/commerce/foundation/config”>

Finally, ensure you have CSV in the right location and we are ready to load data.  Just one of the many examples of this great utility!   There are some other great tutorials and videos on this topic I would recommend you check out.  Introduction to the data load utility: YouTube video – http://youtu.be/jCVOwqH0Rhw?list=PLhNYtwk4oIbdCR_-Gj_trKzApmuom5wfK

 

 

 

Tags: ,

Posted in Commerce, News

Upcoming Webinar: Compensation Management for Financial Services

Financial services and banking organizations are challenged with aligning sales performance with corporate goals to drive business growth. In addition to financial performance, one of the largest challenges financial institutions face today is managing the balance of meeting regulatory requirements without potentially disrupting performance.

The following includes a high-level look at some regulatory guidelines on compensation for financial services organizations:

ICM FS Blog Image 1

To help your organization manage performance and risk data against regulatory reporting requirements, you need to develop an enterprise-wide governance structure to gain control over sales channel compensation programs. Join us for an upcoming webinar on October 21, 2014, Increase Financial Firms’ Sales Performance & Compliance with Compensation Management, where our experts will cover:

  • Challenges around sales performance, Dodd-Frank and compensation governance in financial services
  • Industry-focused use cases and best practices for sales performance management solutions
  • Case studies of leading financial institutions implementing sales performance and compensation management

You’ll also learn how IBM Cognos Incentive Compensation Management enables organizations to achieve operational efficiency and reporting accuracy, greater data transparency, reduced risk and detailed sales performance analytics.

ICM FS Blog Image 2

To register for the webinar, click here.
Increase Financial Firms’ Sales Performance & Compliance with Compensation Management
Tuesday, October 21, 2014
1:00pm CT

Perficient at IBM Insight 2014

Perficient is proud to be a Gold Plus Sponsor of IBM Insight 2014, the premier conference for big data and analytics, which is being held October 26-30 in Las Vegas. Visit us at booth #G-721 in the EXPO Hall, where you can learn how we’ve leveraged our extensive expertise in big data, information management, enterprise content management, business analytics and performance management to deliver exceptional solutions to our customers.

insight-website-banner

We have an exciting line-up of customer events at the conference:

 

Monday, October 27

BPM-6380A: NiSource Uses Cognos TM1 for Strategic and Tactical Planning of Gas Distribution Pipelines
Perficient and NiSource, a leading regulated energy company, are hosting a breakout session where you’ll learn how Cognos TM1 was implemented to provide optimal scenario-planning capabilities with added flexibility to address tactical and strategic drivers.

Event Time: 11:30am-12:30pm
Location: Mandalay Bay I

Meet with The Chickasaw Nation
Representatives from The Chickasaw Nation will meet with attendees to discuss their IBM performance management implementation and demo their current Cognos Disclosure Management environment. Attendees will also receive an electronic copy of the white paper, “Streamline the Internal Reporting Process: Achieve Close Process Efficiencies with IBM Cognos Disclosure Management.”

Event Time: 5:00pm-7:00pm
Location: EXPO Hall, Booth #G-721

 

Tuesday, October 28

Perficient’s EXPO Margarita Bar
Join us in the EXPO Hall to unwind from the conference with margaritas and networking prior to the No Doubt concert.

Event Time: 5:00pm-7:00pm
Location: EXPO Hall, Booth #G-721

 

We hope to see you at these events!

How to Identify Business Decisions for Automation

I was recently asked by a client, “What is a litmus test when identifying components for Decision Management?” This was a great question that unfortunately is all too often not considered during Decision Management projects. Using criteria to determine suitable decisions is needed in order to effectively implement Decision Management. This post will provide the main characteristics to identify suitable candidates for Decision Management components during the Decision Discovery phase of a Decision Management project. Decision Discovery is the initial phase of a Decision Management project that involves identifying decisions, designing the decisions, and then modeling the decisions.

magnifying_glass

Organizations make numerous types of decisions as part of their day to day operations, yet not all these decisions are suitable for Decision Management. It is important to understand the characteristics of suitable decisions in order to streamline critical decision making processes. The Decision Discovery process begins with Identifying the Business Decisions that need to be automated. The following are specific characteristics which can help guide you in identifying suitable decisions: repeatable, non-trivial, and measurable business impact.

Operation decisions are repeatable. This is the most important characteristic of a business decision. By nature, operational decisions occur repetitively, for each customer or each product. For example, the same eligibility criteria is applied whenever a person applies for an insurance benefit. If the decision is not repeatable it does not provide value to automate it within Decision Management. The following are some questions you can ask when determining if a decision is repeatable:

  • Does the operational decision occur within a defined time? Most organizations have already defined a point in time when a decision needs to occur in the context of a business process. For example, a loan application needs to be analyzed to detect fraud prior to the next step of being evaluated for regulatory compliance. If it is possible to say when the decision occurs, it can be considered repeatable.
  • Does the operational decision contain a consistent set of information? In order to understand what information is used to make the decision, it should contain a consistent set of information between decisions. To answer this question, you must identify which set of information is used to determine the outcome of the decision. For example, on an insurance application, you always need to know information about the applicants’ age, gender, driving record, previous claims, and credit information. These are identifiable, fixed sets of information that is required from each applicant in order to make a decision on whether or not to provide an insurance benefit.
  • Does the operational decision produce predictable outcomes? Using the same insurance application example, an insurance organization would be determining whether or not the application meets their criteria for a person to receive benefits and how much to quote for a premium. The outcomes are predictable and can be measured for success over time.

Operational Decisions are non-trivial. The second characteristic of suitable business decisions is whether or not the decision is complex. If the operational decisions are trivial or straight forward they can be easily maintained in application code. The typical type of decisions which are considered complex are government regulations, compliance policies, risk assessment of large sets of data or decisions which require a deep understanding of domain knowledge. In certain circumstances, the decisions may be straight forward but may need to be updated often, which results in them being given the distinction of non-trivial. Building automated business decisions around complex human tasks or business processes which require frequent updates will result in a high return on investment (ROI).

decisionOperational Decisions have measurable business impact. Suitable business decisions need to have definitive and measurable business impact. One must define the business motivations and goals as part of the Decision Discovery. If an organization wishes to measure success in terms of improving customer retention or reduce overall lending portfolio risk, the Decision Management implementation can focus on replacing decision components on legacy systems or identify appropriate decisions which make them more agile in achieving these goals. Measuring the impact of single operational decisions might be inconsequential, however, when decisions are analyzed collectively over a period of time, they represent a significant impact to the business. It is recommended to begin by selecting operational decisions which have the biggest impact to the business.

The operational decisions should be candidates for automation. In order for a decision to be a candidate for automation, the business should not believe it relies on human judgment. There is no value in automating a decision if the business does not believe it is necessary, resulting in unuse. If human judgment is being used to determine a decision based on guideline or regulation, these are typically good candidates for decision automation. Some examples of candidates for automation are eligibility operational decisions that determine if a person is eligible for a product or service. Validation operational decisions are decisions which enforce policies or risk assessment which determine how risky a customer or transaction are. However, if the organization believes the decision requires human judgment, then it is not a good candidate for automation.

So one may wonder, how can suitable business decisions be found for determining these characteristics? This can be done by analyzing business processes for key words such as “Determine”, “Decide”, “Compute”, “Validate”, “Assess”, and “Select”. Another method is to analyze legacy systems. The decisions can be buried deep in code and may not be easily identifiable as business decisions. But decision components can be identified by how frequently they change. It is highly likely that these are candidates for automated decisions, especially when there are regular change requests. You can also look for legacy code that is implemented in a table-driven approach. Table-driven or parameterized approach in which logic is implemented in table format was previously used as a way to make code more flexible and easier to change when developing legacy systems. This may provide flexibility, but not to the extent of Decision Management. The business is still dependent on IT resources and delivery schedule and at times may have a large number of change requests impacting the ability of the business to respond to changing market conditions. Decision Management eliminates this dependency.

Once the decisions have been identified they need to be documented and modeled. More details will be provided on these steps in my next post.

At Perficient we recommend that our clients attempt to identify an ROI and a quick win candidate for the business. Clients are guided to should focus on a specific area of the business and develop high ROI decisions to prove the approach and to provide immediate value. Using the Agile Development methodology, you can incrementally develop decision services over time. This provides execution transparency into the policies driving business decisions as a result of the logic being published outside application code. As a result, the business is flexible and able to respond quickly to rapidly changing market conditions.

 

References:

Decision Requirements Modeling for Business Rules Projects  [White Paper], Decision Management Solutions

Business Rule Concepts [Kindle Edition], Ronald G. Ross (Author)

Writing Effective Business Rules [Kindle Edition], Graham Witt (Author)

Demonstrating the value that can be derieved from using Policy and Rules [developerWorks Technical Library] Maryann Hondo (Author), Jerome Boyer (Author), Andy Ritchie (Author)

Key Considerations for Contract Management Implementation

What are some of the considerations that need to be taken into account when deciding to implement contracts management? This is a question time and time again posed to me and my group from consumer product companies, information technology groups, and particularly health care companies alike. More and more companies are coming to market looking for a contract management solution —with sometimes not even an effective repository of contracts that provides visibility into contracts terms and commitments.

As our clients begin to position themselves for the challenges associated with Health Reform, there will be a tremendous amount of pressure in the provider contracting management area to:
1. Reduce cost
2. Digitize and protect information
3. Harness information within the organization to improve workflow and mitigate risk.

An optimized approach for Provider Contract Management will be to enable our clients to:
1. Dramatically reduce cycle times and associated costs
2. Improve relationships with the provider community
3. Remove manual workflow and associated analytics

When it’s all broken down, I like to relay to my clients some of the following elements for consideration when starting on their path of selecting a Contract Management solution:

Element 1: Start With Your End Goal In Mind
Develop your own vision that reflects your priorities and goals of the organization before you start any contract management initiative. In health care institutions particularly, it is common to have a number of disparate groups negotiating contracts for separate areas of the institution. With acquisitions and divestures or medical groups, it is very common to have differing practices and procedures throughout as it relates to contracts. A Health Care Institution needs to consider how a contracts management solution would fit into place in the organization. An example vision could be: A system with the ability to review, execute and maintain contracts in an electronic format that checks for approvals and compliance, has reporting capabilities, and is user friendly to the audience.

Element 2: Understand The Contract Management needs
Know the importance of understanding your processes (whether they are ‘to be’ or current) helps identify your ideal solution. With Health Care, incorporating HIPPA rules, medical practice rules, retention laws, and other important elements can all be baked into a solution. A diagram will assist you in putting all the pieces together and it ensures you don’t miss anything when creating your system requirements later.

Element 3: Get the Right People, Create the Right Team
Put together a team that will manage responsibility for the decision and implementation. This project team should gather all needs from various stakeholders, define requirements, create the process and workflow, and make sure the system can address the pain points that need to be solved. It’s important to have representatives from every team that uses, implements, or supports the system from all of the Health Care Groups, as they will be the end users of the solution. For it to become a success, all group input needs to be collected to create support of the solution. An ideal team could include IT, business development, compliance, finance, legal, sourcing, and physicians.

Element 4: Interview the Team
It’s our recommendation that interviews should be used when selecting a contract management process and solution. Interviews should include the end users who will send the contract out as well as the power users of the legal services group (legal ops, paralegals, etc.)
Sample questions can be along the lines of:
• What is the process for contract review?
• When is a contract required?
• What are your group’s specific health care regulations that need to be considered?
• Are the docs/nurses/medical staff going to be using this system? If so, in what capacity?
• Which provisions must be included?
• Who negotiates T’s and C’s?
• Who can sign off?

Element 5: Understand Barriers and Pain Points
Very important, from our perspective is to take time to understand external barriers, any disparate cultures between Health care groups, a change-resistant corporate culture, compliance challenges, HIPPA challenges, competing / disparate databases, competing projects, or even the internal perceptions of legal.

Element 6: Consider Integrations
What are the potential integrations that your company is considering with this system? What are the easy wins and more short term integrations, and what are the longer integrations? It is key to determine how they fit into the longer term strategy. Some examples of systems provider-based healthcare organizations typically integrate a Contract Management system with include, but are not limited, to the following:
• Medical Billing System – Trizetto FACETS / Portico Systems (McKesson), allows for revenue maximization, claims automation, and helps standardizes billing processes to allow for less time for claims to be spent in accounts receivable.
• Content Management System – IBM Filenet / EMC Documentum, allows for an organized manner of viewing contract attachments
• E-Signature – Echosign/Docusign, allows for increased throughput of contracts
• Active Directory – allows for Single Sign-On capabilities

Element 7: Think about Privacy and Security
Consider both privacy and security when selecting a solution, and recommended IT and legal work together to implement a solution that’s going to fully meet the needs and requirements of the organization.
Element 8: Review and analyze all the information you’ve gathered
The internal team should analyze all of the information gathered during the process before making a decision, inclusive of the following:
• Reviewing all Health Care policies and procedures, including rules, standards, and exceptions
• Reviewing and diagraming current methods and workarounds
• Considering solutions, such as enhanced processes, and weighing the pros and cons of an internal database system versus a dedicated vendor

Element 9: Define what you need
It is suggested that your group take the following into account when selecting a solution:
• How many licenses will you need?
• Will there be one central administrator or will everybody have access? Should they?
• Consider tiers for those that may need a license and who should have access to what
• Define who is a “must have” or a “nice to have”
• How any legacy records should be migrated?
Once you know your requirements, you can create a document that defines what to look for in a contract management solution.

In Conclusion
A sound contract management implementation will allow provider-based healthcare organizations to achieve the following benefits:
• Reduce administrative costs, while increasing provider payment accuracy
• Integration with other systems enables the decrease of contracts to claims gap.
• Via contract reporting, improves visibility of standards adherence and clause usage/distribution

I have found some key features of a Contact Management solution that have particularly impressed provider-based healthcare organizations are as follows:
• Contract wizard functionality:
• Step-by-step series of questions presented to user to increase contract throughput and ease contract authoring process
• Automates customization of contracts for a given provider
• Centralized repository for provider contracts and images (ability to bulk load of legacy agreements)
• Standard/alternate contract clauses and templates
• Configurable contract workflows for end-to-end contract lifecycle management
• Rules-driven contracting stands, compliance enforcement, and reporting

XML Mapping Approaches using IBM Integration Designer 8.5

 

 

Introduction:

Business Process Execution Language (BPEL) is a XML-based language used to define enterprise business processes within Web services. BPEL extends the Web services interaction model and enables it to support business transactions. Processes written in BPEL can orchestrate interactions between Web services using XML documents. In order to accomplish this, maps such as XML map and BO (Business Objects) map could be used to convert data from one structure to another.

Below are the approaches to handle some mapping scenarios using XML map.

1) Handle complex logic using BPEL variables:

There may be scenarios where a complex logic are to be executed and the result of the logic need to be used as one of the condition in map. Executing the logic in iteration of the map may be complicated and also will impact performance.

 Illustrated Scenario:            

For instance, there is a java utility method that will return the employee ID of the “Best Employee of the Year”. This method implements a complex logic by analyzing various data and stats to arrive at the result. Expectation is to map the employee information using XML map in BPEL and set the isEmployeeOfTheYear element to true, if the employee is the “Best Employee of the Year” based on the utility method logic.

Mapping Approach:

Call the utility method and assign value to the ‘bestEmployeeID’ variable

blog_1

 

Apart from input/output of the XML map, add an additional input element ’bestEmployeeID’ to the XML map

blog_2

 

blog_3

 

This is the ‘properties’ view of XML data map after the second input variable is added to the map.

blog_4

 

Assign the bestEmployeeID to a map variable to get the reference inside for loop

blog_5

 

Checking for condition inside the for loop to check if the current instance’s employee id is matching with best employee’s ID

blog_6

 

If the condition matches then ‘true’ is assigned to isEmployeeOfTheYear element in output

blog_7

 

Benefits of using this approach:

  • This improves performance as we are not applying complex logic to derive bestEmployeeID, for every element in employee list.
  • The complex logic to derive bestEmployeeID, has been secluded from BPEL’s XML map and hence maintainability is easy.

2) Using Map Variables:

Local map variables could be used in the below mentioned scenario.

  • Pass additional details to a for-each apart from the list
  • Use a derived object/list or value in any level of map, such as inside for-each, inside if/else scope, local map scope and so on.

 

Illustrated Scenario:

 Basic requirement of this illustrated map is to map the employee list. The employee ID of the best employee of the year is passed as an additional input to the map.  This information is needed inside for-each scope in order to set isBestEmployeeFlag inside for-each scope. If best employee id is passed as a supplementary input to for-each then we end up with an error.  To avoid this error and also get the best employee id into for-each scope, map variable could be used. Error screenshot is below.

blog_8

 

Mapping Approach:

Create a map variable and assign value to it using XPATH expression

blog_9

 

blog_10

 

Created map variable is available everywhere inside the map scope and hence can be used inside for-each scope.

blog_11

 

Benefits of using this approach:

  • When using map variable, we can avoid carrying a particular derived object into multiple levels of map such as If/else scope, for-each scope or local map scope.
  • We can avoid error that happens while passing supplementary input to for-each
  • By using map variable we can derive object/list or value once and make it available everywhere in map and thus avoid running the derivation logic in multiple places if map.

 3) JOIN:

               Join could be used to pass additional details to for-each apart from the primary array/list. Like, map variable Join is another way to pass additional input to for-each. XML map does not allow multiple inputs to for-each. If we need value of another object to population few element of the target List, then it can be accomplished to using “Join”. Both the List and the additional object could be passed as input to Join. Inside Join both the List and  additional object will be available as Source along with target List. Mapping could be done as per the requirement.

Illustrated Scenario:

Basic requirement of this illustrated map is to map the employee list. The employee ID of the best employee of the year is passed as an additional input to the map.  This information is needed inside for-each scope in order to set isBestEmployeeFlag inside for-each scope. 

Mapping Approach:

Pass any additional information to map using Join

blog_12

 

blog_13

 

Use the additional information used inside the for-each scope

blog_14

4) APPEND:

Append option could be used to map multiple single objects if same data type to an array or List.

 

Illustrated Scenario:

 Map two employee objects to a list of employee object, thus forming a list out of multiple single objects of same type.

blog_15

 

blog_16

Posted in News

Simple Steps to Create a Product in CMC

IBM Commerce Management Center gives complete control of your catalog. You could add/delete/modify any product description and control pricing of the product. Here i would like to show how to add a product in Aurora Store.

Let us add a product under “Boys Pants” Category and see how easy to publish a product.

1. Open CMC.

2. Go to Management Center Tools>Catalogs. You can see below image, I have Aurora as master catalog. If you have any other store, you should see something similar

1

3. Add New product like like shown in below image

2

 

4. Fill the details under manage product. Ensure that you have display to customers checked.Give List Price and Offer Price as $100 each.

 

3

Note: Offer price is the one Aurora store refers when product is displayed.

Hints:

a. If you ever come across error “Price Pending” in aurora store. First place to check is if this product has offer price.

b. If you still see “Price Pending” even after completing all the below steps then run “UpdateSearchIndex” scheduler job and check.

5. Let’s add a defining attributes. lets say our Boys Pants product have only color. Add Color alone. Defining attributes are the one user could able to choose. In our example, User can select color from the color attribute we defined.

4

 

6. Lets save and preview.

5

What you see in above preview?

a. Product is unavailable

b. No display image

c. Cost of the product is $100.

You could fix image by adding image under display section. What about product is currently not available section?, Lets fix this.

 

7. Go back to CMC, Click on “Generate SKUs”, You can right click on product and click Generate SKU

6

8. I can see three items being created. Since only three colors are available for boys pant.

7

 

You could see list of SKUs, These are called Items. If there are 3 colors , our product OMS PANT will have 3 items.

 

7. Now save and preview the product. You can see what you wanted.

8

 

 

8. If you want to set the price range based on quality available. Like if quantity available is 50-100 then price has to be $50 and if quantity available is between 1-50 price has to be $100. Then you can define that at Manage Product>Pricing under offer pricing for aurora store.

9

With this you could able to create Product,Items and set prices based on quantity.

Tags: ,

Posted in Commerce

Datapower XI 52 and XC 10 Integration:Encode/decode the cache key

From our previous blog post we have seen how easy it is to setup a seamless integration between the XI 52 and XC 10. In this blog post, we dive into a little more detail of the seamless integration by understanding how datapower encodes and decodes the cache key.

Datapower XI 52 and XC 10 Integration: Encode/decode the cache keyDatapower XI 52 uses the URL as the cache key for the storing and retrieving of the object from XC 10 caching device. When a request is made to the XI52, XI 52 will make a call to the backend and store the successful response in XC 10 device with encoded URL as cache key. For the consecutive requests XI 52 will use the encoded request URL as cache key to retrieve it from the cache. The conversion of the URI into cache key is two-step process,

  1. The request URL is base64 encoded with input character set as UTF-8
  2. Then result is then URL encoded.

The result will be a cache key which can be used to retrieve the cached object.

For example,

  1. Let’s assume the request URL for a service on Datapower XI 52 with seamless integration enabled with XC 10 stored in grid name “physician” is
    http://www.hospitial.com:5454/physician/appointments/list?StartDate=08/14/2014&EndDate=08/26/2014
  2.  The base 64 encoded version will be
    aHR0cDovL3d3dy5ob3NwaXRpYWwuY29tOjU0NTQvcGh5c2ljaWFuL2FwcG9pbnRtZW50cy9saXN0P1N0YXJ0RGF0ZT0wOC8xNC8yMDE0JkVuZERhdGU9MDgvMjYvMjAxNA==
  3.  By URL encoding the above result we will get the cache key aHR0cDovL3d3dy5ob3NwaXRpYWwuY29tOjU0NTQvcGh5c2ljaWFuL2FwcG9pbnRtZW50cy9saXN0P1N0YXJ0RGF0ZT0wOC8xNC8yMDE0JkVuZERhdGU9MDgvMjYvMjAxNA%3D%3D

To retrieve the cached object using the cache key we need to point to correct data grid.

https://CacheCollective/resources/datacaches/{gridname} /{gridname.LUT}/{cachekey}

Calling the above URL with valid credentials will retrieve the cached object.In our example the URL will look like

https://CacheCollective/resources/datacaches/ physician/ physician.LUT/ aHR0cDovL3d3dy5ob3NwaXRpYWwuY29tOjU0NTQvcGh5c2ljaWFuL2FwcG9pbnRtZW50cy9saXN0P1N0YXJ0RGF0ZT0wOC8xNC8yMDE0JkVuZERhdGU9MDgvMjYvMjAxNA%3D%3D

CURL Command for cache object retrieval

curl –user <username>:<password> -k https://{XC10deviceaddress/resources/datacaches/ physician/ physician.LUT/ aHR0cDovL3d3dy5ob3NwaXRpYWwuY29tOjU0NTQvcGh5c2ljaWFuL2FwcG9pbnRtZW50cy9saXN0P1N0YXJ0RGF0ZT0wOC8xNC8yMDE0JkVuZERhdGU9MDgvMjYvMjAxNA%3D%3D

The following are the scenarios decoding the XC 10 key will be helpful

  1. Retrieve the object stored using seamless integration from different Multi-protocol gateway.
  2. Building the URL to call through CURL/command line
  3. Debugging the integration issues

Links

  1. Base 64 encoding http://www.base64encode.org/
  2. URL encoder http://meyerweb.com/eric/tools/dencoder/

WebSphere Commerce: Omni-Channel Experience

What is Omni-Channel?

Have you heard of Multi-Channel and Omni-Channel? Why e-Commerce retailers are moving towards Omni-Channel implementation? Let’s understand what it is and why it is important.

Today’s tech savvy and smart shoppers expect the same price, the same merchandise, same promotions and discounts across every channel, regardless of how they come into contact with the brand. They want to shop the same merchandise with seamless integration across all the channels.

OmniChannel11

Omni-Channel Retailing is concentrated more on a seamless approach to the consumer experience through all available shopping channels in an integrated way. It tracks the customers across all channels. Merchandise and promotions are not channel specific, but rather consistent across all retail channels.

 

OmniChannel2

Benefits of Omni-Channel

Below are the benefits of Omni-Channel. As you can see, each channel drives the revenue of each other.

OmniChannel3

Omni-Channel: WebSphere Commerce Components

OmniChannel4

Omni-Channel Experience: Online Shopping shopping

I believe that following features can be implemented online in IBM’s WebSphere Commerce to support Omni-Channel experience to buyers.

  • Check product’s availability in Store
  • Buy Online Pickup In Store (BOPIS)
  • Reserve Online Pickup In Store (ROPIS)
  • Ship from Store
  • Browse In-Store products Online across different categories
  • Shop the Store: Store specific view to browser ALL items within particular store
  • My Store View based on Geo-location
  • Barcode Scan using end-user’s iPhone and check the availability in-store as well as online
  • Track customer’s moment in store using Mobile App & In-Store sensors, and make recommendations Online based on departments that customer visit and the time that customer spends in specific department.