Java Payment System Upgrade {#so-conversion-java}
=================================================

Follow these instructions to transition your SCMP payment system to send and receive HTTPS Simple Order API transmissions using the Java programming language. Upgrading your payment system to Simple Order requires you to download an API key from the `Business Center`.  
If your system uses the `Cybersource` Java SDK to send API messages, there is an alternative upgrade method that only requires you to have to update the SCMP endpoint configuration in the SDK. For more information, see [Java SCMP Client SDK Upgrade](/docs/cybs/en-us/so-p12/migration/all/so/so-conversion/so-conversion-java-sdk.md "").

> You must use Java 8 or later to implement this change.

**Enable SCMP-to-Simple Order Conversion**
------------------------------------------

The conversion kit method enables users with an SCMP payment system to maintain their SCMP system while using the Simple Order endpoint. When you send an SCMP request to `Cybersource`, the request is converted into a Simple Order request and then sent to the corresponding Simple Order endpoint. When `Cybersource` returns a Simple Order response, the response is converted into SCMP for your system to process it. This image demonstrates the conversion process:

#### Figure:

SCMP-to-Simple Order Conversion  
![](/content/dam/new-documentation/documentation/en-us/topics/platform/soap/conversion/images/scmp-to-so.svg/jcr:content/renditions/original)

Setting Up SCMP-to-Simple Order Conversion
------------------------------------------

Follow these steps to set up SCMP-to-Simple Order conversion.

1. Add the SCMP conversion kit to your payment system. Retrieve the conversion kit files from the *SCMPSampleClient* folder in GitHub:  
   <https://github.com/CyberSource/cybersource-sdk-java/tree/master/samples/scmp/SCMPSampleClient>

2. Add the *cybs.properties* file to your application. Retrieve the *cybs.properties* file from the *samples/scmp/SCMPSampleClient* folder in GitHub:  
   <https://github.com/CyberSource/cybersource-sdk-java/blob/master/samples/scmp/SCMPSampleClient/cybs.properties>

3. Update these parameter values in your *cybs.properties* file:

   * merchantID: Set to your production merchant ID used for commerce.
   * keysDirectory: Set to the file path that leads to your P12 certificate.
   * keyAlias: Set to your merchant ID (MID) name.
   * keyPassword: Set to your P12 certificate password.
   * sendToProduction: Set to one of these possible values to determine which environment your API request message is sent to:
     * `true`: production environment.
     * `false`: CAS environment.

   ```
   merchantID=test_mid
   keysDirectory=/user/oliver/keys/
   keyAlias=test_mid
   keyPassword=test_password
   sendToProduction=true
   ```

   You can set other files at your discretion. See the comments in the *README.md* file to determine which values to change: <https://github.com/CyberSource/cybersource-sdk-java/blob/master/README.md>

4. After your SCMP payment software creates a request, replace your existing request to SCMP with a request to the `processRequest` method from the class in the *Util.java* file. Then pass your SCMP request as a parameter in the `processRequest` method.

   ```
   ICSReply scmpReply = Util.processRequest (scmpRequest, cyberProperties);
   ```

   If you do not have the *Util.java* file, it is available in the *samples/scmp/SCMPSampleClient/**src*** folder in GitHub:  
   <https://github.com/CyberSource/cybersource-sdk-java/blob/master/samples/scmp/SCMPSampleClient/src/Util.java>

Result
------

When you send an API request to `Cybersource`, the `processRequest` method converts your SCMP request into a Simple Order request. It then sends the converted request to the correct Simple Order endpoint. When you receive a Simple Order response from `Cybersource`, the response is converted into SCMP for your payment system to process.
