Commit 09858f46 authored by Clément NERO (FR)'s avatar Clément NERO (FR)
Browse files

Init

parents
.DS_Store
~$*.*x
The MIT License (MIT)
Copyright (c) 2020 European Commission
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.
# <img src="https://gitlab.com/fastplatform/website/-/raw/master/assets/images/logo-32x32.svg" /> FaST
_[https://fastplatform.eu](https://fastplatform.eu)_
Welcome to the documentation for the FaST platform. The entry points below present the overall architecture of the platform, from the infrastructure level to the access layer, and the user documentation material.
## The basics
- [What is the FaST platform?](basics/what-is-the-fast-platform.md)
- [High level design](basics/high-level-design.md)
- [Structure of the code repositories](basics/code-repositories.md)
## Reference information
In these sections, we provide reference information about the various components of the platform, and how they interact.
- [Infrastructure](reference/infrastructure.md)
- [Services Orchestration](reference/orchestration.md)
- [Continuous Integration & Deployment](reference/ci-cd.md)
- [Monitoring](reference/monitoring.md)
- [Authentication and authorization](reference/auth.md)
- [Modules and services](reference/services.md)
- [Data model](reference/data-model.md)
- [Mobile and web application](reference/mobile-and-web.md)
- [Development environment](reference/setting-up-dev-env.md)
- [Glossary](reference/glossary.md)
## Deploying the platform
- [Deploy the FaST Platform infrastructure on Flexible Engine](reference/flexible-engine-deployment.md)
- [Deploy the FaST platform infrastructure to another Cloud provider](reference/requirements-deployment.md)
- [Hibernation of the FaST Platform infrastructure on Flexible Engine](reference/flexible-engine-hibernation.md)
## Running the platform
- [Runbook](reference/runbook.md)
## User documentation
- [Administration Portal](https://gitlab.com/fastplatform/core/-/blob/master/services/web/backend/docs/src/index.md) (note: this documentation is also available from within the portal itself)
- Mobile and web application quickstart:
[bg](quickstart/app-quickstart-bg-bg.pdf)
[de](quickstart/app-quickstart-be-de.pdf)
[el](quickstart/app-quickstart-gr-el.pdf)
[en](quickstart/app-quickstart-en.pdf)
[es](quickstart/app-quickstart-es-es.pdf)
[et](quickstart/app-quickstart-ee-et.pdf)
[fr](quickstart/app-quickstart-be-fr.pdf)
[it](quickstart/app-quickstart-it-it.pdf)
[ro](quickstart/app-quickstart-ro-ro.pdf)
[sk](quickstart/app-quickstart-sk-sk.pdf)
## Project documents
- [Concept of Operations](conops/conops.md)
- [Journey Documentation](journey_doc/journey_doc.md)
## Contact us
You can contact the FaST technical team at [tech@fastplatform.eu](mailto:tech@fastplatform.eu).
# Structure of the code repositories
All the FaST source code is currently hosted on [gitlab.com](https://gitlab.com/). The code is open-source and is generally licensed under MIT license; however, some of the code is licensed under other licenses (e.g. GPLv3), so be sure to check the `LICENSE` file of each repository.
The common source code of all the services is hosted in the [gitlab.com/fastplatform](https://gitlab.com/fastplatform) group, that is managed by the European Commission. The code that is private to each Member State (custom services, deployment configurations, encryption keys, etc.) is hosted in private groups such as [gitlab.com/fastplatform-xx](https://gitlab.com/fastplatform-xx), where `xx` is the code of the Member State:
- Wallonia: https://gitlab.com/fastplatform-be-wal
- Bulgaria: https://gitlab.com/fastplatform-bg
- Greece: https://gitlab.com/fastplatform-gr
- Piemonte: https://gitlab.com/fastplatform-it-21
- Romania: https://gitlab.com/fastplatform-ro
- Slovakia: https://gitlab.com/fastplatform-sk
Each private group contains:
- A copy of the source code of the *core services* (the FaST common services). This copy is performed using a [fork](https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html) of the corresponding [core](https://gitlab.com/fastplatform/core) repository of the main group.
- A copy of the source code of the *infrastructure* (the code that defines the cloud resources used by the FaST platforms). This copy is also performed using a fork of the corresponding [ops](https://gitlab.com/fastplatform/ops) repositories of the main group.
- A copy of the source code of the *mobile application*. This copy is also performed using a fork of the corresponding [farmer-mobile-app](https://gitlab.com/fastplatform/ops) repository of the main group.
- A copy of the source code of the *add-ons* that are used by the Member State. This copy is also performed using a fork of the corresponding [add-ons](https://gitlab.com/fastplatform/addons) repositories of the main group. The add-ons used by each Member State are different, and only the ones actually used in the national platform are copied in the private group. The add-ons currently cover the weather forecasting, the fertilization algorithms and the satellite imagery processing.
- The *custom* services developed for the Member State, mainly:
- the authentication service, interfacing with national identity providers
- the IACS data access service, interfacing with the IACS/GSAA registries of the Paying Agency
- the regulatory/nitrate service, that computes the nitrogen limitations and warnings, based on the local regulations
The copied/forked code repositories are automatically updated when the corresponding source code (from the main public code repositories) is modified. This is done using the [mirroring](https://docs.gitlab.com/ee/user/project/repository/mirror/) capability of GitLab, but can be disabled. If it is disabled, the code is not automatically updated, and the user must manually pull the new versions of the code into the private repositories.
```plantuml
title
Example structure of code repositories for Wallonia
end title
rectangle "gitlab.com/fastplatform" as repo #white {
label "This is the main (public) group\rof the FaST platform.\rIt contains all the common\rservices used by the national platforms."
rectangle "infrastructure" as infra #cyan
rectangle "core services" as core #cyan
rectangle "mobile app" as app #cyan
rectangle "add-ons" as addons {
rectangle "add-on 1" as addon1 #cyan
rectangle "add-on 2" as addon2 #cyan
}
}
rectangle "gitlab.com/fastplatform-be-wal" as repo_be_wal #white {
label "This is the private group\rof <b>Wallonia</b>. It contains a copy (fork)\rof all the common services, as well as\rcustom services specific to Wallonia\rand Wallonian configuration parameters\rfor all the services."
rectangle "infrastructure" as infra_be_wal #yellow
rectangle "core services" as core_be_wal #yellow
rectangle "mobile app" as app_be_wal #yellow
rectangle "add-ons" as addons_be_wal {
rectangle "add-on 1" as addon1_be_wal #yellow
}
rectangle "custom services" as custom_be_wal #white {
rectangle "IACS connector" as custom1_be_wal #yellow
rectangle "authentication" as custom2_be_wal #yellow
rectangle "regulatory" as custom3_be_wal #yellow
rectangle "configuration" as custom4_be_wal #yellow;line.dashed
}
}
rectangle "FaST Wallonia\ncloud infrastructure" as cloud_be_wal #yellow
rectangle "FaST Wallonia\nCI-CD" as cicd_be_wal #yellow
rectangle "FaST Wallonia\nApp Store account" as apple_be_wal #yellow
rectangle "FaST Wallonia\nPlay Store account" as google_be_wal #yellow
repo -[hidden]- repo_be_wal
infra -> infra_be_wal #black: <color:black>template</color>
core -> core_be_wal #black: <color:black>fork</color>
app -> app_be_wal #black: <color:black>fork</color>
addon1 -> addon1_be_wal #black: <color:black>fork</color>
infra_be_wal --> cicd_be_wal #black: <color:black>build</color>
core_be_wal --> cicd_be_wal #black: <color:black>build</color>
addon1_be_wal --> cicd_be_wal #black: <color:black>build</color>
custom1_be_wal --> cicd_be_wal #black: <color:black>build</color>
custom2_be_wal --> cicd_be_wal #black: <color:black>build</color>
custom3_be_wal --> cicd_be_wal #black: <color:black>build</color>
custom4_be_wal --> cicd_be_wal #black: <color:black>build</color>
cicd_be_wal --> cloud_be_wal #black: <color:black>deploy</color>
app_be_wal --> apple_be_wal #black: <color:black>publish</color>
app_be_wal --> google_be_wal #black: <color:black>publish</color>
app_be_wal --> cicd_be_wal #black: <color:black>build (web)</color>
legend
In the diagram above, the yellow color denotes the private elements
that are fully owned by the Member State, while the cyan color denotes
the common elements that are exposed by the European Commission.
end legend
```
The above structure allows each Member State to:
- have a fully private copy of all the services that are run on their platform, including the common services
- have full ownership of the custom services developed for their platform
- have full ownership of all the configurations (including secrets/certificates) that are applied on their platform
- still have the benefit of being able to get updates from the common services (by pulling changes)
- retain the ability to "unplug" the common services from the main public repository, and perform changes on these services directly in their private repository
#### Deployment
The source code hosted in the each private group is deployed using [CI/CD](../reference/ci-cd.md) pipelines on GitLab. The pipelines are configured to deploy the code to the corresponding private cloud infrastructure.
#### Customizing the common services and the mobile application
As each Member State has a private copy of the common services and of the mobile application source code, it is possible for it to customize these services further by modifying the private copy. This implies:
- that the automatic mirroring (described above) must be disabled
- that all future updates to the common services must be pulled and rebased manually in the private repositories
- that the compatibility of the local changes with the other services must be assured by the Member State (e.g. changes to the data model must be compatible with the API gateway and the mobile application)
#### Contributing changes back to the common repositories
If a Member State chooses to perform private changes on the common services, it can then push these changes back to the main public repository. This is done by opening a [merge request across the initial fork](https://docs.gitlab.com/ee/user/project/merge_requests/allow_collaboration.html). Merging those changes will have to be approved by the owner of the main public repository.
# Main components
## High level design
The FaST Platform is deployed on standard cloud infrastructure, currently on [Orange Business Services](https://www.orange-business.com/en) and [Sobloo](https://sobloo.eu/) for the satellite images.
The cloud resources are abstracted from the actual workload and storage by the use of the Kubernetes container orchestration technology. This orchestrator then runs the FaST workloads, automatically and at scale.
## Core, custom and add-ons
The FaST Platform provides a common infrastructure that allows to run load at high scale, for any country or region. Each country has its own cluster of machines serving its data and processing. The countries are isolated in different *cloud subscriptions*, i.e. separate contracts with the cloud provider, therefore ensuring complete isolation between the resources of separate countries.
More details are provided in the [infrastructure](reference/infrastructure.md) document.
The platform is also modular and therefore allows the reuse of modules across national platforms. The code of the core modules for example, is common to all platforms (e.g. the app or the Admin Portal). The custom modules are specific to a platform (e.g. an IACS connector). Add-ons are also available and can be deployed in one or more platforms.
See [add-ons](https://gitlab.com/fastplatform/addons) for the list of currently available add-ons on FaST and more detailed [documentation](reference/services.md) about core/custom services.
# Farmer app and Admin Portal
The FaST users access the platform through 2 main channels:
- the Farmer app (web or mobile version)
- the Administration Portal (web only)
The app is accessible to all FaST users. It has the **same** codebase across regions: there is no *Bulgarian version* or *Romanian version*, only one *FaST app* version (however some features might be enabled/disabled in some regions).
The app and the Admin Portal are localized to the languages currently supported in FaST and received different *configuration* depending on the country being selected by the user.
More detailed documentation about the Farmer app can be found [here](https://gitlab.com/fastplatform/mobile/farmer-mobile-app).
The Administration Portal is only accessible to designated FaST users that have the adequate permissions.
# What is the FaST platform?
## Vision
Supported by the European Commission’s DG Agriculture and Rural Development, by the EU Space Programme (DG DEFIS) and by the EU ISA2 Programme (DG DIGIT), the FaST digital service platform makes available capabilities for agriculture, environment and sustainability to EU farmers, Member State Paying Agencies, farm advisors and developers of digital solutions. The vision is for the FaST to become a world-leading platform for the generation and re-use of solutions for sustainable and competitive agriculture based on space data (Copernicus and Galileo) and other data public and private datasets. The modular platform will support EU agriculture and the Common Agricultural policy by also enabling the use of solutions based on machine learning applied to image recognition, as well as the use and reuse of IoT data, various public sector data, and user generated data.
You can find more details and contact forms on the dedicated [FaST website](https://fastplatform.eu).
## Stakeholders
- **Farmers**
+ Access the platform through a [web and mobile application](../reference/mobile-and-web.md) for standard browsers, iOS and Android
+ All farm data in the palm of their hands
+ Simplified tasks
- **National and Regional CAP agencies**
+ Access the platform through a [web or portal](https://gitlab.com/fastplatform/core/-/blob/master/services/web/backend/docs/src/index.md)
+ Data-informed action
+ Direct communication to farmers
- **Advisors & farmer associations**
+ Access the platform through a [web or mobile application](../reference/mobile-and-web.md) for standard browsers, iOS and Android
+ More information on their members
+ Better support and coordination
- **Policy makers**
+ Access the platform through [secured APIs](../reference/services.md)
+ Data for designing and monitoring policy measures
- **Research centers**
+ Access the platform through [secured APIs](../reference/services.md)
+ Research inputs
+ Link to farms
- **Non-Governmental agencies**
+ Access the platform through [secured APIs](../reference/services.md)
+ Opportunities to engage farmers in innovative environmental action
- **Commercial services providers**
+ Access the platform through [secured APIs](../reference/services.md)
+ Market pull from public sector clients
+ Direct marketing to farmers
<img src="https://gitlab.com/fastplatform/website/-/raw/master/assets/images/logo-32x32.svg" />
# FaST Concept Of Operations (CONOPS)
For each Member State, the FaST platform is composed of:
- A common web and mobile application (Android & iOS)
- A Cloud infrastructure deployed on Flexible Engine (Orange Business Services part / DIAS Sobloo) that orchestrates:
- Common and Custom services
- Data
The purpose of this document is to provide information about the roles and governance for the operation of this platform.
## Roles
### Users
There are three types of users:
- Farmers and advisors who use the Farmer application to access their farm data, communicate, and receive agronomic advices
- Paying agencies that use the Administration Portal to manage the FaST platform
- Third-party providers that offer new subscribable services that are interfaced with FaST data
More information is available in these [documents](https://gitlab.com/fastplatform/core/-/blob/master/services/web/backend/docs/src/users).
### Platform operators
Three types of expertise are required to operate the technical layers of the platform:
- Infrastructure (Cloud ressources)
- Kubernetes (Container orchestration)
- App & Services (Microservices)
**Tools**
Operators have access to different tools to monitor the platform and to analyze issues:
- Dashboards with metrics
- Logs
- System APIs
**Bug Tracking**
Users can send an email to the support in order to open tickets. The bug tracker is hosted on the GitLab desk service.
When a ticket is raised, following actions need to be done:
- Set ticket severity (blocking, non-blocking)
- Set ticket categories (impacted components, target release, etc...)
- Open new tickets related to the issue if needed
- Assign ticket(s)
- Close ticket(s) when resolved
## Governance
### European Commission
A coordination committee between the DGs concerned must be set up to manage and arbitrate the overall evolution of the platform and the FaST ecosystem.
The committee has the responsibility to:
- Select an IT contractor for the development and support of the FaST platform
- Select the participating Member States
- Decide on a common strategy for the evolution of the common modules of the platform
- Oversee platform policies, such as privacy and terms of use
- Manage subscriptions to common external services needed for the platform (Domain Name, etc ...)
### Paying Agencies
Paying Agencies are the Regional/National Stakeholders of FaST.
A Paying Agency has the responsibility to:
- Communicate about FaST to their local farmers and support them to use the tool
- Provide Level 1 (Basic help desk resolution and service desk delivery) support for users
- Propose or implement evolutions to their custom services or the common services
- Manage the integration of external third parties to the FaST platform
### IT Contractor
An IT contractor that provides technical maintenance and support for the FaST platform and ecosystem.
The IT contractor has the responsibility to:
- Maintain the code base on GitLab and the CI/CD pipelines
- Ensure the availability and the performance of the FaST platform
- Ensure the security of the platform
- Implement and validate new features
- Maintain the FaST ancillary systems such as the wiki, help desk and marketing [website](https://fastplatform.eu)
- Provide Level 2 (In-depth technical support) and Level 3 (Expert product and service support) support
# FaST Handover tasks and timeline
This document aims at presenting the tasks and timeline of the process of handing over the customized FaST platforms to the participating Member States, as well as the source code, material and technical documentation.
We have identified the following tasks to be performed:
- [Task 1: Transfer of the cloud subscription currently hosting the live platform](#task-1-transfer-of-the-cloud-subscription)
- [Task 2: Republishing of the mobile applications on Google and Apple stores](#task-2-republishing-of-the-mobile-applications)
- [Task 3: FaST administration portal training (1 workshop)](#task-3-fast-administration-portal-training)
- [Task 4: Technical handover (2 workshops)](#task-4-technical-handover)
- [Task 5: Transfer of the source code repositories and secrets](#task-5-transfer-of-the-source-code-repositories-and-secrets)
- [Task 6: Rewrite of the policies (Privacy Policy, Terms & Conditions)](#task-6-rewrite-of-the-policies-privacy-policy-terms-conditions)
- [Other tasks to be considered by the Member States](#other-tasks-to-be-considered-by-the-member-states)
#### Proposed timeline
The proposed timeline for each task is represented below. We propose to have a final deadline for the transfer on May 15th, i.e. 2 weeks before the end of the PwC contract.
```plantuml
@startuml
printscale weekly
Project starts 2022-02-14
[T1: Transfer of the cloud subscription] starts 2022-03-01 and ends 2022-05-15
[T2: Republishing mobile apps] starts 2022-03-20 and ends 2022-05-15
[T3: FaST admin training] starts 2022-03-20 and ends 2022-04-30
[T4: Technical workshops] starts 2022-03-20 and ends 2022-05-15
[T5: Transfer source code] starts 2022-05-01 and ends 2022-05-15
[T6: Rewrite policies] starts 2022-04-01 and ends 2022-05-15
[Transfer to MS is finalized] happens on 2022-05-15
[End of PwC contract with the EC] happens on 2022-06-01
@enduml
```
> Note that there is a **hard** deadline on May 31st, when the PwC FaST contract with the EC expires. Each platform _has to be fully transferred to each Member State before that date_.
## Task 1: Transfer of the cloud subscription
Each current Member State platform is hosted on the [Sobloo DIAS](https://sobloo.eu/) and, more specifically, under an independent [Orange Business Services](https://www.orange-business.com/en) subscription. Each of these subscriptions is currently contracted by PwC, and must be transferred to the designated Member State legal entity before the end of May 2022.
```plantuml
rectangle "Wallonia" as be_wal
rectangle "Bulgaria" as bg
rectangle "Greece" as gr
rectangle "Romania" as ro
rectangle "Slovakia" as sk
rectangle "Orange Business Services\nsubscriptions" as obs {
rectangle "OCB0005394\nfastplatform-be-wal" as obs_be_wal
rectangle "OCB0005396\nfastplatform-bg" as obs_bg
rectangle "OCB0005398\nfastplatform-gr" as obs_gr
rectangle "OCB0005397\nfastplatform-ro" as obs_ro
rectangle "OCB0005399\nfastplatform-sk" as obs_sk
}
be_wal --> obs_be_wal
bg --> obs_bg
gr --> obs_gr
ro --> obs_ro
sk --> obs_sk
```
This task implies that:
- **Task 1.1**: Each Member State formally identifies the legal entity that will be the new owner of the subscription
- **Task 1.2**: The designated Member State legal entity enters into a contract with Orange Business Services.
- **Task 1.3**: The subscription (and all associated live resources) is then transferred by Orange Business Services from the PwC contract to the Member State contract, on an agreed date, no later than mid-May 2022.
This task can happen in parallel of all the other technical tasks.
##### What are the terms and conditions of the Orange Business Services contract?
The terms and conditions of the contract will be communicated to each Member State legal entity by Orange Business Services before the end of February 2022. The proposed conditions are the standard conditions, and are identical to the conditions contracted by PwC for the past 2 years.
##### What is the estimated cost of hosting the FaST platform on the Orange Business Services cloud subscription?
Each FaST platform is dynamic and scales up and down according to the current load of the system (i.e. the number of users currently using the platform). The cloud resources used are dynamically allocated according to the current load of the platform, therefore optimizing the cost of hosting the platform by releasing unused resources as soon as possible.
With the above in mind, our estimates are that hosting the FaST platform on the Orange Business Services subscription will cost **around €2,000 per month** per Member State.
##### What happens if the subscription is not yet transferred on May 31st?
If the subscription is not transferred when the PwC contract with the European Commission expires on May 31st 2022, then it will be destroyed and the platform will be unavailable.
It will then be up to each Member State to re-deploy the platform on a live environment, reload all the data and start the platform again.
## Task 2: Republishing of the mobile applications
The Android and iOS mobile application for FaST are currently published on the Google Play and Apple App Store using a single PwC-owned account. This account will be decommissioned on the end of May 2022.
Therefore, the mobile applications need to be re-published using accounts owned by each participating Member State.
Each Member State must:
- **Task 2.1**: Identify if Apple / Google accounts exist within the Paying Agency, to be used to publish the mobile application of FaST
- **Task 2.2**: If such accounts do not exist, the Paying Agency creates its accounts them on the Apple App Store and Google Play Store. This creation of accounts bears a fee (€99 for Apple and $25 for Google, as of writing this document).
- **Task 2.3**: The Paying Agency re-publishes the mobile application on the stores using its accounts
The signing and republishing of the mobile application is a technical task that needs to be performed by a skilled technical expert. Documentation will be provided on the process currently used by PwC to deploy the application on the current test accounts.
##### Why can't PwC create accounts for each Member State, publish the apps from there and transfer the account at the end of May?
PwC cannot create those accounts and transfer them, for different reasons:
- Apple App Store: each account created on behalf of an organization (company or institution) must be managed by the organization itself. PwC cannot create an account on behalf of a Paying Agency, for example ; the account has to be created and managed by the Paying Agency itself.
- Google Play Store: PwC cannot create multiple accounts at once, as these would be considered as "linked accounts", which are forbidden by the store's policies.
##### If we do not republish the mobile applications, will FaST become inaccessible to farmers?
No, the FaST application will still be available for farmers on laptop and mobile browsers.
## Task 3: FaST administration portal training
PwC will organize one online workshop per participating Member State on the FaST administration portal, to be held on the end in April 2022. This workshop will:
- cover the basics of FaST, in terms of features and data model
- cover the main features of the portal:
- interface
- data access
- user and campaign management
- data import/export
- be designed for a non-IT audience
- be held in English
- be expected to last approx 3 hours, with 1 hour reserved for Q&A
## Task 4: Technical handover
PwC will organize two technical workshops per Member State, aimed at presenting the technical infrastructure of the FaST platform and its day-to-day technical management.
Both workshops will be designed for a technical (IT) audience and will be held in English.
The **first workshop** will cover:
- The structure of the source code repositories on GitLab: infrastructure code, common services source code, custom source code, add-ons.
- Technologies used: [GitLab.com](https://gitlab.com/)
- The underlying cloud infrastructure: machines, storage, networks, security, monitoring
- Technologies used: [Orange Business Services](https://www.orange-business.com/en) resources, [Terraform](https://www.terraform.io/)/[Terragrunt](https://terragrunt.gruntwork.io/), [Flux CD](https://fluxcd.io/)
- The workload orchestrator: microservice architecture, service mesh,
- Technologies used: [Kubernetes](https://kubernetes.io/), [Istio](https://istio.io/), [Knative](https://knative.dev/)
- The continuous integration and deployment (CI/CD) pipelines for the infrastructure and the services.
- Technologies used: [Bazel](https://bazel.build/), [GitLab CI](https://docs.gitlab.com/ee/ci/)
The **second workshop** will cover:
- The structure of the FaST platform: services, databases, API gateways
- Technologies used: [Hasura](https://hasura.io/)/[GraphQL](https://graphql.org/), [Python](https://www.python.org/), [Django](https://www.djangoproject.com/), [fastapi](https://fastapi.tiangolo.com/), [Postgres](https://www.postgresql.org/)/[PostGIS](https://postgis.net/), [MapProxy](https://mapproxy.org/), [GDAL](https://gdal.org/), [pg_tileserv](https://github.com/CrunchyData/pg_tileserv)
- The FaST data model: users, farms, campaigns, etc
- The FaST farmer application
- Technologies used: [Vue.js](https://vuejs.org/), [Capacitor](https://capacitorjs.com/), [Quasar.dev](https://quasar.dev/), [Leaflet](https://leafletjs.com/), [Apollo GraphQL Client](https://www.apollographql.com/), iOS/XCode, Android Studio
##### Is it mandatory that the technical audience is proficient in the technologies used in the workshops?
Yes. The purpose of the technical workshops is to handover specific FaST information, not to upskill the audience in the technologies used. Also, the workshops will be very dense, given the amount of information to convey and the limited amount of time.
It is expected that the technical experts present have at least 2 years of experience in the above technologies.
## Task 5: Transfer of the source code repositories and secrets
We will transfers the ownership of the source code repositories of each Member State to the designated technical entity. The source code repositories contain:
- the source code for the infrastructure and the services
- the CI/CD pipelines
- the secret keys (certificates, encryption keys, etc)
This transfer will happen at the same time as the subscription transfer (Task 1).
The source code for each Member State is currently hosted on GitLab in separate _groups_:
- Wallonia: https://gitlab.com/fastplatform-be-wal
- Bulgaria: https://gitlab.com/fastplatform-bg
- Greece: https://gitlab.com/fastplatform-gr
- Romania: https://gitlab.com/fastplatform-ro
- Slovakia: https://gitlab.com/fastplatform-sk
The ownership of each group will be transferred to the designated technical entity of each Member State.
## Task 6: Rewrite of the policies (Privacy Policy, Terms & Conditions)
The current policies for the platform are designed for the development/test period and make mention of the European Commission / PwC being responsible for each platform (notably in the GDPR role of data controller). Under the [current policies](../policies/), usage of the data is strictly limited to "development of the platform and improvement of the services".
As PwC will transfer the ownership of the platform to the designated Member State, the policies need to be rewritten to reflect the new owner, and the transfer of responsibility. The allowed usage of the data needs to be adapted to each Member State's own objectives, in compliance with GDPR.
Therefore, the following policies need to be rewritten by each Member State and updated in the Administration Portal:
- Privacy Policy
- Terms & Conditions
## Other tasks to be considered by the Member States
In this section, we list the other tasks that are not part of the PwC assignment, but should however be considered by each Member State performing the roll-out of the service.
- **Communication**: a communication plan should be designed and implemented by each Member State to let the farming community know about the platform, its features and how to access it.
- **User support**: a user support plan (email, phone, etc) should be designed and implemented by each Member State to help the farmers to get in touch with human support for the platform.
- **Governance of the platform**: the governance of the platform, at the Member State level, should be defined, to ensure roles and responsibilities are well understood, plan and manage evolutions and liaise with the European Commission.
# Transfer of assets
This document summarizes the transfer of assets between the contractor (PwC) and the European Commission (EC) and participating Member States.
The execution of the FaST pilot project generated several types of assets, in the form of source code, live platforms and accounts with external suppliers.
## Assets that will be transferred to the European Commission
### [fastplatform.eu]() domain name
The [fastplatform.eu]() domain name is used for:
- DNS zone management and routing
- Email redirects for the [tech.xx@fastplatform.eu]() accounts
The domain is currently registered (and already paid for) until Feb 4, 2023, on the [Gandi](https://gandi.net) registrar.
##### How will we transfer it?
The [fastplatform.eu]() domain name can either be kept under the Gandi registrar, or transferred to a different registrar.
- if the domain name is kept in Gandi, the EC will create and provide a Gandi account that will be added as the sole owner of the domain name. The WHOIS information will also be updated to reflect the new owner (the EC).
- if the domain name is to be transferred to a different registrar, the domain transfer will be initiated from within Gandi to the registrar designated by the EC. **Important note: the email aliases (currently configured in Gandi) will need to be recreated in the new registrar. These email aliases are extremely important as they are used as login / username on numerous services, see below.**
> The [fastplatform.eu]() domain name *is needed* to be maintained for the proper running of the national platforms. The DNS zones declared on the domain are used to route traffic to the national platforms. The email aliases (see below) are used as accounts usernames for other services, such as DIAS or the Google Play Store.
### [gitlab.com/fastplatform](https://gitlab.com/fastplatform) group
This [GitLab](https://gitlab.com) group contains all the repositories of all the source code created during the course of the FaST Pilot. It is used by each Member State platform as a repository of the common services.
##### How will we transfer it?
A GitLab user provided by the EC will be set as *owner* of the group (and therefore granted access to all the repositories and resources within the group).
### [netlify/fastplatform](https://app.netlify.com/teams/fastplatform) account
Netlify is used to host the project website [https://fastplatform.eu](https://fastplatform.eu). Our usage of Netlify falls within their free tier.
##### How will we transfer it?
A Netlify user provided by the EC will be set as *owner* of the [fastplatform team](https://app.netlify.com/teams/fastplatform).
### [freshdesk/fastplatformeu](https://fastplatformeu.freshdesk.com/) account
Freshdesk is a ticketing management system, and just powers the contact form on the [https://fastplatform.eu](https://fastplatform.eu) website. Our usage of Freshdesk falls within their free tier.
##### How will we transfer it?
A Freshdesk user provided by the EC will be set as *owner* of the [fastplatform team](https://fastplatformeu.freshdesk.com/).
## Assets that will be transferred to each participating Member State
### [Orange Business Services](https://www.orange-business.com/) contracts
These accounts correspond to the *live platforms* that are currently hosting the FaST service for each participating Member State. Each account contains all the cloud resources that make up the FaST service:
- Cluster of virtual machines
- Storage and databases (including current data)
- Encryptions keys and certificates
There currently are 6 accounts:
- Contract `OCB0005394` / `fastplatform-be-wal` (Wallonia)
- Contract `OCB0005396` / `fastplatform-bg` (Bulgaria)
- Contract `OCB0005398` / `fastplatform-gr` (Greece)
- Contract `OCB0005420` / `fastplatform-it-21` (Piemonte)
- Contract `OCB0005397` / `fastplatform-ro` (Romania)
- Contract `OCB0005399` / `fastplatform-sk` (Slovakia)
##### How will we transfer them?
The contractual elements with Orange Business Services as well as the procedure to follow have been sent to each participating Member State. Once the transfer is completed, all the cloud resources under the account will be the property and the responsibility of each Member State.