Onboarding
1. Prerequisites & Access Setup
Reference Ticket: INFR-35741
Before starting local development, ensure the following access items are provisioned and working (in order):
LDAP Registration — Required for all internal authentication. (https://zetaglobal.atlassian.net/wiki/x/B_U3B )
JFrog Access — Required for pulling packages and Docker images. Set up identity tokens as part of this step.
SSO Access — Enables single sign-on to internal tools.
VPN Access — Required before accessing any internal URLs. (Accounts: VPN )
GitLab Access — https://gitlab.infr.zglbl.net/ (You must be connected to VPN first.)
2. Useful Resources
Here are some key pages to help you get up to speed with ZMP:
Resource | Description |
|---|---|
This module provides a deep dive into ZMP’s end-to-end architecture, systems, and processes. | |
Common setup issues and fixes — check here if you hit errors. | |
References and details for JIRA Instances available within Zeta Global that are most used by Zeta Employees |
3. ZMP Local Environment Setup
General Guidelines
Each project has its own README with setup instructions — always read it first.
Verify that your JFrog access and identity tokens are configured correctly before running any install commands.
Ensure Docker is installed, running, and has sufficient disk space — the setup pulls many images.
Set up each application in the order listed below, as there are dependencies between them.
If you hit errors during setup, check the ZMP Troubleshooting Guide .
2.1 FE Server
What it does: Acts as the proxy/gateway for the FE App. Contains proxy configuration that forwards requests to the BME App.
Repository: https://gitlab.infr.zglbl.net/zeta-crm/zme/fe-server
Initial Setup:
Please execute the steps outlined in the Prerequisites section of the README.md file in the fe-server project before proceeding. Ensure the declarations in your ~/.npmrc file follow the specified order, as an incorrect sequence may result in a Not Found error.
Running the app:
pnmpinstall— Install npm dependenciesdocker compose up -d— Starts service dependencies
pnmp dev— Starts the server pointed at the Phoenix environment (default).pnpm dev:local-bme— Starts the server pointed at your local BME instance.Lastly, visit https://bme-fe.zetaglobal.net and log in using your phoenix credentials
2.2 FE App
What it does: The core UI implementation of ZMP. Almost all pages in ZMP are located in this project.
Repository: https://gitlab.infr.zglbl.net/zeta-crm/zme/fe-app
Running the app:
yarninstall— Install npm dependencies
yarn dev— Starts the serverEnsure fe-server is running locally, visit https://bme-fe.zetaglobal.net and log in using your phoenix credentials
2.3 BME App
What it does: The backend core of ZMP. Acts as the gateway for various microservices in the ZMP ecosystem, communicating via Thrift.
Repository: https://gitlab.infr.zglbl.net/zeta-crm/zme/bme-app
Connecting to local BME:
By default, FE Server points to the Phoenix environment. To use your local BME instead, restart FE Server with
yarn run dev:local-bme.
Local OAuth bypass (required for local authentication):
Set up an Auth0 user as described in the README — use your own email address.

Modify
omniauth_callbacks_controller.rbwith the details from step 1.

Restart the application.
2.4 People Service
What it does: Microservice responsible for people/subscriber features. Stores people definitions and identity data within the ZMP ecosystem.
Repository: https://gitlab.infr.zglbl.net/zeta-crm/zmp/people-service
Running locally (exposed to other Docker components):
bash
docker run --network people-service-local --name people-service --rm -ti \
-p 8000:8000 \
people-service gunicorn_thrift zh_people_service.people.thrift.server:app --bind 0.0.0.0:8000
Connecting BME to local People Service:
Modify the Thrift config file in BME to point to your local People Service instead of the Phoenix environment.
