Most Powerful Open Source ERP

Rapid.Space Wins the vRAN Category of Telecom Infra Project’s Program to Accelerate Commercialization of Its Technology

The company garnered attention with its vRAN offerings and unique open-source RRH. Now it’s in the best position to develop these technologies even further.
  • Last Update:2020-11-30
  • Version:001
  • Language:en

Press Release

Paris, August 18th 2020 – For immediate distribution

Rapid.Space, a Hyper Open cloud provider, is pleased to announce it was named the winner of the virtualized radio access network (vRAN) category and will now join TEAC Germany, an ecosystem acceleration center of the Telecom Infra Project (TIP). 

The TEAC program annually selects a handful of promising companies to test the deployment of disruptive technologies. This year, there were one hundred participants out of which 12 were selected for pitching. Six of those were then named winners across three different categories. Rapid.Space won the vRAN category due to its unique offerings and its open-source remote radio head (RRH) technology.

Rapid.Space provides sovereignty and trust through full reversibility. Rapid.Space’s RRH is designed to support O-RAN through 7.2 protocol, meaning that users don’t need to wait for traditional RRH vendors anymore. Some components are licensed, meaning that anyone can “clone” the platform on-premise and audit its source code at cost. However, most of the products are open-source, meaning that anyone can contribute RRH and base stations to extend the worldwide vRAN coverage of Rapid.Space, as long as regular procedures and local legislation on radio frequencies are respected. 

In receiving the award, Rapid.Space has now gained access to the TIP acceleration center ecosystem. This means access to advanced infrastructure in the Hubraum campus in Berlin, including cutting-edge technology, and a large network of mentors, investors, and partners from all over the world. 

“We have great admiration for TIP’s community-based R&D model that guides new ways of developing telecom infrastructures and we are honored to be joining the ranks,” says Jean-Paul Smets, CEO at Rapid.Space. “The opportunity to join the TEAC incubator will help us extend the operation management (OM) software of our RRH with AI-powered network management. We look forward to testing and improving our technologies in the field of private networks for industrial automation and Industry 4.0.”

For more information about Rapid.Space, visit:


About Rapid.Space
Rapid.Space is a cloud provider whose "Hyper Open" approach is based exclusively on the use of fully auditable and reversible software, hardware, and management procedures under open source or source licenses. Rapid.Space has a presence in France, Germany, Sweden, the Netherlands, Bulgaria, as well as Taiwan and Shanxi (China). It covers about 85% of the features of most sophisticated public cloud services while bringing unique benefits in terms of sovereignty, independence, fair pricing, stability, and sustainability to the cloud market. 

Media Conact
Name: Laura Field
Phone: 1-646-480-0356


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.