Search

Automation Engineer

PublishedPublished: 10/30/2026
Engineering
${titleText}

`); let grid = columnOne.querySelector('.job-grid'); let allTokens = Array.from(columnOne.querySelectorAll('.joblayouttoken')); // --- 1. CAPTURE VARIABLES FOR BUSINESS RULES --- let jobLocationValue = ""; let countryRegionValue = ""; let regionValue = ""; let jobLevelValue = ""; let employeeGroupValue = ""; allTokens.forEach(el => { let labelEl = el.querySelector('.joblayouttoken-label'); if (!labelEl) return; let labelText = labelEl.innerText; let propId = generatePropertyId(labelText); let valueEl = el.querySelector('.rtltextaligneligible'); let valueText = valueEl ? valueEl.textContent.trim() : ""; if (propId === "JobLocation") { jobLocationValue = valueText; } else if (propId === "CountryRegion") { countryRegionValue = valueText; } else if (propId === "Region") { regionValue = valueText; } else if (propId === "JobLevel") { jobLevelValue = valueText.toUpperCase().trim(); } else if (propId === "EmployeeGroup") { employeeGroupValue = valueText.toLowerCase(); } }); // --- 1.5 FALLBACK DATA FROM JOB DESCRIPTION --- let descDiv = document.querySelector('.job-description') || columnOne.querySelector('[itemprop="description"]'); if (descDiv) { let descText = descDiv.innerText || ""; if (!employeeGroupValue) { let eg = descText.match(/Employee Group:\s*([^\n\r]+)/i); if (eg) employeeGroupValue = eg[1].toLowerCase().trim(); } if (!countryRegionValue) { let cr = descText.match(/Country:\s*([^\n\r]+)/i); if (cr) countryRegionValue = cr[1].toLowerCase().trim(); } if (!regionValue) { let rg = descText.match(/Region:\s*([^\n\r]+)/i); if (rg) regionValue = rg[1].toLowerCase().trim(); } if (!jobLevelValue) { let jl = descText.match(/Job Level:\s*([^\n\r]+)/i); if (jl && !jl[0].toLowerCase().includes("experience")) { jobLevelValue = jl[1].toUpperCase().trim(); } } } // --- 2. RULE VALIDATION --- let isSalaryPaid = employeeGroupValue.includes('salary'); // Job Level Rule: if >= PL09 or ZZ, hide the salary. let isJobLevelSalaryEligible = true; let plMatch = jobLevelValue.match(/PL(\d+)/); if (jobLevelValue.includes("ZZ")) { isJobLevelSalaryEligible = false; } else if (plMatch && parseInt(plMatch[1], 10) >= 9) { isJobLevelSalaryEligible = false; } let fullLocationLower = (jobLocationValue + " " + countryRegionValue).toLowerCase(); let isUSJob = fullLocationLower.includes("usa") || fullLocationLower.includes("united states") || /\bus\b/.test(fullLocationLower); let allowedUSStates = ["massachusetts", "illinois", "colorado", "minnesota", "new york", "oregon", "ohio", "california", "washington", "nevada", "maryland", "new jersey"]; let allowedUSAbbr = ["ma", "il", "co", "mn", "ny", "or", "oh", "ca", "wa", "nv", "md", "nj", "wdc", "dc"]; let allowedGlobalCountries = ["canada"]; let isSalaryLocationValid = false; if (isUSJob) { let hasFullStateName = allowedUSStates.some(state => fullLocationLower.includes(state)); let hasStateAbbr = allowedUSAbbr.some(abbr => { let regex = new RegExp(`\\b${abbr}\\b`); return regex.test(fullLocationLower); }); isSalaryLocationValid = hasFullStateName || hasStateAbbr; } else { isSalaryLocationValid = allowedGlobalCountries.some(country => fullLocationLower.includes(country)); } let showSalaryRange = isSalaryLocationValid && isJobLevelSalaryEligible && isSalaryPaid; // --- 3. TOKEN PROCESSING AND DISPLAY --- allTokens.forEach(el => { if (el.querySelector('[itemprop="description"]')) { return; } let labelEl = el.querySelector('.joblayouttoken-label'); if (labelEl) { let labelText = labelEl.innerText; let customPropertyid = generatePropertyId(labelText); // --- ABSOLUTE REMOVAL OF TOKENS USED FOR LOGIC --- if ( customPropertyid === "EmployeeGroup" || customPropertyid === "CountryRegion" || customPropertyid === "Region" || customPropertyid === "JobLevel" ) { el.style.display = 'none'; el.remove(); return; } // --- BUSINESS FILTERS --- if (customPropertyid === "SalaryRange" && !showSalaryRange) { el.style.display = 'none'; el.remove(); return; } // --- LABEL TEXT WORKAROUNDS --- if (customPropertyid === "SalaryRange" && labelText.toLowerCase().includes("recruitment salary range")) { labelEl.innerText = labelText.replace(/Recruitment Salary Range/ig, "Annual Salary Range"); } if (labelText.includes("(Short)")) { labelEl.innerText = labelText.replace(/\(Short\)/g, "(s)"); } // --- BRUTE FORCE STYLING --- labelEl.style.setProperty('font-weight', 'bold', 'important'); labelEl.style.setProperty('font-size', '14px', 'important'); labelEl.style.setProperty('color', '#303030', 'important'); labelEl.style.setProperty('font-family', 'Verdana, Geneva, sans-serif', 'important'); let valueEl = el.querySelector('.rtltextaligneligible'); if (valueEl) { valueEl.style.setProperty('font-weight', 'normal', 'important'); valueEl.style.setProperty('font-size', '15px', 'important'); valueEl.style.setProperty('color', '#303030', 'important'); valueEl.style.setProperty('font-family', 'Verdana, Geneva, sans-serif', 'important'); } // --- ADD ICONS --- let elType = labelEl.nextElementSibling; if (elType) { let icon = ''; let iconUrl = ''; switch (customPropertyid) { case 'JobLocation': icon = 'glyphicon-map-marker'; break; case 'BusinessUnit': icon = 'glyphicon-briefcase'; break; case 'JobCategory': icon = 'glyphicon-dashboard'; break; case 'EmploymentType': icon = 'glyphicon-star-empty'; break; case 'ReqID': icon = 'glyphicon-calendar'; break; case 'WorkLocationType': icon = 'glyphicon-paste'; break; case 'JobExperienceLevel': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/b4cf3492-3cb2-4e29-a914-3.png'; break; case 'SalaryRange': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/3bd06ab1-e5dc-4e72-abcb-3.png'; break; case 'TAPartner': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/66a66419-f8c9-4f0e-b94a-6.png'; break; default: icon = ''; } let iconHtml = ''; if (icon) { iconHtml = ``; } else if (iconUrl) { iconHtml = ``; } labelEl.parentElement.insertAdjacentHTML('beforebegin', `
${iconHtml}`); let wrapper = el.querySelector(`.job-token-${customPropertyid}-wrapper`); wrapper.appendChild(labelEl.parentElement); let emptySibling = document.querySelector(`.job-token-${customPropertyid}-wrapper`).nextSibling; if(emptySibling && emptySibling.nodeType === 3) emptySibling.remove(); } grid.appendChild(el); } }); // --- 4. CLEAN UP JOB DESCRIPTION HARDCODED TOKENS --- if (descDiv) { let descHtml = descDiv.innerHTML; descHtml = descHtml.replace(/Employee Group:[\s\S]*?(?=
arr.some(keyword => normalized.includes(keyword)); if (contains(["employee group"])) return "EmployeeGroup"; if (contains(["country", "land", "país", "pays", "paese", "kraj", "krajina"])) return "CountryRegion"; if (contains(["region", "región", "région", "регион", "地区"])) return "Region"; if (contains(["posting job location", "job location", "joblokation", "jobsted", "arbeitsort", "ubicación", "site de l'emploi", "lokalizacja", "местоположение", "miesto", "职位地点", "sede di lavoro"])) return "JobLocation"; if (contains(["salary range", "annual recruitment salary", "løninterval", "gehaltsspanne", "przedział wynagrodzenia", "fourchette", "rango salarial", "mzdové rozpätie", "lønramme", "диапазон зарплаты"])) return "SalaryRange"; // Traduções adicionadas para o nível de experiência em Polonês, Francês e Alemão if (contains(["job experience level", "erfaringsniveau", "erfahrungsniveau", "poziom doświadczenia", "expérience professionnelle", "experiência"])) return "JobExperienceLevel"; if (contains(["posting job level", "job level", "jobniveau", "joblevel", "nivel del puesto", "niveau du poste", "poziom stanowiska", "уровень должности", "úroveň pozície"])) return "JobLevel"; if (contains(["employment type", "ansættelse", "beschäftigungsart", "tipo de emprego", "type d'emploi", "rodzaj zatrudnienia", "тип занятости", "typ pracovného pomeru", "员工类型", "tipologia di impiego", "tipo de empleo"])) return "EmploymentType"; if (contains(["work location type", "arbejdsstedstype", "arbeitsmodell", "tipo de ubicacion", "emplacement de travail", "miejsca pracy", "формат работы", "výkonu práce", "工作地点类型", "modalità di lavoro"])) return "WorkLocationType"; if (contains(["job category", "jobkategori", "stellenkategorie", "categoría", "catégorie", "kategoria", "категория должности", "kategória", "职位类别", "area professionale"])) return "JobCategory"; if (contains(["business unit", "segment", "segmento", "firmaenhed", "unternehmenseinheit", "jednostka biznesowa", "сегмент", "业务板块"])) return "BusinessUnit"; if (contains(["req id", "rek-id", "kennung", "id de solicitud", "identifiant de la demande", "identyfikator", "идентификатор", "id pracovní pozície", "需求 id", "identifikačné", "id posizione", "requisition id", "stellen-id"])) return "ReqID"; if (contains(["ta partner", "partenaire ta"])) return "TAPartner"; return jobLayoutTokenLabel.replace(/[\s:\(\)\]\[]/g,'');}

The Impact You'll Make

As an Automation Engineer, you'll play a key role in advancing the next generation of energy-efficient, oil-free compressor technology. This is a unique opportunity to combine software development, engineering science, and hands-on laboratory work to help validate innovations that shape the future of sustainable cooling and refrigeration solutions.

In this role, your work will directly influence how our R&D test systems operate. You'll develop the software that controls test rigs, automates complex testing processes, and transforms critical performance data into insights that drive product innovation.

You'll join a collaborative and multicultural engineering team where you can expand your expertise across automation, thermodynamics, industrial controls, data acquisition, and software development, while seeing the real-world impact of your work every day.

What You'll Be Doing

  • Develop and enhance C++ Linux backend applications and C# user interfaces that control test systems, automate testing, and improve the efficiency of laboratory operations.
  • Integrate thermodynamic, fluid dynamics, and energy performance calculations into software solutions that support product validation and performance analysis.
  • Configure, troubleshoot, and optimize data acquisition (DAQ) systems, sensors, and instrumentation used to measure temperature, pressure, flow, power, and torque.
  • Partner with test engineers to translate complex thermal testing requirements into reliable, scalable, and automated software workflows.
  • Build your expertise in industrial automation technologies, including PLC platforms, communication protocols, SQL databases, and engineering tools such as TIA Portal and LabVIEW through hands-on project work and mentorship.

What We're Looking For

  • Bachelor's degree in Mechanical Engineering, Electrical Engineering, Thermal/Energy Engineering, Computer Science, or a related field with 3 years of relevant expereince; alternatively, a recent Master's or PhD graduate with relevant project or industry experience.
  • Strong understanding of thermodynamics, heat transfer, fluid mechanics, or thermal systems, including the ability to interpret refrigeration cycles and performance calculations.
  • Proven experience developing software in C++, ideally within a Linux environment.
  • Working proficiency in C# for application development, graphical user interfaces, or engineering software tools.
  • Hands-on interest or experience working with laboratory equipment, sensors, instrumentation, and data acquisition systems.
  • A curiosity-driven mindset, strong problem-solving skills, and an eagerness to learn and grow in industrial automation, PLCs, SQL databases, LabVIEW, and communication protocols through training and mentorship.

What You'll Get from Us

  1. We promote from within and support your learning with mentoring, training, and access to global opportunities.
  2. You'll have flexibility, autonomy, and support to do your best work while maintaining a healthy work-life balance. Your well-being matters to us.
  3. We strive to create an inclusive work environment where people of all backgrounds are respected, and valued for who they are.
  4. You'll receive benefits like annual bonus, paid vacation, pension plans, personal insurance, and more. These vary by country and contract, but they're worth asking about-we think they're pretty great.


Ready to Make a Difference?

If this role excites you, we'd love to hear from you! Apply now to start the conversation and learn more about where your career can go with us.

All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, age, disability, veteran status, or other protected category.

Information at a Glance