Symptom
When trying to save any data to Payment Information portlet "An Application Error" occurs -:
Environment
Employee Central - Payment Information
Reproducing the Issue
You will see the following fingerprint id in the error pop-up - fingerprint=85ca1230c1c966ee9ac7859386d293f54d080148
Cause
The root cause can be a few different things -:
- Due to Data/Configuration issue. The system is trying to query the Country object value defined on the PaymentMethodAssignmentV3 object. When it queries the list of Countries, it encounters a NULL (blank) value
- There is a PaymentMethod created in the system that has no Country defined under "Payment Method Assignment"
- There is a PaymentMethod with empty rows under the Payment Method Assignment
Resolution
The root cause could be due to either missing configuration value or missing data in the object.
Places to check -:
Payment Method object data (PAY-1449)
Payment Method objects have "Payment Method Assignment" association, which is associated with the "Country" object. As the association is present and must be used in the configuration, you cannot leave this blank, so in short, you need to assign at least 1 Country to each Payment Method.
Also, you may have some empty rows of data for this which will cause the error also
- Export the Payment Method object (including associated objects - as Payment Method Assignment is a child composite object) and check the data here also
To observe this issue below in the screen shot, you must be in edit mode. So when you open the payment method, click take action > make correction and then observe the issue
Please check through all of the payment methods for this issue
Country object (PAY-1424)
Incorrect Object Configuration
- You need to ensure that the Country object has all values correctly defined for its configuration. Do check compared to Demo instance and validate the values are correct - also "Google" to check values if needed.
- Country Code (3 char)
- Effective as of (01/01/1900)
- Country Code (2 char)
- Country Code (numeric-3)
- Currency
If one of the above values (such as "Country Code (numeric-3)" ) this can cause the exception. ALL Countries must have all these values correctly set. If 1 Country is missing a value in any of these fields - it could result in the NullPointerException we see in the log. For example, wrong 3 digit ISO code -:
Country object is Secured
If the Country object has been secured, then unless the end user has been permissioned with "View" access to this object, the UI will not be able to get a result from the object. That will lead to a NullPointerException also. The expectation in system design is that you should not Secure the Country object. If this is for some reason, required, then ALL users must be granted with "View" permission for all UI's calling "Country" to work (and in EC, thats most UIs).
Keywords
PaymentMethodAssignmentV3.getCountry(), NullPointerException, com.successfactors.genericobject.bean.businessobjects.Country.getCode(), Payment Information, Employee Central, 85ca1230c1c966ee9ac7859386d293f54d080148, fingerprint=85ca1230c1c966ee9ac7859386d293f54d080148 , KBA , LOD-SF-EC-PAY , Payment Information (Bank Information) , Problem