NIRA COCCA EPP DOMAINS HOSTING PROVISIONING

Spread the love

As a NIRA (.ng and .com.ng) Nigerian Internet Registration Association registrar using the CoCCA system, integrating WHMCS for automated domain and hosting provisioning after payment is crucial for efficiency and customer satisfaction. This document outlines detailed technical server requirements for both WHMCS and CoCCA, and provides a guide on setting up WHMCS for automatic provisioning with payment gateways like PayPal and Paystack.

 

1. Server Requirements

 

 

1.1 WHMCS Server Requirements

 

WHMCS is a PHP-based application that requires a robust web server environment. Here are the key requirements:

A. Operating System:

  • Linux (Recommended): CentOS, Ubuntu Server, or Debian. A minimal server installation is usually sufficient, with a focus on stability and security.
  • Windows (Supported but less common for production): Windows Server with IIS.

B. Web Server:

  • Apache (Recommended): Version 2.4 or later. Ensure mod_rewrite is enabled for clean URLs.
  • Nginx: A popular alternative, known for its performance. Requires proper configuration to work with PHP-FPM.

C. PHP:

  • Version: PHP 7.4 or later (as of June 2025, consider PHP 8.x for future compatibility and performance). Always refer to the latest WHMCS documentation for the most up-to-date supported PHP versions.
  • Required PHP Extensions:
    • PDO: PHP Data Objects, for database access.
    • cURL: Client URL Library, for API communication with registrars and payment gateways.
    • SimpleXML: For XML parsing, often used in API responses.
    • GD: Graphics Draw, for image manipulation (e.g., CAPTCHA).
    • JSON: JavaScript Object Notation, for data exchange.
    • Mbstring: Multibyte String Functions, for handling various character encodings.
    • OpenSSL: For SSL/TLS encryption.
    • IonCube Loader: Essential for running WHMCS, as it uses encoded files. Ensure the correct version for your PHP and server architecture.
    • Intl: Internationalization extension.
    • GMP (optional but recommended): GNU Multiple Precision, for certain cryptographic functions.
    • Exif (optional): Exchangeable Image File Format, for image metadata.
    • Zlib: Compression library.

D. Database:

  • MySQL: Version 5.6 or later.
  • MariaDB: A drop-in replacement for MySQL, version 10.1 or later.
  • Database User: A dedicated MySQL/MariaDB user with full privileges on the WHMCS database.
  • Character Set: UTF-8 or utf8mb4 for proper character handling, especially for international domain names.

E. Memory & Storage:

  • RAM: Minimum 2GB, 4GB or more recommended for optimal performance, especially with a growing client base and numerous integrations.
  • Disk Space: At least 2GB free space for WHMCS installation, logs, and potential future growth. More if you plan to store backups on the same server. SSD storage is highly recommended for faster database operations and overall system responsiveness.

F. Security:

  • SSL Certificate: Essential for securing all traffic to your WHMCS installation (HTTPS). This is crucial for protecting sensitive client and payment information. Use a valid, trusted SSL certificate.
  • Firewall: Configure a firewall (e.g., ufw on Ubuntu, firewalld on CentOS) to allow only necessary ports (HTTP/HTTPS, SSH, MySQL, etc.). Restrict SSH access to trusted IPs.
  • File Permissions: Set strict file permissions to prevent unauthorized access and modifications.
    • configuration.php: 400 or 440
    • Other files: 644
    • Directories: 755
  • Regular Security Updates: Keep the operating system, web server, PHP, MySQL, and WHMCS itself updated with the latest security patches.
  • Fail2Ban: Install and configure Fail2Ban to protect against brute-force attacks on SSH and web services.
  • Strong Passwords & Two-Factor Authentication (2FA): Implement strong password policies and enable 2FA for all administrative accounts.

G. Cron Job:

  • WHMCS relies heavily on a daily cron job for automation tasks such as invoicing, provisioning, suspension, termination, and domain synchronization. This cron job must be configured to run at least once every 24 hours.

 

1.2 CoCCA System Requirements (as a Registrar Integration)

 

The CoCCA system, being ICANN approved, typically runs on its own highly specialized and secure infrastructure provided by CoCCA or a designated service provider. As a registrar integrating with CoCCA, you will primarily interact with their API. Therefore, your WHMCS server’s requirements are focused on being able to communicate with the CoCCA API securely and efficiently.

