The following subjects are relevant to the PIMS solution. The ability to support PIMS will require a broad understanding of many subjects, but only senior level understanding on a few. The difficulty column expresses the level of effort, experience, and skill necessary to support PIMS in a generic way. While the list is attempting to be exhaustive, many subjects will not change or require any support for the foreseeable future (i.e. Dependency Injection or DI is only relevant when writing unit tests for the backend). Many subjects are related to multiple milestones (see Transition Roadmap), which indicates a certain level of knowledge and exposure to them before the milestone can be completed.
Subject |
Domain |
Description |
Difficulty |
Inventory |
Policy |
Submitting and maintaining property information. |
Junior |
SPP |
Policy |
Surplus Property Program business process – Disposing properties in inventory. |
Intermediate |
ERP |
Policy |
Enhanced Referral Process – properties available for internal transfer. |
Senior |
SPL |
Policy |
Surplus Properties List – properties being externally sold. |
Intermediate |
First Nation Consultation |
Policy |
First Nation consultation process in relation to SPP. |
Senior |
Subject |
Domain |
Description |
Difficulty |
Agile |
Project Management |
Project Management process |
NA |
Scrum |
Project Management |
Agile framework for development and delivering |
NA |
Daily Scrum |
Project Management |
Scrum daily ceremony |
NA |
Sprint Review |
Project Management |
Scrum sprint conclusion ceremony |
NA |
Sprint Retrospective |
Project Management |
Scrum sprint conclusion ceremony |
NA |
Backlog Refinement |
Project Management |
Agile activity of ensuring stories are ready for development |
NA |
Jira |
Project Management |
3rd party project management tool |
NA |
Getting access to the various environments, services, tools that are required to develop and support PIMS.
Subject |
Domain |
Description |
Difficulty |
GitHub |
Source Control, DevOps |
Repository hosting services |
Junior |
OpenShift |
Infrastructure |
Container orchestration |
Intermediate |
Keycloak |
Integration, Identity |
3rd party solution to manage authentication and authorization |
Junior |
Rocket.Chat |
Tool |
Exchange Lab communication tool |
Junior |
DEV |
Environment |
OpenShift environment for QA |
Junior |
TEST |
Environment |
OpenShift environment for UAT |
Junior |
PROD |
Environment |
OpenShift environment for production |
Junior |
Install the required tools, software and configure developer environments to support development. While a developer will for the most part only need to follow the setup documentation, it requires a greater depth of understanding of how everything works together.
Subject |
Domain |
Description |
Difficulty |
Docker |
Development, Infrastructure |
Containerized architecture |
Intermediate |
Docker Compose |
Development, Infrastructure |
Tool to control containers locally |
Intermediate |
Keycloak |
Integration, Identity |
3rd party solution to manage authentication and authorization |
Intermediate |
Oauth |
Security |
Open standard for access delegation |
Senior |
Open ID Connect |
Security |
Simple identity layer |
Intermediate |
Git |
Source Control |
Versioned source code - fetch, pull, push, rebase |
Intermediate |
Pull Requests |
Source Control, DevOps |
Code review |
Intermediate |
GitHub |
Source Control, DevOps |
Repository management service |
Intermediate |
Configuration |
Development |
Environmental abstraction |
Intermediate |
SQL Server |
Development, Infrastructure |
Database |
Intermediate |
Bash |
Development |
Tooling development language |
Junior |
Linting |
Development |
Development standards enforcement |
Junior |
Unit Testing |
Testing |
Automated testing of code |
Intermediate |
Code Coverage |
Testing |
Unit testing coverage reports |
Intermediate |
VS Code |
Development |
Development tool |
Junior |
Visual Studio |
Development |
Development tool |
Junior |
Supporting PIMS requires an understanding of the different parts, components, integrations, tools, architecture, and processes.
Subject |
Domain |
Description |
Difficulty |
Inventory |
Business |
Submitting and maintaining property information. |
Junior |
SPP |
Business |
Surplus Property Program business process – Disposing properties in inventory. |
Intermediate |
ERP |
Business |
Enhanced Referral Process – properties available for internal transfer. |
Senior |
SPL |
Business |
Surplus Properties List – properties being externally sold. |
Intermediate |
Database |
Container |
SQL Server on a Linux container provides the central data-source for PIMS. |
Intermediate |
DAL |
Development |
Data access layer used for all communication with the database and 3rd party tools within the API. |
Senior |
API |
Container |
RESTful HTTP endpoints. |
Intermediate |
Application |
Container |
Web application to support UX/UI. |
Intermediate |
Leaflet |
Integration, GIS |
3rd party tool to present GIS. |
Junior |
Light Workflow Engine |
Development |
Data structure and logic to support project workflow rules and status. |
Intermediate |
Notifications |
Integration, Development |
3rd party integration with CHES to send email based on Light Workflow Engine. |
Intermediate |
Roles |
Development, Security |
Claim based identity authorization. |
Intermediate |
Keycloak |
Container |
3rd party tool and service to authenticate and authorize. |
Senior |
Stakeholders |
Business |
Key resources who use PIMS. N/A |
|
There are two primary development layers within PIMS, the frontend and the backend. The frontend is a React web application that supports the UX/UI. The majority of the GIS components are hosted within the frontend.
Subject |
Domain |
Description |
Difficulty |
Docker |
Development, Infrastructure |
Containerized architecture |
Intermediate |
Docker Compose |
Development, Infrastructure |
Tool to control containers locally |
Intermediate |
Bash |
Development |
Tooling development language |
Junior |
Keycloak |
Integration, Identity |
3rd party solution to manage authentication and authorization |
Intermediate |
Oauth |
Security |
Open standard for access delegation |
Junior |
API |
Architecture |
RESTful, microservice |
Intermediate |
Configuration |
Development |
Environmental abstraction |
Intermediate |
React |
Development |
Frontend JavaScript library for UI |
Intermediate |
Redux |
Development |
Frontend JavaScript library for state management |
Intermediate |
Formik |
Development |
Frontend JavaScript library for forms |
Intermediate |
Styled Components |
Development |
Frontend JavaScript library for UI |
Junior |
JavaScript |
Development |
Frontend development language |
Intermediate |
Typescript |
Development |
Frontend development language |
Intermediate |
AJAX |
Development |
Frontend communication layer |
Intermediate |
CSS |
Development, UI |
Frontend UI syntax |
Junior |
SASS |
Development, UI |
Frontend dynamic CSS |
Junior |
Node |
Development |
Building tools for JavaScript |
Junior |
NPM |
Development |
Node Package Manager tool for development |
Intermediate |
VS Code |
Development |
Development tool |
Intermediate |
Linting |
Development |
Development standards enforcement |
Junior |
GIS |
GIS |
Geographical Information System mapping |
Intermediate |
WMS |
GIS |
Web Map Service standard protocol |
Junior |
WFS |
GIS |
Web Feature Service standard protocol |
Junior |
Leaflet |
ntegration, GIS |
Frontend 3rd party library for GIS |
Junior |
Unit Testing |
Testing |
Automated testing of code |
Intermediate |
BrowserStack |
Testing |
3rd party automated integration testing tool |
Junior |
The backend components of PIMS are composed of the API, DAL, Database, Keycloak, and various integration with 3rd party tools.
Subject |
Domain |
Description |
Difficulty |
Docker |
Development, Infrastructure |
Containerized architecture |
Intermediate |
Docker Compose |
Development, Infrastructure |
Tool to control containers locally |
Intermediate |
Keycloak |
Integration, Identity |
3rd party solution to manage authentication and authorization |
Intermediate |
Oauth |
Security |
Open standard for access delegation |
Senior |
Open ID Connect |
Security |
Simple identity layer |
Intermediate |
N-tier |
Architecture |
Architecture Separation of concerns and layering features |
Intermediate |
API |
Architecture |
RESTful, microservice |
Intermediate |
C# |
Development |
API and tooling development language |
Intermediate |
.NET Core |
Development |
API and tooling development framework |
Intermediate |
Mapster |
Development |
Data transformation tool |
Intermediate |
Configuration |
Development |
Environmental abstraction |
Intermediate |
DI |
Development |
Dependency Injection abstraction |
Senior |
MVC |
Development |
Model View Controller architecture |
Intermediate |
AJAX |
Development |
Frontend communication layer |
Intermediate |
VS Code |
Development |
Development tool |
Intermediate |
Visual Studio |
Development |
Development tool |
Junior |
TSQL |
Development |
Database development language |
Intermediate |
Entity Framework |
Development |
Database integration library |
Intermediate |
SQL Server |
Development, Infrastructure |
Database |
Intermediate |
Bash |
Development |
Tooling development language |
Junior |
Linting |
Development |
Development standards enforcement |
Junior |
GIS |
GIS |
Geographical Information System mapping |
Intermediate |
WMS |
GIS |
Web Map Service standard protocol |
Junior |
WFS |
GIS |
Web Feature Service standard protocol |
Junior |
Geocoder |
Integration, GIS |
3rd party tool for GIS |
Junior |
CHES |
Integration, Email |
3rd party email tool |
Intermediate |
Unit Testing |
Testing |
Automated testing of code |
Intermediate |
SQL Profiler |
Monitoring, Debug |
Database query performance analysis tool |
Junior |
A greater understanding of the infrastructure that supports PIMS outside of the local development.
Subject |
Domain |
Description |
Difficulty |
Docker |
Development, Infrastructure |
Containerized architecture |
Intermediate |
Docker Compose |
Development, Infrastructure |
Tool to control containers locally |
Intermediate |
OpenShift |
Infrastructure |
Container orchestration |
Intermediate |
Kubernetes |
Infrastructure |
Container orchestration |
Junior |
Cronjobs |
Infrastructure |
Infrastructure database backup tooling |
Junior |
Keycloak |
Integration, Identity |
3rd party solution to manage authentication and authorization |
Intermediate |
Oauth |
Security |
Open standard for access delegation |
Senior |
Open ID Connect |
Security |
Simple identity layer |
Intermediate |
Git |
Source Control |
Versioned source code - fetch, pull, push, rebase |
Intermediate |
GitHub |
Source Control, DevOps |
Repository management service |
Intermediate |
GitHub Actions |
DevOps |
Automated testing and reporting |
Junior |
DevOps |
Infrastructure, Architecture |
CI/CD pipeline - infrastructure as code |
Senior |
Jenkins |
DevOps, Integration |
DevOps configuration and automation |
Junior |
API |
Architecture |
RESTful, microservice |
Intermediate |
Configuration |
Development |
Environmental abstraction |
Intermediate |
Application |
Architecture |
Frontend web application |
Intermediate |
AJAX |
Development |
Frontend communication layer |
Intermediate |
Entity Framework |
Development |
Database integration library |
Intermediate |
SQL Server |
Development, Infrastructure |
Database |
Intermediate |
Bash |
Development |
Tooling development language |
Junior |
Leaflet |
Integration, GIS |
Frontend 3rd party library for GIS |
Junior |
Geocoder |
Integration, GIS |
3rd party tool for GIS |
Junior |
CHES |
Integration, Email |
3rd party email tool |
Intermediate |
Elasticsearch |
Monitoring, Infrastructure |
Search engine data repository |
Junior |
Kibana |
Monitoring |
Data visualization dashboard |
Junior |
Prometheus |
Monitoring, Infrastructure |
Event monitoring and alerting |
Junior |
Grafana |
Monitoring |
Data visualization dashboard |
Junior |
The processes, tools, and configuration to support Continuous Integration and Continuous Delivery (CI/CD).
Subject |
Domain |
Description |
Difficulty |
Docker |
Development, Infrastructure |
Containerized architecture |
Intermediate |
Docker Compose |
Development, Infrastructure |
Tool to control containers locally |
Intermediate |
OpenShift |
Infrastructure |
Container orchestration |
Intermediate |
Kubernetes |
Infrastructure |
Container orchestration |
Junior |
Cronjobs |
Infrastructure |
Infrastructure database backup tooling |
Junior |
Keycloak |
Integration, Identity |
3rd party solution to manage authentication and authorization |
Intermediate |
Git |
Source Control |
Versioned source code - fetch, pull, push, rebase |
Intermediate |
Pull Requests |
Source Control, DevOps |
Code review |
Intermediate |
GitHub |
Source Control, DevOps |
Repository management service |
Intermediate |
GitHub Actions |
DevOps |
Automated testing and reporting |
Junior |
Jenkins |
DevOps, Integration |
DevOps configuration and automation |
Junior |
SonarQube |
DevOps, Integration |
Code coverage and quality monitoring |
Junior |
Configuration |
Development |
Environmental abstraction |
Intermediate |
Entity Framework |
Development |
Database integration library |
Intermediate |
SQL Server |
Development, Infrastructure |
Database |
Intermediate |
Bash |
Development |
Tooling development language |
Junior |
Unit Testing |
Testing |
Automated testing of code |
Intermediate |
BrowserStack |
Testing |
3rd party automated integration testing tool |
Junior |