Software design
ENICS SDD
last modified by Grace Odah
on 2020/11/27 15:57
SDD - ENICS SDD
Table of Contents
Overview .................................................................................................................................................................................. 3
Deployment Architecture ........................................................................................................................................................ 3
Diagram ................................................................................................................................................................................. 5
Description ............................................................................................................................................................................ 5
Software Architecture ............................................................................................................................................................. 7
Diagram ................................................................................................................................................................................. 7
Description ............................................................................................................................................................................ 7
Domain Concepts ................................................................................................................................................................... 9
How to Modify ......................................................................................................................................................................... 9
Product Roadmap ................................................................................................................................................................... 9
FAQ ........................................................................................................................................................................................ 10
Page 2 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD
Contents
• Overview
• Deployment Architecture
• Diagram
• Description
• Software Architecture
• Diagram
• Description
• Domain Concepts
• How to Modify
• Product Roadmap
• FAQ
Overview
About
The Enugu State Internally Generated Revenue Central System (ENICS) is an enterprise solution for the Enugu
State Internal Revenue Service that was implemented to boost internally generated revenue and collection.
Problem definition
Enugu State Internal Revenue Service, being one of the major funding arms of the Government, has taken on the
challenge of increasing the IGR of the State through the adoption and implementation of various strategies which
have impacted positively on revenue generation and collection.
With the intelligent combination of technology and process, the Enugu State Internally Generated Revenue
Central System (ENICS) solution was implemented to boost internally generated revenue and collection.
Objectives of ENICS
The objective of the ENICS is to carry out the following functions and services:-.
Effective tracking, monitoring, and accounting of IGR collections.
Helps Identify who pays what in real-time and allows for reconciliation.
To track payments made for any revenue source.
Reduces revenue loss.
Effective tracking of assessments and compliance.
Eases taxpayer registrations ESBN issuance process.
Eliminates double taxation
Eliminates illegal collections and extortion
Taxpayers can register or do a lookup for their ESBN from a mobile application.
Identifies and blocks revenue loopholes.
Helps the state identify needs area of the state and act according
Enhances data gathering and storing for policy and decisions making
Confirmation of taxpayers Enugu State Social Benefit Numbers (ESBN), Assessments / Demand Notices
(EPRR), Payment Receipts, Tax Clearance Certificate (TCC)
14. Provide a location for revenue collection banks and tax offices.
Deployment Architecture
The ENICS production URL is https://irs.en.gov.ng/
The ENICS staging URL is https://enicsstaging.byteworks.com.ng/
The EPLUC URL is https://epluc.ng/
Page 3 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD
The Enugu IDMS URL is http://esbnidms.byteworks.com.ng/
Repositories
The table below describes the repository information for ENICS
NOTE: Development branch is the branch a developer is to check out from. This is the default branch that a
developer will need to create a feature branch from for updates to the repository.
REPOSITORY
enics-web
REPOSITORY URL
https://bitbucket.org/byteworksng/enics-web
ics-data-table
https://bitbucket.org/byteworksng/ics-data-table
DESCRIPTION
This repository houses the core functions of ENICS, whic
assessment, MDA module, Annual returns filing, etc.
Language: JAVA, AngularJs, jQuery. Supporting Fram
This repository houses some of the table data search fun
taxpayer search.
Language: JAVA
Supporting Framework: Ninja.
This houses the payment endpoints for ics-base. Langua
ics-core-api
https://bitbucket.org/byteworksng/ics-core-api
ics-document-api
https://bitbucket.org/byteworksng/ics-document-api
Supporting Framework: Spring
This repository houses some of the reporting api (and rep
Language: JAVA
ics-task-api
https://bitbucket.org/byteworksng/ics-task-api
Supporting Framework: Ninja.
This repository houses the cron jobs that ENICS uses for
updates, e.g. syncing updated properties from EPLUC to
Language: JAVA
bw-payment-api
https://bitbucket.org/byteworksng/bw-payment-api
Supporting Framework: Ninja.
This repository houses most of the payment integration fo
systems including ENICS.
Language: JAVA
epluc-web
https://bitbucket.org/byteworksng/epluc-web
Supporting Framework: Ninja.
This repository for property and land use charge.
Language: JAVA
epluc-mobile
https://bitbucket.org/byteworksng/epluc-mobile
Supporting Framework: Ninja.
This repository for mobile property and land use charge.
Language: JAVA
ics2-dsl
https://bitbucket.org/byteworksng/ics2-dsl
business-enumeration-android https://bitbucket.org/byteworksng/business-enumerationandroid
biometric-enumeration-api-v2
https://bitbucket.org/byteworksng/biometric-enumerationapi-v2
Supporting Framework: Android.
This is the model entity repository for ics2.
Supporting frameworks: Andromeda, hibernate, query
This is the repository for android business enumeration.
Language: JAVA
Supporting Framework: Android.
This is the repository for the api that handles deduplicatio
Language: JAVA
Supporting Framework: spring boot.
Database in Use
Name: Postgresql; Version: 9.5
SSL Providers
Page 4 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD
SYSTEM
ENICS
EPLUC
ENICS staging
URL
https://irs.en.gov.ng/
https://epluc.ng/
https://enicsstaging.byteworks.com.ng/
SSL PROVIDER
RapidSSL TLS DV RSA
RapidSSL RSA CA 2018
Let’s Encrypt Authority X
Diagram
Description
The ENICS deployment architecture has different servers:
The first server contains the following services, these services are listed below with their individual functions:
• ENICS: This is a service that handles the core functions of ENICS, which includes PAYE assessment, MDA
module, Annual returns filing, etc.
• ENICS BW Payment: This takes care of backend requests that involve payments, this handles MDA and IGR
payments.
• ICS Core: This houses all ICS2 core services which include assessments, annual returns, MDA module
• ICS Jobs: This service handles all cron jobs that ENICS uses for syncing and updates.
• ICS Data: This service handles all taxpayer search.
• Enumeration API: This service handles all property enumerations and tagging.
This server has its own database, it also communicates and makes a call with PayDirect to get payment
notifications.
Page 5 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD
The second server is the IDMS. This server communicates and exchanges information with the first server. This
IDMS server has its database and is made up of an IDMS service that handles all Identity management functions,
deduplication, adjudication.
There is also a communication between the ENICS server and the file server. The file server is a different server
that is made up of a service that handles all data and files, It has its own database which is MongoDB.
The deployment also contains an EPLUC server that communicates and exchanges information with the ENICS
server. This server is made up of the EPLUC (service that handles all property and land use charges) and EPLUC
BW Payment (takes care of requests that involve payments, it handles PLUC payments). This server has its own
database.
How the eTax Application works with ENICS
The eTax application includes 2 major processes:
• Registration
• Lookup
This application will allow a taxpayer to register or do a lookup for their ESBN from a mobile application.
Registration: A taxpayer enters registration details, a deduplication search process is performed on existing
taxpayers' records.
If there is a match that the taxpayer exists, the ecard details (name and ESBN) are returned. If no match, an ESBN
is generated for the taxpayer, and the ecard details are returned.
The eCard with taxpayer details is displayed.
Lookup: taxpayer enters last name and date of birth, the details are matched against existing taxpayer records.
If there is a match that the taxpayer exists, the ecard details (name and ESBN) is returned.
If no match, an error code and message is returned, the taxpayer can now perform registration, the eCard with
taxpayer details including their ESBN is displayed after completion of registration.
How IDMS works with ENICS
A user's biometric (fingerprint) is captured with the IDMS application, this is sent to the IDMS backend which
processes and forwards the captured biometric to AFIS.
If a match is found, this is flagged as a duplicate and the admin user has to validate and resolve deduplication.
If no match is found, this is sent to ICS to generate a TIN for the user.
How epluc.ng works with ENICS
Epluc service handles all property and land use charges. Taxpayer property details are captured using the
enumeration app. Property details gotten from the app are sent to PLUC when details are saved. This is now
automatically synced to ICS and captured details can be viewed and seen on ICS.
Configuration
IP ADDRESS
SERVICE
VERSION
VM OS
-
Enugu ICS Tomcat
8.5
CentOS 7
-
PostgreSQL database server
9.5
CentOS 7
-
EPLUC Tomcat
8.5
CentOS 7
-
EPLUC PostgreSQL database 9.5
server
CentOS 7
-
IDMS Tomcat
8.5
CentOS 7
-
IDMS PostgreSQL database
server
9.5
CentOS 7
Page 6 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD-
File server Tomcat
8.5
CentOS 7
-
File PostgreSQL database
server
9.5
CentOS 7
Software Architecture
Diagram
Description
ENICS: This is a service that handles the core functions of ENICS, which includes PAYE assessment,
MDA module, Annual returns filing, etc.
ENICS BW Payment: This takes care of backend requests that involve payments, this handles MDA
and IGR payments.
ICS CORE: This houses all ICS2 core services which include assessments, annual returns, MDA
module.
ICS JOBS: This service handles all cron jobs that ENICS uses for syncing and updates.
Page 7 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD
ICS DATA: This service handles all taxpayer search.
ENUMERATION API: This service handles all property enumerations and tagging.
EPLUC BW PAYMENT: This takes care of backend requests that involve payments, this handles
PLUC payments.
IDMS: This service handles all Identity management functions, deduplication, adjudication.
FILE SERVER: This is a service that handles all data and files.
How to Set up and access ENICS and its components
As a new developer, to access the ENICS components and set up the codebase, the steps below will serve as
a guide:
For Backend (Api)
Language: JAVA 1.8
Framework: springboot
Database: Postgres (9.5 preferably)
Dependency manager: Gradle (5.2.1 preferably)
IDE: IntelliJ (preferably)
Steps:
• Download IntelliJ IDEA (preferable IDE) (see link here) or any IDE of your choice. Set it up on your machine (if
you don't already have it set up)
• Download Postgres 9.5 (pgadmin 3) - (https://www.enterprisedb.com/downloads/postgres-postgresqldownloads) and set it up on your machine (if you don't already have it set up)
• Download Gradle 6.x (https://gradle.org/install/) and set it up on your machine (if you don't already have it set
up)
• Download JDK 1.8 (Java) (https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html)
and set it up on your machine (if you don't already have it set up)
• Request for repo access by sending a mail to the CTO copying the team lead requesting access to the
following repositories:
• https://bitbucket.org/byteworksng/enics-web
• https://bitbucket.org/byteworksng/ics-data-table
• Import project as a gradle project.
• Install dependencies and build project { Enter this command on the IDE: gradle clean build}
• Create a database with the default configurations shown below or any config of your choice.*
Database name
Database user
Database password
IntelliJ environment variables [values or screenshot]
• you can set the variables to suit your choice
NB: make sure the database user can log in and owns the database created.
• Run the application (with intelliJ preferably)
Email Domain
Email was provided as a value-added service for Enugu IRS employees on the domain @irs.en.gov.ng using
Gmail google workspace as its email provider.
Page 8 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD
Domain Concepts
ICS: Internally Generated Revenue Central System
ENICS: Enugu State Internally Generated Revenue Central System
EPLUC: Enugu Property and Land use charge - this is a charge imposed on property owners
ESBN: ESBN stands for Enugu State Social Benefit Number. It is an electronic number that uniquely identifies a
taxpayer (Individual/Corporate) to the Enugu State Government and the Enugu State Internal Revenue Service.
EPRR: EPRR stands for Enugu State Payment Retrieval Reference (EPRR). It is a unique ID generated from
the Enugu ITMS for making payments. It is used to track payments and ensure that your payments are properly
recorded.
PAYE: PAYE stands for Pay As You Earn (PAYE) - this is a method of paying income tax and national insurance
contributions. An employer deducts tax and national insurance contributions from employee wages or occupational
pension before paying their wages or pension.
ETCC: ETCC stands for Electronic Tax Clearance Certificate - this certificate is generated for Taxpayers after
they have been able to prove that they have cleared all taxes due for the year.
MDA: Ministries Departments and Agencies.
COLLECTION: Collection is the payment of generated bills on ICS made through the integrated payment
provider.
DEDUPLICATION: This is the process of eliminating duplicate or redundant data.
ASSESSMENT: This is the act of deciding an amount that should be paid by an individual.
ADJUDICATION: This is the process of resolving deduplication.
How to Modify
To modify a codebase, the steps below should be followed and this should be applied based on the codebase.
• Checkout the codebase to be modified. E.g checkout enics-web codebase
• Look out for the README file. This file details instructions on how to set up the codebase. Follow the
instructions in the README
• Make the required change.
• Send a Pull Request, as described in the README file.
Note that every codebase has a README file that applies to the specific codebase.
Product Roadmap
Page 9 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD
FAQ
What is the ENICS project about?
The Enugu State Internally Generated Revenue Central System (ENICS) is an independent web-based software
solution for the Enugu State Internal Revenue Service, which is implemented to boost internally generated revenue
and collection.
What codebases do I need to run the ENICS project?
• enics-web
• ics-data-table
What branch do I check out from as a developer?
Dev branch is the branch a developer is to check out from.
What database does the ENICS project run?
It runs on Postgresql version 9.5 and on SQL Server version 2018.
How do I access the ENICS codebase?
As a new developer, to access the ENICS components:
1. Send a mail to the CTO copying the team lead requesting access to the following repositories:
1. https://bitbucket.org/byteworksng/enics-web
2. https://bitbucket.org/byteworksng/ics-data-table
1. Once access is provided, you can now clone the repositories and set up the codebases.
Key Contact information
Page 10 / 11 - last modified by Grace Odah on 2020/11/27 15:57
SDD - ENICS SDD
To get more clarification and information, kindly send a mail to any of the following contacts:
Joseph Gibah:-Nathaniel Edeki:-Ngozi Ofoefule:-Neme Iloeje :-Ezeukwu Osuagwu:-
Page 11 / 11 - last modified by Grace Odah on 2020/11/27 15:57