However, if you are running a local instance of any CoCCA components (which is less common for typical registrars and more for CoCCA itself or large registries), their general recommendations include:

  • Operating System: Ubuntu Server LTS (e.g., 24.04 LTS).
  • RAM: 16GB.
  • CPU: 8 cores.
  • HDD: 150GB.
  • Database: Latest PostgreSQL (e.g., PostgreSQL 17).
  • Java Development Kit (JDK): JDK 1.8 (or higher as specified by CoCCA).
  • Application Server: Resin 4.0.x (or as specified).
  • Firewall: Strict firewall rules (ports 22, 53, 80, 443, 700).
  • Security: Strong SSH configurations, Fail2Ban, SSL/TLS.
  • DNS: Recommendations for hidden master, anycast DNS, DNSSEC signing.
  • Backup & Replication: Robust backup strategies including streaming replication for zero-loss failover and offsite backups.

For your WHMCS setup, the crucial CoCCA requirement is having a compatible WHMCS registrar module that communicates with the CoCCA API. This module will handle the specific communication protocols (likely EPP – Extensible Provisioning Protocol) and data formatting required by CoCCA. You will need:

  • CoCCA API Credentials: API key, username, password, and potentially certificate files (key.pem, cert.pem) if CoCCA uses client-side SSL authentication for API access.
  • Network Connectivity: Your WHMCS server must be able to establish secure outbound connections (HTTPS, and potentially custom EPP ports if CoCCA uses them) to the CoCCA API endpoints.
  • CoCCA WHMCS Registrar Module: This is the bridge. You’ll either use a pre-built module provided by CoCCA, a third-party developer (like those mentioned on GitHub for .co.za which uses EPP, a similar protocol to what .ng might use through CoCCA), or develop a custom module.

 

2. Installing WHMCS for Automatic Provisioning

 

This section outlines the general steps for installing WHMCS and configuring it for automatic domain and hosting provisioning upon payment.

 

2.1 Pre-Installation Steps

 

  1. Obtain a WHMCS License: Purchase a legitimate WHMCS license from their official website or an authorized reseller.
  2. Choose a Domain/Subdomain: Decide where WHMCS will be accessible (e.g., billing.yourdomain.com or yourdomain.com/clientarea).
  3. Set up Database: Create a new MySQL/MariaDB database and a dedicated user with full permissions for this database. Note down the database name, username, and password.
  4. SSH/FTP Access: Ensure you have SSH access (recommended for efficiency and security) or FTP/SFTP access to your server.

 

