Most Powerful Open Source ERP

Launch of Rapid.Space, the world's first provider of open source cloud and 5G infrastructures

Rapid.Space is a global provider of converged cloud and 5G network infrastructures offering high performance, reversibility, transparency, privacy and sovereignty at a competitive cost.
  • Last Update:2020-05-18
  • Version:001
  • Language:en

Press Release

Paris, May 18th 2020 – For immediate distribution

Rapid.Space is Europe's only dependency-free converged cloud provider. 

Rapid.Space aims to offer a breakthrough alternative to conventional public clouds or 5G mobile edge computing, based on open source software, open source hardware and open management procedures.

« If there is free virtualization software or free software dealing with technical aspects such as orchestration, only Rapid.Space today offers a complete, auditable and reproducible cloud service, i.e. where all software, hardware and management procedures are free. » says Jean-Paul Smets, President of Rapid.Space and CEO of Nexedi.

« Rapid.Space is a neutral platform for operating 4G or 5G networks, based on the most innovative radio virtualization technologies. This service guarantees the absence of backdoora by providing full access to the source code. » says Franck Spinelli, CEO of Amarisoft.

Rapid.Space relies on state-of-the-art technologies provided Nexedi and their experience in network and BIg Data management as well as Amarisoft for its experience in 4G and 5G virtualized networks. 

Rapid.Space has many advantages over current market players

In addition to a price 2 to 20 times cheaper than the competition and an unparalleled ethical level (free code, zero-knowledge, circular economy, low PUE, renewable electricity, etc.), Rapid.Space has additional rare and unique features..

Rapid.Space is a reversible or duplicable cloud service that allows to combine public, private or hybrid clouds with or without the participation of Rapid.Space. No other operator offers this because Rapid.Space is the only cloud operator whose source code is completely free, even the billing.

It is a mobile edge computing (MEC) service for the operation of 4G and 5G infrastructures, centralized or distributed, public or private, allowing to share the same frequency for 4G and 5G, and whose code is free or accessible under license, even subscriber management.

Rapid.Space offers large servers with fast disks and 10 Gbps network. This type of offer is still quite rare. It is well suited for Big Data applications, large-scale ERP systems, load testing, or machine sharing by developers (via containers or equivalent).

Rapid.Space offers an unparalleled presence in China in terms of connection, operation and payment, integration that virtually no other operator offers outside of the conventional Chinese cloud operators.

Finally, Rapid.Space integrates a global CDN associated with a DNS and an IPv6 network with unrivalled latency minimization. Thanks to this CDN, a site legally deployed in Europe or China can be accessed from anywhere in the world in a fast and reliable manner.

Among the first references using Rapid.Space's technology, we are permitted to disclose /e/ OS, the publisher of the French sovereign smartphone, the City of Munich for an industrial Big Data platform as well as the PSA Group for ERP applications and Bip&Go to ensure the resilience of its key applications (eCommerce site and ERP5 backoffice). 

Permanent address of the press release

About Rapid.Space

Rapid.Space is a cloud provider whose "Hyper Open" approach is based exclusively on the use of free, fully auditable and reversible software, hardware and management procedures under open licenses. Rapid.Space is present in France, Germany, Sweden, the Netherlands and China. It covers about 85% of the most sophisticated public cloud services.

Contact : Jean-Paul Smets - CEO - Tel: +33 (0)6 29 02 44 25 - jp (at)

Further information on :

About Nexedi

Nexedi is Europe's leading open source software publisher with a portfolio of around ten software products and 15 million lines of code. It is the creator of the "ERP5" - the open source integrated management software package deployed in companies such as SANEF, Aribus, Kyorin, PSA, Toyota and Mitsubishi. Nexedi is the main contributor to SlapOS, a European Edge Computing technology used by Teralab clouds for big data and artificial intelligence applications. Nexedi is the author of the Wendelin software used in applications for automatic processing of large data volumes of by machine learning (AI) or physical models in Industry 4.0.

Nexedi provides 24/7 support companies and governments who wish to migrate their critical business applications to long term maintained open source solutions.

Contact : info (at)

Further information on:

About Amarisoft

Amarisoft is a software publisher specialized in LTE 4G and 5G NR mobile telecom infrastructures. Inventor of the vRAN 7 years ago, it has today a complete 4G and 5G software suite including the base station (eNodeB and gNodeB), the core network (ePC and 5GC) as well as a phone software stack (4G and 5G UE). The particularity of this technology is that it runs on standard PC-type hardware, which makes Amarisoft's offer unique.

