/
NUTRINTG toSFMC Config

NUTRINTG toSFMC Config

EC2 Instance Setup Instructions

 Click here to expand...

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.

  1. 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
  2. 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.
  3. 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.
  4. Log in to EC2 instance through SSH and open connection to Epsilon SFTP so SFTP client can register keys.
  5. Install sshpass. It can by done with sudo yum install sshpass.
  6. Since communication with CDP sFTP is secured by SSH (RSA), keys should be installed on EC2 for each user.
  7. Import public & private PGP keys with gpg --import KeyFileName.
  8. Create following directory structure in user home.

    ~/
    	current
    		archive
    		decrypted
    		encrypted
    		md5
        passwds
  9. 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.
  10. Import public key used to encrypt files sent to Epsilon: gpg --import KeyFileName
  11. Key imported in a previous step has to be signed trusted with level 5:

    Instruction on signing & trusting a key
    gpg --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

 Click here to expand...
  1. Make sure EC2 has access to
    - S3 bucket
    - Athena database
    - SES
  2. Make sure Athena has access to the S3 bucket where it outputs CTAS query results.
  3. Make sure AWS Glue has access to S3 (has right roles or ACLs).
  4. 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

 Click here to expand...

An example for STAGE environment:

  1. Files are available on Epsilon sFTP.
  2. Brandorgcode added to filter  EP-272 - Getting issue details... STATUS
  3. EC2 can connect to Epsilon sFTP (IP whitelisting and proper password files as in "EC2 Instance Setup Instructions").
  4. EC2 is able to decrypt files (PGP keys).
  5. Script for /n deletion ( EP-249 - Getting issue details... STATUS ) is working
  6. EC2 can upload files to S3 (IAM user, S3 bucket appropriate to the environment).
  7. MULE is is deployed on appropriate envrionment (depending on region) on Cloudhub (e.g. EU-TEST‌-1 MULE account for tests).
  8. MULE can connect to EC2 instance.
  9. MULE can connect to MongoDB (cdp-dev database).
  10. Appropriate mapping is added to MongoDB collections.
  11. MULE can connect to Athena (cdp_to_sfmc_integration_dev database).
  12. Athena can access S3 (cdp-to-sfmc-integration-dev bucket).
  13. MULE can send files to SFMC.
  14. Automations processing sent files exist on SFMC.

Adding new BrandOrgCode dataset to the integration feed

 Click here to expand...

Download initial load manually, add new brandOrgCode to configuration:

  1. Log onto ftp using eu account region PROD EU 
  2. Explore to outgoing/initial_load/{country_code}
  3. Download 30 files(pgp|MD5) locally to your workstation(only files in main catalog/root not in sub-directories)
  4. Go back to outgoing make sure there is no other *.md5/pgp files otherwise you will have to store another incoming delta locally
  5. Get downloaded files from 3. to directory outgoing
  6. At  anytime studio site choose region "eu prod1" and then process cdp-to-sfmc-integration-eu-prod

  7. It is also nice to download zip file of application if there would be an issue in the moment of uploading/deploying app
  8. Go to settings cdp-to-sfmc-integration-eu-prod
  9. 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)
  10. Click Apply changes
  11. App shall restart now
  12. 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
  13. Directory should appear at outgoing with data corresponding to date of INIT package
  14. At application.properties PROD on oneDrive shall be also updated(…|<brandor_code_val>)
  15. If ther would be any issue at Salesforce sided they will contact


Clean data:

  1. Log in ftp location
  2. Delete directory if there will any errors
  3. 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)

 Click here to expand...

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

 Click here to expand...

Before: Middleware Team should deliver to Platform Team updated SQL schemas.

Platform Team:

  1. Drop the table / tables in Amazon Athena
  2. Create new table/s containing new fields
  3. Update queries, including CTAS

Time estimation:  3h + testing = 1 manday


SFMC Team:

  1. Data extension update
  2. Automations update

Troubleshooting

 Click here to expand...

Files for specific BrandOrgCode are not available on SFMC sFTP, although available in the files from CDP sFTP

 Click here to expand...

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")

 Click here to expand...

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

 Click here to expand...

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

 Click here to expand...

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

 Click here to expand...

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

Here are IP ranges for our applications:
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

on EC2 na eu-central-1