Tuesday, March 13, 2018

Salesforce Marketing Cloud: How to Reactivate Held Subscriber

In order to change a subscriber's status from Held (undeliverable) back to Active, you will first need to change their status to unsubscribed.
Once they are in a unsubscribed status, you will have the ability to change their record back to active. 

To reactivate within the application (individual subscribers)
1. Log in to the Marketing Cloud application
2. Go to 
Email Studio Email | Subscribers | All Subscribers
3. Click the Search button
4. Select 
Email Address from the Search where: drop-down field
5. Enter the subscriber's email address in the 
Is equal to: field and click the Find Now button
6. Click to highlight the subscriber from the search results list and click the 
View Properties link
7. In the 
General tab, click the Unsubscribe from all button
8. Click the 
OK button in the dialog box
9. In the 
General tab, click the Activate button (activates only on the All Subscribers list) 
10. To activate the subscriber on individual lists, select the 
List tab. 
11. Select the desired list and click the 
Details button 
12. Click the 
Activate button to reactivate the subscriber on the specified list 
13.  Click the 
OK button in the dialog box to exit
***NOTE: To reactivate the subscriber on other lists, repeat steps 10-12 for each list.***

To reactivate via an import (multiple subscribers)
1. Log in to the Marketing Cloud application
2. Go to 
Email Studio Email | Subscribers | Lists or All Subscribers
3. Click the linked name of the list in question (if sublist)
4. Click the 
Search button
5. Select 
Subscriber Status from the Search where: drop-down field
6.Select Undeliverable from the Is equal to: drop-down field and click the 
Find Now button
7. Click the 
Export option
8. Complete the wizard to export the subscribers to a file, selecting the 
Email Address and Subscriber Status fields to be included in the results
9. Edit the exported file and change the 
Email Status field values to Unsubscribed for every subscriber on the list that needs updated 
10. Perform an import to the 
All Subscribers list selecting either Add & Update or Update. This will change their status to unsubscribed for all lists.
11. Edit the export file again and this time change the 
Email Status field to Active for every subscriber on the list that needs updated
12. Perform an import to the 
All Subscribers list selecting either the Add & Update or Update. This will change their status to active for all lists. 
13. Perform an import to any other desired lists to change the subscriber status to 
Active at the list level.

Source : https://help.salesforce.com/articleView?id=000268698&language=en_US&type=1

Monday, February 19, 2018

SalesForce Marketing Cloud - System level variables

Hey All

A quick reference guide for system variables which are always hand to know :

view online = %%view_email_url%%
email address = %%emailaddr%%
name of campaign = %%emailName_%%
forward to a friend = %%ftaf_url%%
unsubscribe = %%unsub_center_url%%
profile center = %%profile_center_url%%
subscription center = %%subscription_center_url%%
sender reply name = %%replyname%%
sender reply email address = %%replyemailaddress%%
business name = %%Member_Busname%%
business address = %%Member_Addr%%
business city = %%Member_City%%
business state = %%Member_State%%
business postal code = %%Member_PostalCode%%
business country = %%Member_Country%% 

And its always good to know how to work with URLS in your e-mail :

URL from list href="%%=RedirectTo(variable)=%%"

Variable as URL parameter

Variable as part of the URL
%%[set @url = concat("https://bob.co.za/",variable)]%%

Remove tracking from a URL
href="%%=concat('link you do NOT want to track')=%%"

Stay tuned as there is so much more to come.

May the force be with you.

Kind Regards

Friday, February 9, 2018

SalesForce Marketing Cloud - Ampscript

Hi All

Below I have added simple coupon code implementation using ampscript.

Some important points to note:

  1. I have the messagecontext as preview - when sending it should be send
  2. My data extension is called Coupons ( this should be replaced with your own if needed)
  3. This is merely a skeleton and you can write so much more to the data extension :-)

var @em, @couponRow, @couponCode
if _messagecontext == "PREVIEW" then
set @couponCode = "XX TEST XX"

/* include your sendable attribute/column here */
set @em = AttributeValue("emailAddr")

set @couponRow = ClaimRow("Coupons", "IsClaimed", "EmailAddress", @em)

if empty(@couponRow) then

/* You can do other error handling here if you want.*/
/* This aborts the send */
RaiseError("No coupons available", false)

SET @couponCode = Field(@couponRow, "CouponCode")


