NUTRINTG toSFMC Config
- Sebastian Baltruszewicz
EC2 Instance Setup Instructions
After EC2 instance is created we have to perform several additional steps in order for it to be a part of the MULE application flow.
- Install AWC CLI. We can do it either by executing sudo yum install awscli or sudo apt install awscli in shell or by following steps described in https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html
- IAM User who runs EC2 instance has to have full access to S3. The access can be granted by infrastructre team or whoever who has enough access rights to perform this operation in AWS Console.
- Ask Epsilon team to whitelist IP address of the newly created instance, so it can access SFTP (set for this environment: DEV, TEST, PROD). Don`t forget to ask to have ports enabled too.
- Log in to EC2 instance through SSH and open connection to Epsilon SFTP so SFTP client can register keys.
- Install sshpass. It can by done with sudo yum install sshpass.
- Since communication with CDP sFTP is secured by SSH (RSA), keys should be installed on EC2 for each user.
- Import public & private PGP keys with gpg --import KeyFileName.
Create following directory structure in user home.
~/ current archive decrypted encrypted md5 passwds
- Inside ~/passwds directory create epsilon_sftp_user_login.txt files where epsilon_sftp_user_login is the login to Epsilon SFTP. Put a password for associated SFTP login into such a file.
- Import public key used to encrypt files sent to Epsilon: gpg --import KeyFileName
Key imported in a previous step has to be signed trusted with level 5:
Instruction on signing & trusting a keygpg --edit-key keyId > sign y > trust 5 > quit
Dostęp do serwera odbywa się przez SSH lub SFTP przy użyciu loginu i klucza RSA, na jedno z trzech kont:
- mule_amer - gdy integracja dotyczy regionu Amerykańskiego
- mule_eu - gdy integracja dotyczy regionu Europejskiego
- mule_sea - gdy integracja dotyczy regionu Azjatyckiego
AWS Setup
- Make sure EC2 has access to
- S3 bucket
- Athena database
- SES - Make sure Athena has access to the S3 bucket where it outputs CTAS query results.
- Make sure AWS Glue has access to S3 (has right roles or ACLs).
- Make sure that the MuleESB an instance can connect to EC2 through SSH (range of IPs from Mule have to be whitelisted on EC2).
Checklist before Rollout of new brandOrg
An example for STAGE environment:
- Files are available on Epsilon sFTP.
- Brandorgcode added to filter EP-272 - Getting issue details... STATUS
- EC2 can connect to Epsilon sFTP (IP whitelisting and proper password files as in "EC2 Instance Setup Instructions").
- EC2 is able to decrypt files (PGP keys).
- Script for /n deletion ( EP-249 - Getting issue details... STATUS ) is working
- EC2 can upload files to S3 (IAM user, S3 bucket appropriate to the environment).
- MULE is is deployed on appropriate envrionment (depending on region) on Cloudhub (e.g. EU-TEST-1 MULE account for tests).
- MULE can connect to EC2 instance.
- MULE can connect to MongoDB (cdp-dev database).
- Appropriate mapping is added to MongoDB collections.
- MULE can connect to Athena (cdp_to_sfmc_integration_dev database).
- Athena can access S3 (cdp-to-sfmc-integration-dev bucket).
- MULE can send files to SFMC.
- Automations processing sent files exist on SFMC.
Adding new BrandOrgCode dataset to the integration feed
Download initial load manually, add new brandOrgCode to configuration:
- Log onto ftp using eu account region PROD EU
- Explore to outgoing/initial_load/{country_code}
- Download 30 files(pgp|MD5) locally to your workstation(only files in main catalog/root not in sub-directories)
- Go back to outgoing make sure there is no other *.md5/pgp files otherwise you will have to store another incoming delta locally
- Get downloaded files from 3. to directory outgoing
- At anytime studio site choose region "eu prod1" and then process cdp-to-sfmc-integration-eu-prod
- It is also nice to download zip file of application if there would be an issue in the moment of uploading/deploying app
- Go to settings cdp-to-sfmc-integration-eu-prod
- At properties tab (equivalent of application properties) add new filter to new brandor code, it means we add(…|<brandor_code_val>) → MJNPOL process.filter.brandOrgCodeRegEx=brand_org_code_partition=(MJNMEX|MJNCAN)
- Click Apply changes
- App shall restart now
- For now there is a one cron with 1, click ‘run now’ Watch out, first init MUST be processed then delta in chronological order. Files should start download from outgoing, CHECK in logs if there is no errors
- Directory should appear at outgoing with data corresponding to date of INIT package
- At application.properties PROD on oneDrive shall be also updated(…|<brandor_code_val>)
- If ther would be any issue at Salesforce sided they will contact
Clean data:
- Log in ftp location
- Delete directory if there will any errors
- Run process again
//Delta lasts about 10min; init it is few hours i because of many GB of
Adding new region to the integration (data to be downloaded from new CDP sFTP)
Gdy zajdzie potrzeba dodania nowego regionu (podobnie do amer, eu, sea) należy wykonać następujące czynności:
- uzyskać od Epsilona login do SFTP odpowiadający temu regionowi + klucz do tego
- zlecić zespołowi infrastruktury utworzenie nowego użytkownika na C), nazwą odpowiadającego regionowi.
Na nowo utworzonym koncie muszą znaleźć się skrypty BASHowe opisywane wcześniej oraz musi powstać struktura katalogów w "current"
- uzyskać od zesp. infrastruktury login oraz klucz RSA potrzebny do łączenia się z tym kontem poprzez SSH
- zainstalować na powyższym koncie klucz który będzie używany przy komunikacji SSH
- zainstalować na powyższym koncie klucz PGP służący do deszyfrowania plików PGP
- zlecić zespołowi infrastruktury konfiguracę powyższego konta by miało dostęp do konta AWS i zasobów
- zlecić zespołowi infrastruktury utworzenie nowego bucketu w S3 odpowiadającego temu regionowi oraz dodać jego nazwę do local propertisów
- zlecić zespołowi infrastruktury utworzenie nowej bazy danych w Athenie oraz skonfigurować ją
- upewnić się że w bazie MongoDB znajdują się wpisy odpowiadające kodowi nowo dodawanego regionu oraz oczekiwanym brandom
- dodać zapytania atheny do resource-ów do katalogu odpowiadającego nowemu regionowi
- odpowiednio zmodyfikować local propertisy
- zdiplojować aplikację do CDP Middleware
- jeśli uda się uruchomić WORKGROUPy na Athenie to zespół infrastruktury musi również upewnić się że nowo utworzony bucket S3 oraz nowa baza
znajdują są prawidłowo skonfigurowane
Adding new fields to the feed
Before: Middleware Team should deliver to Platform Team updated SQL schemas.
Platform Team:
- Drop the table / tables in Amazon Athena
- Create new table/s containing new fields
- Update queries, including CTAS
Time estimation: 3h + testing = 1 manday
SFMC Team:
- Data extension update
- Automations update
Troubleshooting
Files for specific BrandOrgCode are not available on SFMC sFTP, although available in the files from CDP sFTP
Probably this BrandOrgCode wasn't added to the scope. Add it in the regexp "application-PROD.properties", separating by pipe "|" from both sides.
Manual restarting of the process for failed transfers ("Instrukcja dla delt")
Wejść na Epsilon FTP, używając rbnk_p_sfmcamer.
W katalogu "outgoing/tristan/" znajdują się katalogi z deltami.
Jeden po drugim należy:
- skopiować pliki z danego katalogu do katalogu "/outgoing" upewniając się że nie ma dam bierzącej delty.
- uruchomić proces w Mulu dla ameryki(poprzez schedule).
- gdy proces się skończy to powtórzyć operację dla pozostałych katalogów.
Na koniec należy puścić delty z kolejnych dni.
Not all files are available on CDP sFTP - exception on Mule
Może dojść do sytuacji gdy proces Mule uruchomi się w czasie gdy na SFTP nie ma wszystkich 30 plików ponieważ Epsilon nie wyrobił sie z ich wygenerowaniem.
W takiej sytuacji na EC2 middleware [AWS Cloud](cdp-sftp-prod.services.rbcloud.io) w katalogach "current/encrypted|md5" będą znajdować się pobrane pliki a na A) może powstać katalog archiwalny z pobranymi plikami.
Ponieważ nie ma wszystkich plików skrypt "1_download_files.sh" zwróci kod błędu co wygeneruje wyjątek w procesie Mule i nastąpi zakończenie procesu.
Rozwiązanie tego problemu jest następujące:
- na lokalną maszynę należy skopiować wszystkie 30 plików z A) dla dnia w którym powstał problem.
Może zajść konieczność kopiowania zarówno plików z katalogu "outgoing/" jak i "outgoing/archive/XYZ".
- gdy mamy wszystkie 30 plików to należy usunąć błędnie wygenerowany katalog archiwalnego "outgoing/archive/XYZ"
- usunąć pliki z katalogu "outgoing/"
- wgrać wszystie 30 plików do katalogu "outgoing/"
- wejść na C) i usunąć z katalogu "current/encrypted" oraz "current/md5" wszystkie pliki PGP oraz MD5
- na B) uruchomić Crona dla tego procesu, śledzić LOG aplikacji
Może się zdarzyć, np przez weekend, że w wyniku powyższego błędu na A) będzie ponad 30 plików ponieważ pojawią się pliki z nowszego zrzutu Epsilona.
W tym wypadku należy wykonać procedurę podobną do powyższej z tym że pliki należy pogrupować ze wzgędu na datę wygenerowanego zrzutu Epsilona.
Zatem powininiśmy mieć lokalnie, w jednym katalogu pliki z jednego dnia, a w innym katalogu pliki z innego dnia.
Gdy posprzątamy pliki z A) jak i C) to należy puścić proces na B) najpierw dla starszego zrzutu a następnie dla młodszego.
Trzeba pamiętać że nazwy katalogów archiwalnych odpowiadają części zawierającej datę i czas w nazwie pliku "customer" w zrzucie.
Lost connection between Middleware EC2 and CDP sFTP
It seems that there some problem on CDP sFTP (Epsilon) side. Procedure "Not all files are available on CDP sFTP - exception on Mule" should be applied.
Lost connection between Middleware EC2 and SFMC sFTP
OR - Restart of the whole process preceded by procedure "Not all files are available on CDP sFTP - exception on Mule" should be applied.
OR - Change filenames on S3 same way as code does and send files to SFMC sFTP.
ALBO puszczenie całego procesu od nowa(poprzedzone naprawieniem z pkt 1)
ALBO ręczne skopiowanie plików z S3, zmienienie im nazw i wysłanie do D)
ALBO zdiplojowanie do B) przerobionego procesu który zajmie się już tylko przesłaniem plików do D)
Może to wymagać ustawienia prawidłowego exportDate we flowVars i schowania kilku bloczków.
No space on C disc
Check if below is up-to-date:
Gateway domain: http://cdp-rb.com
52.94.248.112/28 52.95.255.128/28 52.58.0.0/15 52.28.0.0/16 52.57.0.0/16 52.29.0.0/16 54.93.0.0/16 18.194.0.0/15 35.156.0.0/14 18.153.0.0/16 18.196.0.0/15 18.184.0.0/15 3.120.0.0/14 3.124.0.0/14 52.95.248.0/24 52.46.184.0/22