3.0.0-beta - 28 October 2016
- Mary Jo Kochendorfer (Deactivated)
- Kevin Cussen (Deactivated)
- Brandon Bowersox-Johnson
Release Notes
The OpenLMIS Community is pleased to announce the beta release of OpenLMIS 3.0!
The initial offering to come out of the re-architecture effort for OpenLMIS, 3.0.0-beta contains one slice of functionality, Requisitions, based on an all-new micro-service architecture. This release is the first to utilize the new architecture and is a bold step in the direction of “shared investment, shared benefit” that is the rallying cry of the OpenLMIS Community. 3.0 Beta is a proof of concept for this architecture and is not a feature-complete release. It does not contain every feature that the eventual 3.0 OpenLMIS stable release will. Further features will be added to the system as we work toward the full 3.0 release scheduled for the end of February, 2017. Please reference the Living Product Roadmap for the high-level estimated release schedule through version 3.3.
Background
Early contributions to OpenLMIS by PATH, USAID, Rockefeller Foundation, the Bill & Melinda Gates Foundation, the UN Commission on Life-Saving Commodities, JSI, ThoughtWorks and others first helped shape the product and define its original code base (v.0.9) for deployments in Tanzania and Zambia in late 2013 under the name “eLMIS.” In 2015, eLMIS was also deployed in Cote D’Ivoire, and OpenLMIS software development continued with the v1.0 release, which was deployed by VillageReach to manage vaccine distribution in Mozambique and Benin.
As new installations of OpenLMIS were developed and deployed, a key challenge was the inability to easily extend the code base, which resulted in a “code fork” between the early implementations and the later v1.0 implementations. In an effort to address the fork the community agreed to begin working toward a common master branch, and at the September 2015 all-community meeting, the community also agreed that a single, “core” code line was required. This effort to re-work the OpenLMIS code is referred to as the "Re-Architecture" of OpenLMIS.
VillageReach and partners have worked to make the re-architecture process as transparent as possible through clear documentation available on the OpenLMIS Wiki. The OpenLMIS Re-Architecture Acceleration Brief outlines the plan and approach for this effort, the high level architecture is captured at Architecture Overview (v3), and the Re-Architecture Concept Note provides a detailed, clear explanation of the re-architecture plan and approaches.
OpenLMIS is open source, and all source code for this 3.0.0-beta release is available on GitHub for collaboration: https://github.com/OpenLMIS/openlmis-blue. That repository contains the reference distribution, and each service lives in its own GitHub repository as well.
Key Objectives
OpenLMIS 3.0 is built with an all-new architecture that better supports customizations and extensions. The goal is to enable multiple OpenLMIS implementations in different countries while still sharing one global, open source codebase. This concept is at the heart of shared investment, shared benefit. 3.0.0-beta may look similar to version 2, but under the hood the architecture and technology are a leap forward.
Specifically, the key goals of the 3.0 Beta are to demonstrate:
- New micro-services architecture
- Ability to support extensions
- Basic feature set within requisitioning
Again, the 3.0.0-Beta release is not a feature-complete release, meaning it does not contain every feature that 3.0 will contain. Instead, it focuses on demonstrating one slice of functionality, requisitions, based on an all-new micro-service architecture. Further features will be added to the system as we work towards the 3.0 release.
New Architecture and Build Environment
OpenLMIS 3.0 is built with an all-new architecture that better supports customizations and extensions. The goal is to enable different OpenLMIS implementations in different countries while still sharing one global, open source codebase.3.0 Beta may look similar to version 2, but under the hood the architecture and technology are a leap forward. Developers interested in following along in our progress are welcome to visit our Developer Documentation Guide and attend our Technical Committee calls.
Micro-services
OpenLMIS used to be one monolithic system, and it is now split into independent services that provide RESTful APIs for different functional areas. 3.0 Beta already provides services for Requisition, Reference data, Notifications, and Auth, which is powered by OAuth 2. The services find each other using Service Discovery, powered by Consul.
Each service has its own API with a RAML specification and automatically-generated online API documentation: http://openlmis.readthedocs.io/en/latest/api/
The database storage for each service is separated into its own schema with its own ERD diagram automatically generated: http://openlmis.readthedocs.io/en/latest/erd/ (drill in to see any Live ERD)
All the services are bundled together in a distribution code-named 'Blue', which includes: all back-end APIs; an AngularJS web application providing the front-end UI; and an NGINX proxy to make it simple to route to all the services via one URL.The new micro-services architecture of OpenLMIS 3 allows individual components to be used, customized or extended in a modular way. Learn more in the wiki (includes architectural diagrams): https://openlmis.atlassian.net/wiki/pages/viewpage.action?pageId=51019809
Docker Containers
Version 3 of OpenLMIS is built with containers and ready for the cloud. Each service runs in its own Docker container, and Docker Compose ties multiple services together with other third-party components like Consul and NGINX. Every OpenLMIS 3 service and the Reference UI are published to Docker Hub as a deployable image. The 'Blue' distribution uses Docker Compose to allow you to swap in or out components and run an entire OpenLMIS system. Containerization makes it easier for developers to get involved in OpenLMIS and makes deployments to production more predictable and repeatable.
Extensibility
Two approaches to extensibility are supported along with examples and documentation: First, Extension Points are built into services in areas where we expect extension and customization will be needed. Second, individual micro-services could be added in or swapped out in order to provide a new or altered area of functionality. The team has built working examples and documentation of each, and will continue to include extension points into areas of functionality as they are built. To learn more about the OpenLMIS 3.0 extension architecture and use cases, see: https://openlmis.atlassian.net/wiki/x/IYAKAw
For an example extension point and documentation, see: https://github.com/OpenLMIS/openlmis-example#extension-points-and-extension-modules
OAuth 2 Compatibility
OpenLMIS 3.0.0-Beta implements OAuth so that the product can easily integrate with other systems in a single sign-on environment.
Automated Testing
In a micro-service world, automated testing is even more important. OpenLMIS 3.0 Beta includes new patterns and tools for automated test coverage at all levels. Unit tests continue to be the foundation of our automated testing strategy, as they were in previous versions of OpenLMIS. But 3.0 Beta introduces a new focus on integration tests, component tests, and contract tests (using Cucumber).Test coverage for unit and integration tests is being tracked automatically using Sonar (see http://sonar.openlmis.org). Check the status of test coverage at: http://sonar.openlmis.org/
CI/CD Pipelines
Continuous Integration and Deployment have also seen significant investment in 3.0 Beta. Jenkins is used to automate builds and deployments trigged by code commits. The CI/CD process includes running automated tests, generating ERDs, publishing to Docker Hub, deploying to Test and UAT servers, and more. Furthermore, documentation of these build pipeline allows any OpenLMIS implementation to close this configuration and employ CI/CD best practices. See the status of all builds online: http://build.openlmis.org/
Learn more about OpenLMIS CI/CD on the wiki: https://openlmis.atlassian.net/wiki/pages/viewpage.action?pageId=87195734
Reference User Interface
The reference UI is one single-page application built with AngularJS, and it is structured to allow extension and customization. The router allows areas of functionality to be added or removed and the menu dynamically includes them.
Updated Product Model
The new product model incorporates lessons learned from previous versions of OpenLMIS in the area of stock management and local fulfillment. It also uses the GS1 logical model and implements supply chain best practices (such as support for lots, packaging, GTINs, etc). Read more and see diagrams of the new Product Model on the wiki: Medical Commodities: OpenLMIS Model for GS1
And More
We've also invested in other areas of the platform that are important for OpenLMIS to be a trusted, global platform: security, localization, and over 240 JIRA tickets in total. Follow along in JIRA: (https://openlmis.atlassian.net/projects/OLMIS/issues/OLMIS-400?filter=allopenissues) ...or get involved in the committees or on the developer email list (see http://openlmis.org/openlmis-community/).
UI Functionality within Requisitions
The 3.0.0-beta release demonstrates the fundamentals of the system's ability to support various levels of configuration with users, products, programs, facilities, geographic levels/zones, and more. Within the new reference User Interface, you can log in as an administrator and step through the main process flow for requesting products, within a program, and moving that requisition to approval.
As a “administrator” user, I will be able to:
- Login and logout
- Initiate a regular requisition and be able to select a program, type (regular) and current processing period.
- Populate a requisition form (create requisition view) based on a template. Some basic data entry validations implemented. The form includes, header, list of products, seve columns from the requisition template.
- Beginning Balance
- Total Received Quantity
- Total Losses / Adjustments
- Total Consumed Quantity (default user input, but can also be calculated)
- Stock on Hand (calculated)
- Requested Quantity
- Requested Quantity Explanation
- Delete a requisition
- Save a requisition
- Submit a requisition
- Authorize a requisition
- View of list of requisitions waiting for approval
- Approve a requisition
- The approval form includes, two columns from the template (Approved Quantity and Remarks)
- Reject a requisition
Implemented and Available via API
In addition to features available within the UI, there are also features implemented and available via API endpoints. For the entire list of current APIs, please visit: http://openlmis.readthedocs.io/en/latest/api/index.html
- Convert approved requisitions to orders
- View orders
- Generate an order file based on an order template
- Reset password functionality
- Create, read, update delete reference data
- Requisition groups
- Schedules/periods
- Supervisory nodes
- Supply lines
- Products (Medical Commodities: OpenLMIS Model for GS1)
- Users
- Geographic zones and levels
Tickets Completed in 3.0.0-beta
Issue Type | Epic | Key | Summary |
---|---|---|---|
Story | CI/CD | OLMIS-995 | Organize jobs, pipelines and monitors |
Story | CI/CD | OLMIS-994 | Configure deployment environments, create deployment scripts and jobs |
Story | CI/CD | OLMIS-993 | Reorganize/cleanup Jenkins jobs |
Task | CI/CD | OLMIS-955 | Create CI/CD Technical Specification |
Task | CI/CD | OLMIS-954 | Analysis of Current Build Tools, Processes and Flows |
Story | CI/CD | OLMIS-860 | Create an automation testing workflow and lay a foundation for it (contract tests in CI) |
Story | CI/CD | OLMIS-858 | CI server space, memory running low |
Story | Configuration | OLMIS-871 | Create an email notification service |
Story | Configuration | OLMIS-730 | Reference Data should be Immutable |
Story | Configuration | OLMIS-700 | Identify facilities that do not have access to OpenLMIS |
Story | Configuration | OLMIS-602 | Seed Reference Data service |
Story | Configuration | OLMIS-429 | Facility approved products |
Story | Configuration | OLMIS-428 | Supply Lines |
Story | Configuration | OLMIS-427 | Supervisory groups |
Story | Configuration | OLMIS-425 | Geographic zones |
Story | Configuration | OLMIS-424 | Supervisory nodes |
Story | Configuration | OLMIS-423 | Users |
Story | Configuration | OLMIS-420 | Basic Rights and Roles API |
Story | Configuration | OLMIS-415 | Create a Facility |
Story | Configuration | OLMIS-387 | Create a Program |
Story | Contract tests | OLMIS-1111 | Contract test for initiate a Requisition |
Story | Contract tests | OLMIS-1097 | Contract test for create Facility Type |
Task | GS1 Support | OLMIS-666 | Define GS1 Requirements for Product Data Model |
Task | Modular Architecture and Extension Framework | OLMIS-1057 | Set up compose files to allow running singular services properly within our platform |
Story | Modular Architecture and Extension Framework | OLMIS-1055 | Refactor code in Services so they do not call each other directly |
Task | Modular Architecture and Extension Framework | OLMIS-1052 | Refactor ITs that require external APIs to work |
Task | Modular Architecture and Extension Framework | OLMIS-1044 | Set up initial service discovery, and hook things up at openlmis-blue |
Story | Modular Architecture and Extension Framework | OLMIS-911 | Create UML for all of reference data & remove SDR |
Story | Modular Architecture and Extension Framework | OLMIS-872 | Fix search endpoints to use query parameters |
Story | Modular Architecture and Extension Framework | OLMIS-864 | Implement Product Model |
Story | Modular Architecture and Extension Framework | OLMIS-862 | Revise relation annotations between models |
Story | Modular Architecture and Extension Framework | OLMIS-849 | Spike: what can OpenLMIS use from MOTECH? |
Story | Modular Architecture and Extension Framework | OLMIS-841 | Add Server Service Discovery |
Story | Modular Architecture and Extension Framework | OLMIS-804 | Create design proposal from API spec - Inventory |
Story | Modular Architecture and Extension Framework | OLMIS-803 | Create design proposal from API spec - Orders |
Story | Modular Architecture and Extension Framework | OLMIS-783 | Extension modules - design & example |
Story | Modular Architecture and Extension Framework | OLMIS-766 | Web service specification/documentation |
Story | Modular Architecture and Extension Framework | OLMIS-763 | Reference Data Service |
Story | Modular Architecture and Extension Framework | OLMIS-750 | Add schema to service template and children |
Story | Modular Architecture and Extension Framework | OLMIS-671 | Spike: Investigate use of Swagger for interface definition |
Story | Modular Architecture and Extension Framework | OLMIS-669 | Configure log level for a Docker container |
Story | Modular Architecture and Extension Framework | OLMIS-668 | Spike: Authentication across services |
Story | Modular Architecture and Extension Framework | OLMIS-667 | Add Spring Security to Service Example |
Story | Modular Architecture and Extension Framework | OLMIS-665 | Service Example: add REST controls |
Task | Modular Architecture and Extension Framework | OLMIS-664 | ID strategy? |
Story | Modular Architecture and Extension Framework | OLMIS-663 | Integration testing of Service & DB |
Story | Modular Architecture and Extension Framework | OLMIS-662 | API Data Validation |
Story | Modular Architecture and Extension Framework | OLMIS-596 | Spike: convention for OpenLMIS environment/options |
Story | Modular Architecture and Extension Framework | OLMIS-592 | Establish i18n conventions |
Story | Modular Architecture and Extension Framework | OLMIS-590 | Spike: standardized error handling |
Story | Modular Architecture and Extension Framework | OLMIS-580 | Create Service Template |
Story | Modular Architecture and Extension Framework | OLMIS-546 | Web Security |
Story | Modular Architecture and Extension Framework | OLMIS-795 | Create reference distribution |
Story | Modular Architecture and Extension Framework | OLMIS-726 | Update existing domain objects to use UUID |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1079 | Get Blue in CD pipeline |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1071 | Plan steps to roll the 3.0 Beta release |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1064 | Generate Reference Data ERD |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1053 | Set default mailing properties for notification service |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-1049 | Spec CI/CD that Utilizes AWS Best Practices using Docker |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1042 | Update RAML for Products |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1019 | Re-activate spring security on Reference Data service |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1018 | Re-write de-activated Reference Data integration tests |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1017 | Enable developers to write Component tests |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-977 | Remove Stock and its related code from requisition service |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-968 | Fix table names to conform to the code style guide |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-967 | Change line items from sets to lists |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-963 | Rename *Line classes to *LineItem where it makes sense |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-913 | Design seed data levels |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-896 | Document Testing Strategy |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-895 | Clean up and consolidate readmes |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-893 | Publish ERD as a build artifact |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-873 | Add Swagger for openlmis-auth |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-853 | Build information in every service/distribution |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-851 | Turn checkstyle rule severity to error |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-848 | Sonar: integration tests not included in coverage |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-847 | Demo data |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-846 | Generate static (offline) documentation for services' APIs |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-823 | Publish a complete v3 OpenLMIS deployment to an AWS server |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-822 | Upgrade Jenkins to version 2 |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-802 | Add API guides to style guide |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-796 | Document IDL process for development |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-765 | Integrate Transifex for translations |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-761 | Reverse proxy server deployment (nginx) |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-759 | ERD generation |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-753 | Add PMD ruleset and integrate PMD with the build |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-738 | Specify and implement log format |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-735 | Connect Postgres logs to rsyslog container |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-732 | Sonar: projects for current v3 repositories |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-724 | Install fisheye on CI server |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-722 | Add Google Java checkstyle to service template and children |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-673 | Publish documentation |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-672 | Install ci-game on Jenkins |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-657 | Service template: connect JDK debug |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-656 | Docker Dev: hand db connection credentials to container |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-652 | Evaluate and select code review tool |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-651 | Jenkins: build jobs for current v3 repositories |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-598 | Unit test framework setup/exemplar |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-591 | RESTful web service testing setup |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-582 | Java development environment in Docker |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-191 | Jenkins: enable more than one executor |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-1143 | Trial load of demo data into UAT and Test environments |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-1093 | Revise the demo data for publishing the 3.0 Beta |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-1076 | Choose and document browsers/devices and languages for QA testing |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-840 | Publish requisition and auth services to dockerhub |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-835 | Design Reviews - Sprint 4 |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-806 | Improve IDL Related Functionality |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-797 | Design Reviews |
Task | OpenLMIS Dev and Build infrastructure | OLMIS-723 | Increase disk space on CI server |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-676 | Research and recommend centralized logging approach |
Story | OpenLMIS Dev and Build infrastructure | OLMIS-555 | Multi_language Support |
Task | Order Export | OLMIS-1047 | Refactor configuration of order file template |
Story | Order Export | OLMIS-988 | View list of approved requisitions ready for order conversion |
Story | Order Export | OLMIS-965 | Configure order file template |
Story | Order Export | OLMIS-401 | Configure Order Number for Export |
Story | Order Export | OLMIS-227 | Assign supplying depot to requisitions for "Convert to Order" |
Story | Orders (Local Fill) | OLMIS-641 | Ability to View Orders via endpoints |
Story | Orders (Local Fill) | OLMIS-240 | Change order status to shipped via endpoints |
Task | Orders (PoD) | OLMIS-1006 | PoD improvements: add ability to download, refactor behavior, add messages |
Story | Orders (PoD) | OLMIS-861 | PoD customer configuration |
Story | Orders (PoD) | OLMIS-805 | Ability to download a CSV file of the order |
Story | Orders (PoD) | OLMIS-675 | Spike: draft schema and API for Products |
Story | Orders (PoD) | OLMIS-660 | Add Line Items to an existing Order |
Story | Orders (PoD) | OLMIS-637 | Print Proof of Deliver (POD) |
Story | Orders (PoD) | OLMIS-618 | Order creation (for Products) |
Story | Orders (PoD) | OLMIS-605 | View Approved Orders |
Task | Reference UI Module | OLMIS-1173 | Fix home page layout |
Story | Reference UI Module | OLMIS-1150 | Title heading standarization. |
Story | Reference UI Module | OLMIS-1149 | Application border |
Story | Reference UI Module | OLMIS-1128 | 404 page is shown when link (or content) not found |
Story | Reference UI Module | OLMIS-1046 | Create a production docker image for requisition-refUI |
Story | Reference UI Module | OLMIS-1045 | Development and production server loads single index.html page |
Story | Reference UI Module | OLMIS-1040 | User's authentication is checked on page load |
Story | Reference UI Module | OLMIS-1030 | Build process to compile and compress JS/CSS |
Story | Reference UI Module | OLMIS-1029 | Add Bower for front-end library management |
Story | Reference UI Module | OLMIS-925 | User authenticates using Auth Service (OAuth) in Requisition-UI |
Story | Reference UI Module | OLMIS-859 | Describe forms in OpenLMIS |
Story | Reference UI Module | OLMIS-793 | Create Living Styleguide for Reference UI (aka Component-based Development) |
Story | Reference UI Module | OLMIS-1033 | Configurable top nav area |
Story | Requisition - Approval(s) | OLMIS-226 | Convert approved requisition to orders |
Story | Requisition - Approval(s) | OLMIS-224 | Reject an R&R |
Story | Requisition - Approval(s) | OLMIS-223 | Review and approve submitted requisitions |
Story | Requisition - Authorization(s) | OLMIS-642 | Authorize a requisition |
Story | Requisition - Authorization(s) | OLMIS-229 | View requisitions based on selected facility, program, and date filters |
Task | Requisition - Configuration | OLMIS-998 | Add template fields from v2 to the requisition template |
Story | Requisition - Configuration | OLMIS-875 | Requisition group members |
Story | Requisition - Configuration | OLMIS-874 | Requisition Group |
Story | Requisition - Configuration | OLMIS-868 | Configure Approved Quantity |
Story | Requisition - Configuration | OLMIS-838 | Configure Stock on Hand |
Story | Requisition - Configuration | OLMIS-836 | Revisit existing API in requisitions and add missing RAML |
Story | Requisition - Configuration | OLMIS-821 | Configure 'Requested Quantity Explanation' attribute |
Story | Requisition - Configuration | OLMIS-820 | Configure 'Requested Quantity' attribute |
Story | Requisition - Configuration | OLMIS-817 | Rename column headers/attributes |
Story | Requisition - Configuration | OLMIS-816 | Configure Remarks |
Story | Requisition - Configuration | OLMIS-815 | Configure Total Losses / Adjustments in Requisition Template |
Story | Requisition - Configuration | OLMIS-814 | Configure Total Consumed Quantity |
Story | Requisition - Configuration | OLMIS-813 | Configure Total Received Quantity attribute |
Story | Requisition - Configuration | OLMIS-812 | Configure Beginning Balance attribute |
Story | Requisition - Configuration | OLMIS-811 | Require display of the product attribute |
Story | Requisition - Configuration | OLMIS-810 | Configure product code attribute |
Story | Requisition - Configuration | OLMIS-786 | Display/Hide columns attributes on the requisition form |
Story | Requisition - Configuration | OLMIS-774 | Configure 'skip a period' feature |
Story | Requisition - Configuration | OLMIS-755 | Define periods within a schedule |
Story | Requisition - Configuration | OLMIS-537 | Enable customizations with with extension points |
Story | Requisition - Configuration | OLMIS-422 | Create and edit a schedule |
Story | Requisition - Configuration | OLMIS-388 | Define the display order of columns to appear in the requisition |
Story | Requisition - Configuration | OLMIS-386 | Create a requisition template for a program |
Story | Requisition - Configuration | OLMIS-381 | Configure Stock Adjustment Reason by Program |
Story | Requisition - Configuration | OLMIS-214 | Define Non-Full Supply (/Additional drugs and Medical Supplies) attributes |
Story | Requisition - Creation | OLMIS-997 | Associate non-emergency requisitions with the proper period |
Task | Requisition - Creation | OLMIS-990 | Simplify the requisition submit, authorize & update APIs |
Story | Requisition - Creation | OLMIS-916 | Activity diagrams (from v2) for requisitions |
Task | Requisition - Creation | OLMIS-807 | Submit requisition only if quantity entered |
Story | Requisition - Creation | OLMIS-770 | Save a requisition |
Story | Requisition - Creation | OLMIS-760 | Create a basic requisition |
Story | Requisition - Creation | OLMIS-741 | Create a simple requisition with additional stock information |
Story | Requisition - Creation | OLMIS-655 | Create the Requisition Service |
Story | Requisition - Creation | OLMIS-219 | Deleting a requisition/R&R |
Story | Requisition - Creation | OLMIS-380 | Apply Adjustment Reason to Adjustment quantity |
Story | Requisition UI | OLMIS-1163 | Button consistency |
Story | Requisition UI | OLMIS-1140 | Create regular requisition for period from Initialize Requisition screen |
Story | Requisition UI | OLMIS-1127 | Product grid is editable |
Story | Requisition UI | OLMIS-1126 | Submit a requisition |
Story | Requisition UI | OLMIS-1125 | Product grid auto-calculates inventory fields |
Story | Requisition UI | OLMIS-1103 | Create read-only product grid for requisition |
Story | Requisition UI | OLMIS-1075 | Show approval columns on product grid |
Story | Requisition UI | OLMIS-1060 | Approve/Reject a requisition |
Story | Requisition UI | OLMIS-1059 | Save a requisition |
Story | Requisition UI | OLMIS-1058 | Delete a requistion |
Story | Requisition UI | OLMIS-1051 | Create page state to view Requisition |
Story | Requisition UI | OLMIS-1043 | Approve requisition list |
Story | Requisition UI | OLMIS-1005 | Authorize a requisition |
Story | Requisition UI | OLMIS-1004 | UI: Initiate a requisition for "My Facilities" |
Task | Requisition UI | OLMIS-927 | Catalog Existing OpenLMISv2 Requisitions-UI API Calls |
Story | Requisition UI | OLMIS-922 | Create Requisition-UI Repository and Build Process |
Story | Requisition UI | OLMIS-818 | Full Supply Data validation in the product grid |
Task | Requisition UI | OLMIS-1229 | Respect isDisplayed from the requisition template on the UI |
Story | Requisition UI | OLMIS-1068 | Stock adjustment modal window |
Story | User Authentication and Password Management | OLMIS-906 | Password email notification |
Story | User Authentication and Password Management | OLMIS-589 | Session expiration |
Story | User Authentication and Password Management | OLMIS-588 | Forgot Password |
Story | User Authentication and Password Management | OLMIS-587 | Password Reset |
Story | User Authentication and Password Management | OLMIS-586 | Restrict access to only authenticated users via password |
Story | User Authentication and Password Management | OLMIS-496 | Logout |
Story | User Permissions | OLMIS-884 | Manage the user profile |
Story | User Permissions | OLMIS-883 | Permission Check Tool |
Story | User Permissions | OLMIS-867 | Assign roles to a user record for requisitions |
Story | User Permissions | OLMIS-545 | Role-Based Access Control (RBAC) for Admin/Requisitions/Fulfillment |
Table of Contents
OpenLMIS: the global initiative for powerful LMIS software