Here's your coupon code: %%=v(@couponCode)=%%

My the force be with you.

Kind Regards


Hey All

So in the midst of the crazy rat race one does not always get the opportunity to blog as much as I did before...but as an advocate for knowledge share I  dedicating more time to sharing my many tech adventures in an ever quest to support our global tech community.

Stay tuned as I will be posting more solutions soon.

Kind Regards
J Slinger

Friday, November 21, 2014

ConfigEntine task "wp-create-ldap" failed with SOAP connector problem.

[timestamp] ssl.default.password.in.use.CWPKI0041W
[timestamp] ssl.disable.url.hostname.verification.CWPKI0027I
[timestamp] Client code attempting to load security configuration
[timestamp] ssl.certificate.end.date.invalid.CWPKI0312E
Could not access WebSphere profile using: username=wpsadmin password=PASSWORD_REMOVED portNumber=10025 hostname=myportalserver.ibm.com
com.ibm.websphere.management.exception.ConnectorException: ADMC0016E: The system cannot create a SOAP connector to connect to host myportal.mycompany.com at port 10025.
at com.ibm.websphere.management.AdminClientFactory.createAdminClientPrivileged(AdminClientFactory.java:628)
at com.ibm.websphere.management.AdminClientFactory.access$000(AdminClientFactory.java:122)
Caused by: java.lang.reflect.InvocationTargetException
Caused by: com.ibm.websphere.management.exception.ConnectorNotAvailableException: [SOAPException: faultCode=SOAP-ENV:Client; msg=Error opening socket: javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.g: PKIX path validation failed: java.security.cert.CertPathValidatorException: The certificate expired at Fri Aug 19 05:01:01 EDT 2011; internal cause is:
java.security.cert.CertificateExpiredException: NotAfter: Tue Oct 01 05:01:01 EDT 2014;

Using wsadmin to connect the server with type SOAP, the same exceptions prevented the correct connection.


The default chained certificate has problems.

Resolving the problem

In WebSphere Application Server (WAS) version 7, a default chained certificate was introduced as a personal certificate. This certificate was created during profile set up and should be valid for a year. It should be renewed when its validity date expires.
When running ConfigEngine, it acts as a client that connects to the server through SOAP connector. It takes the parameters configured in /properties/ssl.client.props that points to the key store file containing the default personal certificate and residing at /etc/key.p12.
To renew the certificate, take the following steps
- Log in to the Integrated Solutions Console as the primary WAS administrative user;
- Navigate to Security > SSL certificate and key management > Key stores and certificates > NodeDefaultKeyStore> Personal certificates;
- Check the box besides "Default", and hit button "Renew". You should see the expiration date now is updated for another year.
- Restart servers.

Monday, November 17, 2014

How to uninstall IBM DB2 Content Manager Version 8.3 products if fix packs are also installed


When you run the product uninstall program, you see the following error:

"You must uninstall the most recently installed fix pack before running this uninstall."


Fix packs must be uninstalled from the system in reverse order before you can uninstall the product.


To uninstall the latest fix pack, run the command:

where VERSION is the version number of the fix pack.

Tip: To determine the current version installed for each IBM® DB2® Content Manager product, run the command IBMCMROOT/bin/cmlevel.

If multiple fix packs have already been applied, run the uninstallUpdate command for each fix pack starting with the latest fix pack and then continuing in reverse order. For example, if you have DB2 Content Manager fix pack 1, fix pack 3, and fix pack 6 installed, you should first uninstall fix pack 6, then fix pack 3, and then fix pack 1.

Once all fix packs have been uninstalled, run the uninstall program for the product you want to remove.
For DB2 Content Manager:
Run IBMCMROOT/_uninstCM/uninstall-cm.exe
For DB2 Information Integrator for Content:
Run IBMCMROOT/_uninstII4C/uninstall-ii4c.exe
For eClient:
Run IBMCMROOT/_uninstEC/uninstall-ec.exe

Wednesday, November 5, 2014

Troubleshooting WebSphere Application Server issues in Sametime Advanced 8

Where to look for errors (SystemOut, SystemErr, ffdc)
Logging/tracing usually found in /WebSphere/AppServer/profiles/profile_name/logs/. See Logging and tracing at the Info Center.

Server logs: 
Look in system error logs, found in /WebSphere/AppServer/profiles/profile_name/logs/server1/SystemErr.log
Look in system out logs, found in /WebSphere/AppServer/profiles/profile_name/logs/server1/SystemOut.log
ffdc logs: 
Look in ffdc logs, found in /WebSphere/AppServer/profiles/profile_name/logs/ffdc

How to look for CPU heap issues for WAS

To dump the javacore and/or heapdump on WebSphere:

(start the wsadmin console... you'll be prompted for login/pwd credentials...)
cd \ProgramFiles\IBM\WebSphere\AppServer\bin

(setup for the DUMPS... specifying application server to dump...)
wsadmin> set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]

(when ready to dump... execute the following to get a javacore file...)
wsadmin> $AdminControl invoke $jvm dumpThreads


(when ready to dump... execute the following to get a heapdump file...)
wsadmin> $AdminControl invoke $jvm generateHeapDump

javacore/heapdump file will be in the following directory:

How to monitor CPU for WebSphere Application Servver
See How to monitor CPU for EB.

How to turn on tracing

You can find on the following page Setting a diagnostic trace on a serverexternal link how to turn on tracing for the following:
  • How to turn on logging when looking for persistent chat errors
  • How to turn on logging when looking for vmm/ldap errors
  • How to turn on logging when looking for skilltap errors
How to turn on logging when looking for db errors:
Choose this detail level com.ibm.workplace.db.persist.

How to turn on tracing for vmm issues
To look for issues with ldap we will need to enabled wmm tracing. In the admin console, turn on tracing for "com.ibm.websphere.wim.=all:com.ibm.ws.wim.=all:com.ibm.wsspi.wim.*=all" at level FINEST. You should then see a trace.log file (where system.out and system.err live) with this tracing inside.

How to turn on Performance Monitoring Infrastructure PMI

Something to read before setting up:

This is a good page for reading on what to monitor when using PMI Monitoring overall system healthexternal link

Setting it up:
  1. In WebSphere ISC Console, go to Monitoring and Tuning - Performance Monitoring Infrastructure (PMI).
  2. Click server1.
  3. Enable either "Basic" monitoring or "Custom".

Basic monitoring should provide us with the 3 things we are interested in:
  • Number of DB Connections
  • Number of JMS Connections
  • Number of HTTP Sessions

If you are going to do "Custom" monitoring, enable the following statistics to get # of DB/JMS/HTTP connections/sessions: JDBC Connection Pools.CreateCount, JCA Connection Pools.CreateCount, Servlet Session Manager.LiveCount.

Once PMI is enabled you can look at the "Current Activity. To do this:
  1. In WebSphere ISC Console, go to Monitoring and Tuning - Performance Monitoring Infrastructure (PMI).
  2. Click Performance Viewer.
  3. Click Current Activity.
  4. Click server1.

From here on you can click on Summary Reports or Performance Modules which is more fine-grained. In Performance Modules, you can select the 3 statistics we are interested in. The picture below shows how to expand the trees and select the appropriate statistics.

Besides looking at Current Activity, you can View Logs. This option should be in the same location as Current Activity. Click View Logs and browse to the Server File where the PMI logs are saved. This location is usually: WAS\AppServer\profiles\AppSrv01\logs\tpv\

Adding WebSphere Application Servver as a Windows service

1. Modify IBM\was\AppServer\profiles\ST_Advanced_Profile\properties\soap.client.props file so you can stop Lotus Sametime Advanced with specifying a user name and passord. For example:

# SOAP Client Security Enablement
# - security enabled status  ( false[default], true  )

2. Configure WebSphere Application Servver to start as a service. User ID must have local security rights. Use the following syntax:

WASService.exe -add "service_name"
               -serverName server
               -profilePath server_profile_directory

For example:
D:\IBM\WAS\AppServer\bin\WASService -add "SametimeAdvanced" -serverName server1
   -profilePath "d:\ibm\was\AppServer\profiles\ST_Advanced_Profile"
   -startType automatic

3. Go to Click Start - Control Panel - Double-click Administrative Tools - Double-click Services. You should see IBM WebSphere Application Server V6.1 - node-name. which is the windows service you just created.

Note: To remove the service, type WASService.exe -remove"service_name" from WAS\bin\.

Source : http://www-10.lotus.com/ldd/stwiki.nsf/dx/Debug_Sametime_Advanced_WebSphere_Problems