2.2 WHMCS Installation Process

 

  1. Download WHMCS: Log in to your WHMCS client area and download the latest stable version of WHMCS.
  2. Upload to Server:
    • Via SSH: Upload the WHMCS .zip file to your chosen directory (e.g., /var/www/html/billing/) using scp or wget.
    • Via FTP/SFTP: Upload the .zip file to the public HTML directory (e.g., public_html or a subdirectory).
  3. Extract Files:
    • Via SSH: unzip whmcs_vX.X.zip (replace with actual filename).
    • Via cPanel File Manager: Use the “Extract” feature.
  4. Rename configuration.php.new: Navigate to the extracted WHMCS directory. Rename configuration.php.new to configuration.php.
  5. Set File Permissions:
    • chmod 400 configuration.php (or 440)
    • chmod 644 * (for all other files)
    • chmod 755 */ (for all directories)
    • Make the attachments, downloads, templates_c, and assets/css/admin directories writable (e.g., chmod 777 temporarily during installation, then tighten to 755 or 700 if possible after installation).
  6. Run the Installer: Open your web browser and navigate to the WHMCS installation URL (e.g., http://billing.yourdomain.com/install/install.php).
  7. Follow On-Screen Prompts:
    • Accept the license agreement.
    • WHMCS will perform a system compatibility check. Address any warnings or errors by adjusting your server environment.
    • Enter your WHMCS license key.
    • Enter your database details (hostname, database name, username, password).
    • Create your WHMCS administrator account.
  8. Delete install directory: After successful installation, delete the install directory from your WHMCS root for security reasons.

 

2.3 Setting up Payment Gateways (PayPal, Paystack)

 

WHMCS integrates with numerous payment gateways.

 

2.3.1 PayPal Integration

 

WHMCS supports various PayPal integrations. The recommended and most modern integration is PayPal Payments which uses PayPal’s latest secure tokenization system for recurring payments and vaulting.

  1. Activate PayPal Payments:
    • Log in to your WHMCS Admin Area.
    • Go to Configuration () > Apps & Integrations (or Setup > Payments > Payment Gateways in older versions).
    • Choose the Payments category.
    • Find PayPal Payments in the list and click Activate & Configure.
  2. Link PayPal Account:
    • Click Link PayPal Account. You will be redirected to PayPal’s website.
    • Log in to your PayPal merchant account (or sandbox account for testing).
    • Grant permission for WHMCS to access your PayPal account.
    • You will be redirected back to WHMCS, and your API credentials will be automatically populated.
  3. Configure Settings:
    • Display Name: Enter a name that clients will see on the order form (e.g., “Pay with PayPal”).
    • Show on Order Form: Check this box to display the payment method during checkout.
    • Test Mode: Uncheck this for live environments (leave checked for testing).
    • Save Changes.
  4. Instant Payment Notification (IPN): While PayPal Payments often handles callbacks automatically, it’s good practice to ensure IPN is configured in your PayPal account to communicate payment status updates to WHMCS.
    • Log in to your PayPal account.
    • Go to Account Settings > Notifications > Instant Payment Notifications.
    • Ensure IPN is enabled and the Notification URL is set to your WHMCS installation’s IPN URL (e.g., https://yourdomain.com/whmcs/modules/gateways/callback/paypal.php). WHMCS typically provides this URL in the PayPal module configuration.

 

2.3.2 Paystack Integration

 

Paystack is a popular payment gateway in Nigeria. WHMCS does not include a Paystack module by default, but there are official or community-developed modules available.

  1. Obtain Paystack WHMCS Module:
    • Search the WHMCS Marketplace for “Paystack”.
    • Check Paystack’s official documentation for their recommended WHMCS integration.
    • You might find a module like “Paystack Payment Gateway for WHMCS” on the marketplace.
  2. Install the Module:
    • Download the Paystack WHMCS module (usually a .zip file).
    • Unzip the file. It will typically contain a folder (e.g., paystack) with PHP files.
    • Upload this folder to your WHMCS installation’s modules/gateways/ directory.
  3. Activate Paystack Gateway:
    • Log in to your WHMCS Admin Area.
    • Go to Configuration () > Apps & Integrations (or Setup > Payments > Payment Gateways).
    • Find the Paystack module in the list and click Activate.
  4. Configure API Keys:
    • Log in to your Paystack Dashboard.
    • Navigate to Settings > API Keys & Webhooks.
    • Copy your Public Key and Secret Key.
    • Paste these keys into the corresponding fields in the Paystack module configuration in WHMCS.
  5. Configure Webhook URL:
    • In the Paystack module configuration in WHMCS, you will find a Webhook URL.
    • Copy this URL.
    • Go back to your Paystack Dashboard (Settings > API Keys & Webhooks) and paste this URL into the Webhook URL field. Save changes on Paystack. This is critical for Paystack to notify WHMCS of payment successes.
  6. Additional Settings: Configure other settings like display name, currency, and test mode as required.
  7. Save Changes.

 

2.4 Setting up Domain Provisioning with CoCCA (.ng, .com.ng)

 

This is the most critical part for a NIRA registrar. You will need a WHMCS registrar module that can communicate with the CoCCA system for .ng and .com.ng domains.

  1. Obtain/Develop CoCCA WHMCS Registrar Module:
    • Check CoCCA Resources: CoCCA might offer or recommend a WHMCS module for their system.
    • NIRA Specific Modules: Explore if NIRA or other Nigerian registrars have developed and made available a WHMCS module specifically for .ng domains that integrates with CoCCA. (e.g., “DOT NG (Nigeria ccTLD) Domain Reseller WHMCS Module” by Garanntor, mentioned in search results, seems to be a good candidate).
    • Generic EPP Module: CoCCA uses EPP. A generic EPP WHMCS module (like the one by Namingo/getpinga on GitHub) could potentially be adapted or used if it supports the specific EPP commands and extensions used by CoCCA for .ng domains. This might require custom development or configuration.
    • Custom Development: If no suitable off-the-shelf module exists, you will need to develop a custom WHMCS registrar module. This involves understanding the WHMCS Registrar Module API and the CoCCA EPP API specifications for .ng domains.
  2. Install the CoCCA/NIRA WHMCS Registrar Module:
    • Download the module files.
    • Extract the module folder (e.g., cocca or ngregistrar) into your WHMCS installation’s modules/registrars/ directory.
    • If the module requires specific certificate files (key.pem, cert.pem) for EPP communication, ensure they are placed in the module’s directory as per the module’s instructions.
  3. Activate and Configure the Module:
    • Log in to your WHMCS Admin Area.
    • Go to Configuration () > System Settings > Domain Registrars.
    • Find your installed CoCCA/NIRA module in the list and click Activate.
    • Click Configure for the activated module.
    • Enter API Credentials: This will typically include your CoCCA API username, password, and any specific API keys or client IDs provided by CoCCA for your registrar account.
    • EPP Host/Port: Configure the CoCCA EPP server hostname and port (e.g., epp.cocca.org and port 700, or as specified by CoCCA for .ng).
    • Test Mode: Ensure you configure the module for the correct environment (live or test/OTE).
    • Save Changes.
  4. Set up Domain Pricing:
    • Go to Configuration () > System Settings > Domain Pricing.
    • Add .ng and .com.ng (and any other relevant .ng TLDs like .org.ng, .net.ng, etc.) to the list of supported TLDs.
    • For each TLD, click the Pricing button.
    • Enter your desired registration, transfer, and renewal prices for various years.
    • Under Auto Registration, select your CoCCA/NIRA registrar module. This tells WHMCS to use this module for automatic registration of these TLDs upon successful payment.
    • Enable EPP Code for transfers.
    • Enable DNS Management if you want clients to manage DNS records via WHMCS.
    • Save Changes.
  5. Configure Domain Sync (Crucial for status and expiry updates):
    • Go to Configuration () > System Settings > Automation Settings.
    • Scroll down to Domain Sync Settings.
    • Enable Domain Sync Cron. This is what the daily WHMCS cron job will use to synchronize domain statuses, expiry dates, and next due dates with your CoCCA registrar.
    • Configure the frequency and other sync options as desired. This ensures that a domain’s status in WHMCS (e.g., Active, Expired) accurately reflects its status at the CoCCA registry.

 

2.5 Setting up Hosting Provisioning

 

WHMCS automates hosting provisioning by integrating with web hosting control panels like cPanel, Plesk, or DirectAdmin.

  1. Configure Hosting Servers:
    • Go to Configuration () > System Settings > Servers.
    • Click Add New Server.
    • Enter the server name, hostname, IP address, and choose the server type (e.g., cPanel).
    • Enter the server’s root or reseller API credentials (username and password/API token).
    • Test the connection to ensure WHMCS can communicate with your hosting server.
    • Add multiple servers if you have a cluster or multiple hosting locations.
  2. Create Hosting Products:
    • Go to Configuration () > System Settings > Products/Services.
    • Click Create a New Group (e.g., “Shared Hosting”).
    • Click Create a New Product.
    • Product Type: Choose “Shared Hosting” (or “Reseller Hosting,” “VPS,” etc.).
    • Details Tab: Enter product name, description, and pricing (one-time, recurring).
    • Module Settings Tab:
      • Module Name: Select your hosting control panel module (e.g., cPanel).
      • Server Group: Select the server group you configured earlier.
      • WHM Package Name: Enter the exact name of the package (e.g., “gold_package”) that you have created in your cPanel/WHM server. This package defines the resources allocated to the hosting account.
      • Automatic Setup: Crucially, select “Automatically setup the product as soon as an order is placed” or “Automatically setup the product as soon as the first payment is received”. For immediate provisioning after payment, choose the latter.
    • Configure other tabs like Custom Fields, Configurable Options, Upgrades, etc., as needed.
    • Save Changes.

 

2.6 Automatic Provisioning Workflow (Payment to Service Delivery)

 

When a customer places an order on your WHMCS client area and makes a successful payment using PayPal or Paystack:

  1. Order Placement: The customer selects a domain name (.ng or .com.ng) and/or a hosting package.
  2. Payment Processing:
    • The customer is redirected to PayPal or Paystack’s secure payment page.
    • Upon successful payment, PayPal/Paystack sends an Instant Payment Notification (IPN) or webhook callback to WHMCS.
  3. WHMCS Invoice Status Update: WHMCS receives the IPN/webhook, validates the payment, and updates the corresponding invoice status to “Paid.”
  4. Automatic Domain Provisioning:
    • Because you set the .ng and .com.ng TLDs to use your CoCCA/NIRA registrar module for “Auto Registration” in Domain Pricing, WHMCS triggers an API call to the CoCCA system (via your module).
    • The module sends the EPP command to register the domain with the CoCCA registry.
    • CoCCA processes the request and provides a response.
    • Your WHMCS module updates the domain’s status in WHMCS (e.g., “Active”).
    • WHMCS can then automatically send domain registration confirmation emails to the client.
  5. Automatic Hosting Provisioning:
    • Since you configured the hosting product to “Automatically setup the product as soon as the first payment is received,” WHMCS triggers an API call to your cPanel/Plesk server.
    • The hosting module creates the new hosting account on the designated server using the specified WHM package.
    • Upon successful account creation, WHMCS updates the hosting service status to “Active.”
    • WHMCS sends a “Welcome Email” to the client with hosting account details (cPanel login, nameservers, etc.).

 

3. Important Considerations for NIRA Registrars and CoCCA

 

  • CoCCA EPP Specifics: Ensure your chosen or developed WHMCS registrar module fully supports the specific EPP commands, extensions, and data structures required by the CoCCA system for .ng domains. This includes handling domain registration, transfer, renewal, contact updates, nameserver management (glue records), and EPP code retrieval.
  • API Credentials Security: Store your CoCCA API credentials securely within WHMCS and on your server. Avoid hardcoding them in files directly accessible from the web.
  • Error Handling and Logging: Implement robust error handling and logging within your CoCCA module to diagnose issues with domain provisioning. WHMCS’s module debug log can be invaluable.
  • Testing Environment: Set up a separate staging/development environment for WHMCS to thoroughly test all integrations (payment gateways, CoCCA module, hosting provisioning) before deploying to live. Utilize CoCCA’s OTE (Operational Test and Evaluation) environment if available for testing domain registrations.
  • Compliance: As an ICANN-approved CoCCA registrar, ensure your WHMCS setup and processes comply with all NIRA and ICANN policies, including WHOIS data accuracy, data retention, and dispute resolution.
  • Scalability: As your client base grows, ensure your server infrastructure can handle the increased load. Consider using a dedicated server or VPS with sufficient resources.
  • Backups: Implement a comprehensive backup strategy for your entire WHMCS installation (files and database) and your hosting servers.
  • Support: Maintain good communication channels with CoCCA support and WHMCS support for any technical issues or integration challenges.
  • Custom Development: If you need to develop a custom CoCCA module, consider hiring experienced WHMCS module developers who are familiar with EPP and registrar integrations.

By following these guidelines, you can establish a robust and automated system for domain and hosting provisioning, enhancing your registrar operations and providing a seamless experience for your customers.

yes

You’re on the right track! Given that it’s currently June 2025, WHMCS has continued to evolve, and the latest stable version (as per search results) is WHMCS 8.13, which offers support for PHP 8.3. This is an important update for security and performance.

The detailed technical document I provided earlier covers the essential server requirements for WHMCS and the CoCCA integration, along with the installation and configuration steps.

Here’s a quick recap and a few emphasized points based on the latest information and your context as a NIRA registrar:

 

Key Takeaways and Emphasized Points (June 2025)

 

  • WHMCS PHP Version: As of June 2025, WHMCS 8.13 supports PHP 8.3. While PHP 7.4, 8.1, and 8.2 are still supported by WHMCS, it’s highly recommended to use PHP 8.3 for new installations or upgrade existing ones for the best performance and security, along with ionCube Loader 14.4.0 or higher.
  • WHMCS Latest Version: Always aim for the latest stable WHMCS version (currently 8.13). Keep your WHMCS installation updated to benefit from security patches and new features.
  • CoCCA Registrar Module: This is the most crucial piece for .ng and .com.ng domains.
    • Prioritize Official/NIRA-endorsed Modules: Before attempting custom development or generic EPP modules, thoroughly investigate if NIRA or CoCCA provides or officially recommends a WHMCS registrar module for .ng domains. This would be the most reliable and compliant approach.
    • EPP Compliance: Reiterate that the module must correctly implement the CoCCA EPP API for domain registration, renewal, transfer, and management. This includes handling specific CoCCA requirements for contact data, nameservers, and any other unique attributes for .ng domains.
    • Certificates: If CoCCA’s EPP API requires client-side SSL certificates for authentication, ensure your module properly handles these, and that the certificate files are securely stored and correctly referenced in the module configuration.
  • Payment Gateways (Paystack & PayPal):
    • Paystack: Continue to use a dedicated Paystack WHMCS module from the WHMCS Marketplace or Paystack’s official resources. The setup process involves API keys and, critically, setting up the webhook URL in your Paystack dashboard to ensure real-time payment notifications to WHMCS.
    • PayPal Payments: This is the recommended PayPal integration in WHMCS. It leverages the latest secure tokenization and allows for better recurring payment handling.
  • Security: This remains paramount.
    • SSL Certificate (HTTPS): Mandatory for all WHMCS installations.
    • Firewall: Strict rules to allow only necessary ports.
    • File Permissions: Re-emphasize configuration.php at 400 and other files/directories as recommended by WHMCS documentation.
    • Regular Updates: Keep WHMCS, PHP, MySQL/MariaDB, and the underlying OS updated.
    • Fail2Ban, Strong Passwords, 2FA: Essential for protecting your admin area.
  • Automation Settings: Ensure the “Automatically setup the product as soon as the first payment is received” option is selected for both domain and hosting products in WHMCS for true immediate provisioning.
  • Domain Sync: Configure the Domain Sync cron job in WHMCS to run daily. This keeps your WHMCS domain expiry dates and statuses in sync with the CoCCA registry.

The document previously provided is comprehensive, and these added points simply reinforce some of the critical aspects given the current date and ongoing software updates. You are well-equipped to proceed with your WHMCS and CoCCA integration for automated domain and hosting services.

FAQs

Frequently Asked Questions

What is a Premium Domain Name?   A premium domain name is the digital equivalent of prime real estate. It’s a short, catchy, and highly desirable web address that can significantly boost your brand's impact. These exclusive domains are already owned but available for purchase, offering you a shortcut to a powerful online presence. Why Choose a Premium Domain? Instant Brand Boost: Premium domains are like instant credibility boosters. They command attention, inspire trust, and make your business look established from day one. Memorable and Magnetic: Short, sweet, and unforgettable - these domains stick in people's minds. This means more visitors, better recall, and ultimately, more business. Outshine the Competition: In a crowded digital world, a premium domain is your secret weapon. Stand out, get noticed, and leave a lasting impression. Smart Investment: Premium domains often appreciate in value, just like a well-chosen piece of property. Own a piece of the digital world that could pay dividends. What Sets Premium Domains Apart?   Unlike ordinary domain names, premium domains are carefully crafted to be exceptional. They are shorter, more memorable, and often include valuable keywords. Plus, they often come with a built-in advantage: established online presence and search engine visibility. How Much Does a Premium Domain Cost?   The price tag for a premium domain depends on its desirability. While they cost more than standard domains, the investment can be game-changing. Think of it as an upfront cost for a long-term return. BrandBucket offers transparent pricing, so you know exactly what you're getting. Premium Domains: Worth the Investment?   Absolutely! A premium domain is more than just a website address; it's a strategic asset. By choosing the right premium domain, you're investing in your brand's future and setting yourself up for long-term success. What Are the Costs Associated with a Premium Domain?   While the initial purchase price of a premium domain is typically higher than a standard domain, the annual renewal fees are usually the same. Additionally, you may incur transfer fees if you decide to sell or move the domain to a different registrar. Can I Negotiate the Price of a Premium Domain? In some cases, it may be possible to negotiate the price of a premium domain. However, the success of negotiations depends on factors such as the domain's demand, the seller's willingness to negotiate, and the overall market conditions. At BrandBucket, we offer transparent, upfront pricing, but if you see a name that you like and wish to discuss price, please reach out to our sales team. How Do I Transfer a Premium Domain?   Transferring a premium domain involves a few steps, including unlocking the domain, obtaining an authorization code from the current registrar, and initiating the transfer with the new registrar. Many domain name marketplaces, including BrandBucket, offer assistance with the transfer process.