Posted: 25 Apr 2016 17:28 EDT Last activity: 5 May 2016 21:57 EDT
Attempting to setup VPD for oracle db
I'm attempting to setup the new 7.2 Pega VPD using an oracle 12c database. I have completed all steps that can be done from the designer studio. When I click test connect on my secureDB database name instance, I receive the following error:
Custom properties are empty in data page D_VPDInfo which is defined for db cdcs: code: <none> SQLState: <none> Message: <none>
Another useful piece of information is that I had my D_VPDInfo page set to a page list. When I changed it to a page structure, I still received an error, but a different one:
The property D_VPDInfo.pyCustomPropertyList.pyValue was of mode String while com.pega.pegarules.data.internal.clipboard.ClipboardPropertyStrMinFeatureImpl.getPageValue() was expecting Page mode. Details: (none)
Thanks Buelent. Unfortunately, the link is only for pega internal users. For other users, are you saying we have tested VPD in pega 7.2 and it should work for that version? Any public documentation available for VPD setup with Pega?
We have validation to throw exception when custom properties are empty. This error is due to Data Page doesn't contain any custom properties. Add properties to D_VPDInfo Data Page. Let us know if you have any other issues.
Srinivas, thank you for your reply. There is no example for how the data in the data page should look. Below are examples of both my page structure data page and my page list structure data page. Neither are working. Is this how it should look? Furthermore, what is the context that the data page is ran from? Could there be ruleset or other app security blocking the loading of the data page during runtime?
Yup, I can see on the tracer that the data page loads with correct values right before I get the custom properties error. I went ahead and created an SR. My stack trace for the page structure error is as follows:
[MSG][Exception][STACK][com.pega.pegarules.pub.clipboard.WrongModeException: The property D_VPDInfo.pyCustomPropertyList.pyValue was of mode String while com.pega.pegarules.data.internal.clipboard.ClipboardPropertyStrMinFeatureImpl.getPageValue() was expecting Page mode. Details: (none) at com.pega.pegarules.data.internal.clipboard.ClipboardPropertyImpl.getPageValue(ClipboardPropertyImpl.java:3495) at com.pega.pegarules.data.internal.clipboard.ClipboardPropertyImpl.getPageValue(ClipboardPropertyImpl.java:3486) at com.pega.pegarules.data.internal.access.CustomPropertiesHelper.retrieveCustomProperties(CustomPropertiesHelper.java:44) at com.pega.pegarules.data.internal.access.oracle.SQLGeneratorOracle.applyCustomProperties(SQLGeneratorOracle.java:1398) at com.pega.pegarules.data.internal.access.ConnectionManagerImpl.applyCustomProperties(ConnectionManagerImpl.java:1241) at com.pega.pegarules.data.internal.access.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:1219) at com.pega.pegarules.data.internal.access.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:1156) at com.pega.pegarules.data.internal.access.DatabaseImpl.testConnection(DatabaseImpl.java:7977) at com.pega.pegarules.data.internal.access.DatabaseImpl.testConnection(DatabaseImpl.java:7960) at com.pegarules.generated.activity.ra_action_testdbconnection_09a507fa3deb13293af8c09798867520.step3_circum0
including this class: com.pega.pegarules.data.internal.access.oracle.SQLGeneratorOracle? If yes, that is the only possible when the retrieved custom properties map is empty. Otherwise, you would see something like this:
Yup, there are zero Debug statements returned for SQLGeneratorOracle class. Maybe there is something else the custom properties map is looking for. If you scroll above, I have screen shots of what the D_VPDInfo page looks like when run from the rule form, which is also the exact same as what I see from the tracer when I trace clicking the Test Connection button. I have pyCustomPropertyList.pyName and pyCustomPropertyList.pyValue for sure set.
There is a database name that follows 'defined for db' I just didn't paste that part. I followed the article for everything that needs to be setup in pega and prconfig.xml. We have not yet done anything in oracle. I'm trying to make sure the data page is setup correctly first. It looks like there are 3 seperate scripts that need to be run in Oracle. One that creates a type, one that creates a context, and one that sets a context. Would not running any of those cause any of the two errors I have pasted above?
We have identified a problem with the Code-Pega-DBApplicationContext class definition. We have an alternative way to define Data Page and can use List of Embed-NameValuePair in Data Page as defined below.
1.Prepare Data Transform
2. Prepare Data Page with List of Embed-NameValuePair.