Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

All services

  • Standardize utility classes into the util package, NOT utils.
  • Turn on disabled tests.
  • Audit to make sure all relevant unit tests/automated tests from v2 are covered in v3.
  • Add more thorough logging. (A quick review of the reference-data and requisition services suggest that controllers sometimes perform CRUD operations without logging anything.)
  • Showing a service's version creates a new Java object. Seems like it should just be a static method, since version info doesn't change over the life of the application.

...

  • Reverse the call from Reference Data to Auth Service.  Having this implies that to use Reference Data, you need to call a specific endpoint on auth
  • Remove auth's hardcoded list of services
  • Auth endpoints regarding initiate user password, change password, and forgot password aren't very restful

Stockmanagement Service

  • Remove auth's hardcoded list of services
  • Auth endpoints regarding initiate user password, change password, and  
    Jira Legacy
    serverJIRA (openlmis.atlassian.net)
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId448ba138-230b-3f91-a83e-16e7db1deed1
    keyOLMIS-1498
  • Auth endpoints regarding initiate user password, change password, and forgot password aren't very restful

...

Stockmanagement Service

  • Convert to order should be a Integration tests depend on a certain amount of demo data to be loaded when running (found integration test error about nodeId not existing when trying to move to new demo data loading approach, which does not load demo data during integration tests)

Fulfillment Service

  • Convert to order should be a fulfillment right. It is by warehouse, not by program. 
  • Need an integration test for FacilityFtpSettingRepository.findFirstByFacilityId (done: test)
  • Order domain object should not use Json annotations, but DTO for serial/deserial
  • Remove all hardcoded English strings that get returned to the client 
    Jira Legacy
    serverJIRA (openlmis.atlassian.net)
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId448ba138-230b-3f91-a83e-16e7db1deed1
    keyOLMIS-1399
  • Remove extra headers (X-Content-Type-Options, X-XSS-Protection) in RAML (done: review)
  • All endpoints should have controller integration tests for different HTTP codes; add JSON schemas (generally a regular JSON for 2XX codes, and errorResponse for 4XX codes) 
    Jira Legacy
    serverJIRA (openlmis.atlassian.net)
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId448ba138-230b-3f91-a83e-16e7db1deed1
    keyOLMIS-1499
  • Remove 500 errors from RAML (any endpoint can return it, but we do not have integration tests for these cases)
  • Change errorResponse.json to have message and messageKey, not message and description 
    Jira Legacy
    serverJIRA (openlmis.atlassian.net)
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId448ba138-230b-3f91-a83e-16e7db1deed1
    keyOLMIS-1399
  • Error handling classes should not log error, but should log debug (these are not actually errors)
  • Order.status should not be settable from a DTO.
  • Need to redesign to remove Dtos from Order domain object.
  • Doesn't make sense for StatusMessage object to be part of Order object. Doesn't seem to be used anywhere and if it's needed, it should be retrieved from the Requisition service.
  • Doesn't make sense for StatusChange object to be part of Order object. Only thing that appears to need it is the order report, and that could be filled in the DTO. It should be retrieved from the Requisition service.
  • It's unclear what facilityId is used for and why it's necessary, since there is requestingFacilityId, supplyingFacilityId and receivingFacilityId.
  • Move all authentication stuff in OrderController and ProofOfDeliveryController to PermissionService.
  • OrderController.getAllOrders should be paginated, if we need it. We may not want to have it, and just have everyone use the order search endpoint.
  • ExporterBuilder seems strange, as every time you need to convert something to DTO, you have to add another method to it.
  • Don't quite understand the need for Storable, since TransferProperties is the only one that uses it. Is this abstraction necessary?
  • Don't quite understand the need for OrderSender, since OrderFtpSender is the only one that uses it. Is this abstraction necessary?
  • Don't quite understand the need for TransferPropertiesFactory and TransferPropertiesConverter. The code is hard to follow.
  • Update README (stale)

...

  • Lot Codes were implemented (OLMIS-2262) with a validator that requires global uniqueness. That logic is probably incorrect. 
    • In LotValidator.java verifyCode() method, it forces each lot to be globally unique. I believe correct behavior is that LotCodes are only unique within a given Trade Items. Definitely two different TradeItems might both have a Lot Code "100", for example. OR perhaps we should have no constraints around uniqueness at all.

  • /users/userId/fulfillmentFacilities needs rightId parameter (similar to /users/userId/supervisedFacilities)
  • SupplyLine search has search and searchByUUID, which seems like it should be consolidated to one search endpoint.
  • Remove all hardcoded English strings that get returned to the client
  • Remove extra headers (X-Content-Type-Options, X-XSS-Protection) in RAML
  • All endpoints should have controller integration tests for different HTTP codes; add JSON schemas (generally a regular JSON for 2XX codes, and errorResponse for 4XX codes)
  • Remove 500 errors from RAML (any endpoint can return it, but we do not have integration tests for these cases)
  • Change errorResponse.json to have message and messageKey, not message and description
  • Error handling classes should not log error, but should log debug (these are not actually errors)
  • Update README (stale)

UI

...

Ready For Work

Jira Legacy
serverSystem JIRA
columnskey,summary,type,priority,status
maximumIssues1000
jqlQueryproject = "OpenLMIS General" AND component in (UI) AND status = "To Do" AND type in (Bug, Task, Story) AND labels in (TechDebt)
serverId448ba138-230b-3f91-a83e-16e7db1deed1

Backlog

Jira Legacy
serverSystem JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
maximumIssues1000
jqlQueryproject = "OpenLMIS General" AND component = "UI" AND status = "Roadmap" AND type in (Bug, Task, Story) AND labels in (TechDebt)
serverId448ba138-230b-3f91-a83e-16e7db1deed1


Platform

Below are platform-level issues. They may impact multiple services or impact the build and tooling. Many of these items were formerly in the "Dev and Build Infrastructure" epic (OLMIS-584); much of that epic was moved into label=TechBacklog, component=Platform, and fixVersion was erased so we could re-prioritize what of these issues are a priority.

...