{"id":32924,"date":"2026-05-28T09:31:02","date_gmt":"2026-05-28T09:31:02","guid":{"rendered":"https:\/\/www.tannerdewitt.com\/?post_type=career&#038;p=32924"},"modified":"2026-06-04T04:10:00","modified_gmt":"2026-06-04T04:10:00","slug":"company-secretarial-assistant","status":"publish","type":"career","link":"https:\/\/www.tannerdewitt.com\/zh-hant\/career\/company-secretarial-assistant\/","title":{"rendered":"Company Secretarial Assistant"},"content":{"rendered":"\n<div class=\"careers-detail-hero-container\" id=\"careers-detail-hero-container\">\n    <div class=\"flex flex-col gap-[10px]\">\n        <h2 class=\"hero-title !font-[400]\">Company Secretarial Assistant <span class=\"!normal-case\"><\/span><\/h2>\n        <a class=\"body1 font-roboto no-underline text-white normal-case font-bold\"\n            href=\"https:\/\/www.tannerdewitt.com\/zh-hant\/careers\/\">\n            <span class=\"sub\">\u4e8b\u696d\u767c\u5c55<\/span><\/a>\n\n    <\/div>\n    <a class=\"no-underline\" href=\"#careers-detail-contact-form-container\"> <button\n            class=\"hero-btn\">Apply Now<\/button><\/a>\n\n<\/div>\n\n\n<div class=\"careers-detail-content-container bg-[#F8F8F8]\" id=\"careers-detail-content-container\">\n    <div class=\"editor-wysiwyg career-details\">\n        <p>Tanner De Witt is an independent Hong Kong law firm offering a professional and friendly working environment.<\/p>\n<p>We are seeking a proactive and detail-oriented Company Secretarial Assistant to join our Corporate &amp; Commercial team. This is an excellent opportunity for a candidate with 2-4 years\u2019 relevant experience, or a highly organised individual with strong administrative skills who is keen to develop in this area.<\/p>\n<p><strong>Key Responsibilities<\/strong><\/p>\n<ul>\n<li>Assist in the full spectrum of company secretarial duties, including incorporation and ongoing maintenance of companies<\/li>\n<li>Prepare and maintain statutory records, registers and minute books<\/li>\n<li>Handle filings and ensure compliance with regulatory requirements<\/li>\n<li>Liaise with clients on company secretarial and administrative matters<\/li>\n<li>Support due diligence and client onboarding processes<\/li>\n<li>Assist with monthly billing and related administrative processes<\/li>\n<li>Provide general administrative support to the team and assist with ad hoc projects<\/li>\n<\/ul>\n<p><strong>Requirements<\/strong><\/p>\n<ul>\n<li>2-4 years\u2019 experience in company secretarial work is preferred, but not essential<\/li>\n<li>Strong administrative and organisational skills with excellent attention to detail<\/li>\n<li>Proactive, reliable and able to work both independently and as part of a team<\/li>\n<li>Good written and spoken English and Chinese<\/li>\n<li>Proficient in Microsoft Office applications<\/li>\n<\/ul>\n<p><strong>What We Offer<\/strong><\/p>\n<ul>\n<li>A supportive and professional working environment<\/li>\n<li>Exposure to a broad range of company secretarial matters<\/li>\n<li>Hands-on training<\/li>\n<li>Competitive remuneration and benefits package<\/li>\n<\/ul>\n<p>Interested applicants should email their CV and covering letter, including salary expectations, to the HR Manager by emailing <a href=\"mailto:careers@tannerdewitt.com\">careers@tannerdewitt.com<\/a> or apply via \u201cApply Now\u201d.<\/p>\n<p>Personal data collected will be used for recruitment purposes only.<\/p>\n    <\/div>\n<\/div>\n\n\n\n<div class=\"careers-detail-contact-form-container container !pt-[80px]\" id=\"careers-detail-contact-form-container\">\n    <div class=\"shadow-[0px_4px_20px_0px_rgba(0,0,0,0.10)] w-full h-full xl:flex max-w-[1360px] mx-auto\">\n        <div class=\"left-section\">\n            <div class=\"left-section-wrapper\">\n                <p class=\"heading3\">Job Application<\/p>\n                <span class=\"body1 flex items-center gap-[10px]\">\n                    <img decoding=\"async\" class=\"w-[24px] h-[24px]\"\n                        src=\"https:\/\/www.tannerdewitt.com\/wp-content\/themes\/tanner-de-witt\/images\/tdw-contact-form-phone-logo.png\"\n                        alt=\"phone logo\" \/>\n                                            <a class=\"no-underline\" href=\"tel:852 2573 5000\">\n                            +852 2573 5000                        <\/a>\n                                    <\/span>\n                <span class=\"body1 flex items-center gap-[10px]\">\n                    <img decoding=\"async\" class=\"w-[24px] h-[24px]\"\n                        src=\"https:\/\/www.tannerdewitt.com\/wp-content\/themes\/tanner-de-witt\/images\/tdw-contact-form-phone-logo1.png\"\n                        alt=\"phone logo\" \/>\n                                            <a class=\"no-underline\" href=\"tel:852 2802 3553\">\n                            +852 2802 3553                        <\/a>\n                                    <\/span>\n                <div class=\"body1 flex justify-start gap-[10px]\">\n                    <img decoding=\"async\" class=\"w-[24px] h-[24px] mt-[3px]\"\n                        src=\"https:\/\/www.tannerdewitt.com\/wp-content\/themes\/tanner-de-witt\/images\/tdw-contact-form-location-logo.png\"\n                        alt=\"location logo\" \/>\n                    <div class=\"xl:max-w-[286px]\">\n                        \u9999\u6e2f\u91d1\u9418\u7687\u540e\u5927\u9053\u677189\u865f\u529b\u5bf6\u4e2d\u5fc3\u7b2c\u4e00\u671f17\u6a13                    <\/div>\n                <\/div>\n                <span class=\"body1 flex items-center gap-[10px]\">\n                    <img decoding=\"async\" class=\"w-[24px] h-[24px]\"\n                        src=\"https:\/\/www.tannerdewitt.com\/wp-content\/themes\/tanner-de-witt\/images\/tdw-contact-form-email-logo.png\"\n                        alt=\"email logo\" \/>\n                    <a class=\"no-underline\" href=\"mailto:careers@tannerdewitt.com \">\n                        careers@tannerdewitt.com                     <\/a>\n                <\/span>\n            <\/div>\n        <\/div>\n\n        <div class=\"right-section\">\n            <div class=\"career-form\">\n                \n                                         <iframe  frameborder=\"0\" style=\"height:800px;width:99%;border:none;\" src='https:\/\/forms.zohopublic.com\/tannerdewitt\/form\/HRFormzhhant\/formperma\/Fd1J4SyyJ6MOE7JQJ4WMWKqN8YpmHN7EXfw-VgSgE04' >\n<\/iframe>\n                                    \n            <\/div>\n            <script>\n                (function () {\n                    document.addEventListener('DOMContentLoaded', function () {\n                        const selects = document.querySelectorAll('#careers-detail-contact-form-container form select');\n                        if (selects) {\n                            selects.forEach(select => {\n                                select.addEventListener('change', function () {\n                                    this.classList.add('value-selected');\n                                });\n                            });\n                        }\n                    });\n                })();\n            <\/script>\n            <script>\n                document.querySelector(\".zf-submitColor\").addEventListener(\"click\", function (e) {\n                    e.preventDefault();\n\n                    let valid = true;\n\n                    function showError(id, msg, inputSelector) {\n                        let el = document.getElementById(id);\n                        if (el) {\n                            el.style.display = \"block\";\n                            el.innerText = msg;\n                        }\n                        if (inputSelector) {\n                            document.querySelector(inputSelector).classList.add(\"input-error\");\n                        }\n                    }\n\n                    function hideError(id, inputSelector) {\n                        let el = document.getElementById(id);\n                        if (el) {\n                            el.style.display = \"none\";\n                        }\n                        if (inputSelector) {\n                            document.querySelector(inputSelector).classList.remove(\"input-error\");\n                        }\n                    }\n\n                    \/\/ First Name\n                    if (document.querySelector(\"[name='Name_First']\").value.trim() == \"\") {\n                        showError(\"Name_error\", \"First name and last name are required\", \"[name='Name_First']\");\n                        valid = false;\n                    } else {\n                        hideError(\"Name_error\", \"[name='Name_First']\");\n                    }\n\n                    \/\/ Last Name\n                    if (document.querySelector(\"[name='Name_Last']\").value.trim() == \"\") {\n                        showError(\"Name_error\", \"First name and last name are required\", \"[name='Name_Last']\");\n                        valid = false;\n                    } else {\n                        hideError(\"Name_error\", \"[name='Name_Last']\");\n                    }\n\n                    \/\/ Phone\n                    if (document.querySelector(\"[name='PhoneNumber_countrycode']\").value.trim() == \"\") {\n                        showError(\"PhoneNumber_error\", \"Phone number is required\", \"[name='PhoneNumber_countrycode']\");\n                        valid = false;\n                    } else {\n                        hideError(\"PhoneNumber_error\", \"[name='PhoneNumber_countrycode']\");\n                    }\n\n                    \/\/ Email\n                    let email = document.querySelector(\"[name='Email']\").value.trim();\n                    let emailPattern = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\n                    if (email == \"\" || !emailPattern.test(email)) {\n                        showError(\"Email_error\", \"Enter valid email\", \"[name='Email']\");\n                        valid = false;\n                    } else {\n                        hideError(\"Email_error\", \"[name='Email']\");\n                    }\n\n                    \/\/ Languages checkbox\n                    const langContainer = document.querySelector(\".zf-checkbox .zf-tempContDiv\");\n                    const langChecked = langContainer.querySelectorAll(\"input[name='Checkbox']:checked\").length;\n                    const langError = langContainer.querySelector(\".zf-errorMessage\");\n\n                    if (langChecked === 0) {\n                        langError.style.display = \"block\";\n                        langError.innerText = \"Please select at least one language\";\n                        valid = false;\n                    } else {\n                        langError.style.display = \"none\";\n                    }\n\n                    \/\/ File upload\n                    const fileContainer = document.querySelector(\"input[name='FileUpload']\").closest(\".zf-tempContDiv\");\n                    const fileInput = fileContainer.querySelector(\"input[name='FileUpload']\");\n                    const fileError = fileContainer.querySelector(\".zf-errorMessage\");\n\n                    if (fileInput && fileInput.files.length === 0) {\n                        fileError.style.display = \"block\";\n                        fileError.innerText = \"Please upload at least one file\";\n                        valid = false;\n                    } else {\n                        fileError.style.display = \"none\";\n                    }\n\n\n                    \/\/ Position\n                    if (document.querySelector(\"[name='SingleLine']\").value.trim() == \"\") {\n                        showError(\"SingleLine_error\", \"Position is required\", \"[name='SingleLine']\");\n                        valid = false;\n                    } else {\n                        hideError(\"SingleLine_error\", \"[name='SingleLine']\");\n                    }\n\n\n\n                    \/\/ Checkbox\n                    if (!document.getElementById(\"DecisionBox\").checked) {\n                        showError(\"DecisionBox_error\", \"You must accept the policy\", \"#DecisionBox\");\n                        valid = false;\n                    } else {\n                        hideError(\"DecisionBox_error\", \"#DecisionBox\");\n                    }\n\n                    if (valid) {\n                        document.getElementById(\"form\").submit();\n                    }\n                });\n                window.addEventListener('pageshow', function (event) {\n                    \/\/ This triggers on back\/forward navigation\n                    if (event.persisted || window.performance && window.performance.navigation.type === 2) {\n                        const form = document.getElementById('form');\n                        if (form) {\n                            form.reset();  \/\/ clears all inputs\n                            \/\/ Also remove error classes if any\n                            const errorInputs = form.querySelectorAll('.input-error');\n                            errorInputs.forEach(el => el.classList.remove('input-error'));\n                        }\n                    }\n                });\n            <\/script>\n        <\/div>\n    <\/div>\n<\/div>\n<script type=\"text\/javascript\">\n    var zf_DateRegex = new RegExp(\"^(([0][1-9])|([1-2][0-9])|([3][0-1]))[-](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)[-](?:(?:19|20)[0-9]{2})$\");\n    var zf_MonthYearRegex = new RegExp(\"^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)[-](?:(?:19|20)[0-9]{2})$\");\n    var zf_MandArray = [\"Name_First\", \"Name_Last\", \"PhoneNumber_countrycode\", \"Email\", \"SingleLine\", \"FileUpload\", \"DecisionBox\"];\n    var zf_FieldArray = [\"Name_First\", \"Name_Last\", \"PhoneNumber_countrycode\", \"Email\", \"Checkbox\", \"SingleLine\", \"FileUpload\", \"DecisionBox\"];\n    var isSalesIQIntegrationEnabled = false;\n    var salesIQFieldsArray = [];\n\n    (function () {\n        document.addEventListener(\"DOMContentLoaded\", () => {\n            \/\/ toggleOtherTextBoxOnCheckboxToggle();\n        })\n\n    })();\n\n    \/\/ function toggleOtherTextBoxOnCheckboxToggle() {\n    \/\/     const checkbox = document.querySelector(\"#Checkbox_others\");\n\n    \/\/     checkbox.addEventListener(\"change\", (event) => {\n    \/\/         const textInput = document.querySelector(\".zf-checkboxOthersInput\");\n    \/\/         textInput.classList.toggle(\"hidden\");\n    \/\/     })\n\n    \/\/ }\n<\/script>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are looking for Company Secretarial Assistant to join our team.<\/p>\n","protected":false},"featured_media":0,"template":"","tags":[21],"class_list":["post-32924","career","type-career","status-publish","hentry","tag-fulltime"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.tannerdewitt.com\/zh-hant\/wp-json\/wp\/v2\/career\/32924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tannerdewitt.com\/zh-hant\/wp-json\/wp\/v2\/career"}],"about":[{"href":"https:\/\/www.tannerdewitt.com\/zh-hant\/wp-json\/wp\/v2\/types\/career"}],"version-history":[{"count":4,"href":"https:\/\/www.tannerdewitt.com\/zh-hant\/wp-json\/wp\/v2\/career\/32924\/revisions"}],"predecessor-version":[{"id":32967,"href":"https:\/\/www.tannerdewitt.com\/zh-hant\/wp-json\/wp\/v2\/career\/32924\/revisions\/32967"}],"wp:attachment":[{"href":"https:\/\/www.tannerdewitt.com\/zh-hant\/wp-json\/wp\/v2\/media?parent=32924"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tannerdewitt.com\/zh-hant\/wp-json\/wp\/v2\/tags?post=32924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}