Challenge Overview

Basic requirements for this challenge:
  • Continue updating ASP.Net MVC Core Web API based on new workflow changes
  • Remain support Unit Testing that covered 90% or above
  • Update sql for sample data based on storyboard content
  • Update Postman based on new workflow changes

Technology Stack
  • Angular for frontend
  • .Net Core API for backend framework
  • Database: MS SQL Server

Deployment environment requirements
  • localhost
  • AWS EC2

Application Background
Our organization is structured by Value Streams after the SAFe industry model. A Value Stream represents an organizational sleeve that has a specific business focus with dedicated resources. For example, in our Insurance business we have multiple value streams such as Product, Inforce Operations, Marketing and Distribution etc. These values streams have roadmaps with target strategies and KPIs (Key Performance Indicators) they’re accountable to deliver on. The roadmaps are a rolling 4-6 Quarters of incremental outcomes representing the delivery of some type of business value. These outcomes ultimately achieve the strategy as measured by these KPIs.

We are looking for a solution to manage these roadmaps. This solution would be for a data entry UI , database repository, that will enable future Power BI data visualizations. This solution will enable multiple personas to access and input roadmap data and demonstrate how a Value Stream is achieving its strategy as measured by KPIs and delivery of incremental outcomes. Eventually, a simple integration between the UI and JH’s Backlog Management Tool (Rally) will be used to synch a few fields. This solution should enable an export of data that can be easily uploaded to a data visualization tool.

Problem
The primary goals for this UI and Database is to get users out of using excel spreadsheets and establish consistency in data being tracked across the division. Additionally, this solution will enable Value Streams to extract data in a format that’s indigestible by a Data Visualization tool reducing time spent creating manual PowerPoint presentations to demonstrate how strategy is progressing. Benefits are as follows:
  • Improved user experience tracking roadmap outcomes, KPIs and strategy progression.
  • Good usability and efficiency for entering data.
  • Consistency of roadmap data being tracked across all Value Streams in the U.S. Division with one source of truth.
Ability to easily export data and upload into a visualization tool enabling multiple personas to generate various data views.

CODE ASSETS
DESIGN ASSETS
Individual Requirements
  • You will continue updating REST API for required workflow changes as explained below
  • Make sure your REST API possible to consume for the frontend app
  • Pay attention for request body and response format based on Swagger file
  • Let’s discuss if you find any things need adjusted when build the REST API
  • Test the updated source with no error and pass the unit testing

1). Label updates
We need to update the labels across the backend applications:
  • Strategy Unit to Portfolio
  • Value Stream/VS Strategy to Target Outcome
  • Outcome to Incremental Outcome
Fix any postman collections and sample request body/headers

2). New endpoint for all created Portfolios and Value Streams
  • Below the header bar, display correct value for number of created Portfolio and Value Streams. Right now they pull number from all available 9 Portfolio and 26 Value Streams. Even though, the actual created Portfolios & Value Streams are different.
  • Create new endpoint for these Portfolios & Value Streams values

3). Update Roadmap endpoints for the new workflow changes
Required endpoints to updated are:
  • DELETE /api/roadmap/{id}
  • GET /api/roadmap/{id}
  • PUT /api/roadmap/{id}
  • GET /api/roadmap
  • POST /api/roadmap
  • POST /api/roadmap/search
  • POST /api/roadmap/export

3).1). Initiative
  • We need able to Add Initiative for each Target Outcome
  • Each initiative linking with Target Outcome
  • These are the fields for the Initiative
    • Initiative ID (text field)
    • Initiative Name (text field)
    • Last Checkpoint (calendar picker)
    • Next Checkpoint (calendar picker)
    • Initiative Health (drop down: Red, Amber and Green values)
    • Initiative Health Trending (dropdown: Improving, Neutral and Declining)
    • Initiative Health Commentary  (text field – for long description)

3).2). Strategy Level & Strategy Level Theme
  • IMPORTANT: Strategy Level & Strategy Level Theme linking with KPI now instead of Incremental Outcome.
3).3). Incremental KPI
  • For this updated workflow, we need able to add Incremental KPIs for each Incremental Outcome Description.
  • Need able to add multiple incremental KPIs or delete them.
  • These are the fields for the Incremental KPI:
    • Incremental KPI Description
    • KPI ID
    • KPI Description
Filtering
The parameters should be returned in the response with the total count of matching records as well, It is preferred if the default values are configurable.

Pagination
We need to add pagination when user scrolling the page, these endpoint should have the following parameters :
- offset (default 0)
- limit (default 20)
The parameters should be returned in the response with the total count of matching records as well, It is preferred if the default values are configurable.

Validation
Perform the following validation in each API endpoint :

Path parameters :
- They usually represents the ID of existing objects, a validation should be done that the entity with ID exists, otherwise return error.
- Required input parameters in create endpoints must be present. For update endpoints we can pass only the fields that should be updated.
- Required input parameters should be validated against their expected type.
- Optional input parameters should be validated against their expected type if provided.
- Foreign keys must be validated.
- Validation between callbacks must be performed.

Errors should be in json format with three fields :
- code : http status code
- status : success/failed
- message : reason of failure

Request and Response
- GET endpoints parameters will accept parameters as query strings, in key/value format.
- Create/Update endpoint parameters will accept input as JSON format.
- Exclude file upload endpoints which cannot work with application/json content type.
- Response should be in json format always.

Unit Testing
All of your code should be test covered. You must cover at least +90% of the code.
You need to test all cases and in test case assertion you need to assert accuracy of all fields.

Final Submission Guidelines

Deliverables
- All updated source code.
- Updated Postman collections and configuration
- Updated Sample init data sql (00.init.sql, 01.DDL.sql & 02.TestData_Integration_WithTestRoadmaps.sql)
- Challenge winner need send Merge Request to our repository

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30098762