Challenge Overview

The purpose of this contest is to create a REST API service for the App Modernization Studio project.

Description

The Client has an REST service already running and we are building a new import/export API to communicate with this existing API. We will also need to build some API endpoints to fill any gaps in existing API for the export process. For this we will provide a docker image with the MSSQL database.

The major requirement for this challenge is to create the import/export REST service. This new service will need to communicate with the client's existing REST service. The Swagger file and business logic detailed documentation will be provided in forum along with a docker image of the backend database.

Direct database access will be needed for any missing API endpoints to support Import/Export that don’t exist in the current API. Those endpoints are described in the documentation that will be provided in the forum.

Export Service:

The export service should be built first to define the flattened file structure that contains all of the data from all of the tables which are included. The tables are defined in the Interface Document attached in the forum and a Docker Image of the database can be found attached as well.

Using these documents we need to create endpoints to retrieve all of the opportunity related data for each opportunity ID that is sent to the Export API endpoint. The export API itself should just handle the file creation and retrieving data via other APIs.

Separate controller and service for the missing API endpoints should be used to facilitate migration to client’s existing code. Hibernate should be used to persist data to database.

Each file generated by the export service should be in CSV format. Each opportunity ID should result in a single file for that opportunity and all related data. They will be compressed together before returning to the user.

Import Service:

The import service will take the CSV file in the format defined by the export service to import the data into another environment. The import service will process only one file per request. That one file will contain a single opportunity with all of the related data.

The steps for import should be followed in order so the data is created correctly within the application. The order can be found in the attached Workflow document, but will need to start with Customer creation if customer does not exist (/savecustomer endpoint), then opportunity creation, etc.

The new API must be built using:

- Spring MVC
- Spring Boot
- Maven
JDK 1.8
Hibernate (missing APIs)
Sonar for code quality http://www.sonarqube.org/

For configuring the Spring MVC service, annotations should be used. **Don't** use XML files.

Basic Auth should be used for authentication of the new REST service and the existing REST service.

Existing API URL and credentials will be provided in Forum.

For SonarQube please use the official docker image to host the server to validate the code. Also add the Sonarqube validation to maven. References:

To participate in this challenge you will need to sign a NDA. No files or communications can be shared elsewhere.



Final Submission Guidelines

Submission Deliverables

* Code in zip format
Any modification needed in Swagger file
Deployment Guide with all instructions to deploy and run the code (README.md)

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30063723