With more than 600 customers (including 95% in export), Amarisoft helps wireless telecom players to accelerate projects and offer reliable products at the best cost to test and/or deploy 4G and 5G mobile infrastructures.

Contact : sales (at)

For more information:

08-10 2019

Adding 10000 rows in a table by Unknown User

Hello, I am trying to create a table containing 82 columns and 10000 rows (11028 to be exact) in a sheet. I tried to add the lines one by one and then to do a Sync but the table is not created. I thought it was a lot of data at one time so I tried adding lines in packets of 1000. This time, I get the table but only the first 1000 rows are filled. In the log, I see all the packets go by.   In the code below : - "values" is the json formatted data i try to add  - "tableName" speaks for itself. The steps before 5 are inscriptions of some data in other sheets but these works.   function CreateODataQuerySheetStep5_List(values, tableName) {     let n = values.length;     if (n > 0) {         CreateODataQuerySheetStep5_ListTableHeader(values, tableName);           } else { (context) {             let headers = [["No data"]];             let sheet = context.workbook.worksheets.getItem(newQueryName);             let table = sheet.tables.add("A1", true);    = tableName;             table.getHeaderRowRange().values = headers;             sheet.activate();             window.location.href = "Home.html";             return context.sync();         }).catch(function (error) {             logging(sessionStorage.getItem("Token"), error);         });             } } function CreateODataQuerySheetStep5_ListTableHeader(values, tableName) {     console.log("Creating header"); (context) {         console.log("Get Sheet");         let sheet = context.workbook.worksheets.getItem(newQueryName);         console.log("Define table horizontal length");         let line = values[0];         let keys = Object.keys(line);         let address = "A1:" + ColumnToLetter(keys.length) + "1";         console.log("Computing header columns");         let headers = [];         for (let j = 0; j < keys.length; j++) {             let key = keys[j];             headers.push(key);         }         console.log("Adding table");         let table = sheet.tables.add(address, true); = tableName;         let temp = [];         temp.push(headers);         console.log("Putting header");         table.getHeaderRowRange().values = temp;         return context.sync().then(function () {             console.log("Header created")             CreateODataQuerySheetStep5_List1000(values, 0, tableName, headers);         }).catch(function (error) {             logging(sessionStorage.getItem("Token"), error);         });     }).catch(function (error) {         logging(sessionStorage.getItem("Token"), error);     }); } function CreateODataQuerySheetStep5_List1000(values, start, tableName, headers) {     console.log("Adding 1000 rows"); (context) {         console.log("Get Sheet");         let sheet = context.workbook.worksheets.getItem(newQueryName);         console.log("Get Table");         let table = sheet.tables.getItem(tableName);         console.log("Computing max between 1000 and remaining lines");         let x = values.length - start;         let n = Math.min(1000, x);         console.log("Adding rows from " + start.toString() + " to " + (start + n).toString());         for (let i = start; i < n; i++) {             let line = values[i];             let keys = Object.keys(line);             let row = [];             for (let jj = 0; jj < headers.length; jj++) {                 let prop = headers[jj];                 let value = line[prop];                 if ($.type(value).toLowerCase() === 'string') {                     value = "'" + value;                 }                 row.push(value);             }             table.rows.add(null, [row]);         }         console.log("Rows added");              let y = start + 1000;         if (y < values.length)         {             console.log("Rows are remaining");             return context.sync().then(function () {                 console.log("Recursive Call");                 CreateODataQuerySheetStep5_List1000(values, y, tableName, headers);             }).catch(function (error) {                 logging(sessionStorage.getItem("Token"), error);             });         }         else         {             //if (Office.context.requirements.isSetSupported("ExcelApi", 1.2)) {             //    sheet.getUsedRange().format.autofitColumns();             //    sheet.getUsedRange().format.autofitRows();             //}             console.log("Sheet activation");             sheet.activate();             return context.sync().then(function () {                 console.log("return to home");                 window.location.href = "Home.html";             });         }              }).catch(function (error) {         logging(sessionStorage.getItem("Token"), error);     });      }
31-01 2019

Unprotect the excel sheet with password pro-grammatically using officejs. by Unknown User

await function(context) {   const sheet = context.workbook.worksheets.getActiveWorksheet(); // const workBook = context.workbook. console.log(;"abc") const range = sheet.getUsedRange(); range.load("values"); range.load("address"); return context.sync().then(function () { console.log(range.address); }) }).catch(function(error) { console.log("Error: " + error);   });   Giving Error: Uncaught (in promise): InvalidArgument: The argument is invalid or missing or has an incorrect format.