sfdc.arrowpointe.comPerspectives on Salesforce.com

sfdc.arrowpointe.com Profile

Sfdc.arrowpointe.com is a subdomain of arrowpointe.com, which was created on 2004-11-09,making it 20 years ago.

Description:Authored by Scott Hemmeter of Arrowpointe Corp, this blog is written from the perspective of a Salesforce.com solution provider and contains information...

Keywords:crm, crm software, sales force automation, sfa, customer relationship management solutions,...

Discover sfdc.arrowpointe.com website stats, rating, details and status online.Use our online tools to find owner and admin contact info. Find out where is server located.Read and write reviews or vote to improve it ranking. Check alliedvsaxis duplicates with related css, domain relations, most used words, social networks references. Go to regular site

sfdc.arrowpointe.com Information

HomePage size: 77.031 KB
Page Load Time: 0.66271 Seconds
Website IP Address: 68.178.247.27

sfdc.arrowpointe.com Similar Website

MSR Economic Perspectives
blog.ms-researchhub.com
Vistage Perspectives Magazine
perspectives.vistage.com
Plant Science Today
blog.aspb.org
BJUtoday | News and Perspectives from BJU
today.bju.edu
PCI Perspectives
blog.pcisecuritystandards.org
TIPs – Translation Insights & Perspectives
tips.translation.bible
Knoldus Blogs - Insights and Perspectives to keep you updated
blog.knoldus.com
Cybersecurity Perspectives & Resources - Security Compass Blog
labs.securitycompass.com
Latest Perspectives by Schneider Electric
perspectives.se.com
Around the Fire | News and perspectives from the Sacred Fire Community
atf.sacredfire.org
Open Source Projects Built at Salesforce | Salesforce Engineering
opensource.salesforce.com
Experience Cloud | Salesforce DXP - Salesforce.com
support.ebrary.com
Experience Cloud | Salesforce DXP - Salesforce.com
forum2.unitrends.com
Institute Perspectives – Institute-perspectives' education
edu.institute-perspectives.com

sfdc.arrowpointe.com PopUrls

Perspectives on Salesforce.com
https://sfdc.arrowpointe.com/
Perspectives on Salesforce.com - Part 2 - Geopointe
http://sfdc.arrowpointe.com/page/2/
Perspectives on Salesforce.com » Using Aggregate Functions
http://sfdc.arrowpointe.com/2010/02/10/using-aggregate-functions/
Perspectives on Salesforce.com - Part 55 - Geopointe
http://sfdc.arrowpointe.com/page/55/
Perspectives on Salesforce.com - Part 18 - Geopointe
http://sfdc.arrowpointe.com/page/18/
Perspectives on Salesforce.com - Part 29 - Geopointe
http://sfdc.arrowpointe.com/page/29/
Perspectives on Salesforce.com » Cloning Records in Apex
http://sfdc.arrowpointe.com/2011/03/28/cloning-records-in-apex/
Perspectives on Salesforce.com - Part 23 - Geopointe
http://sfdc.arrowpointe.com/page/23/
Perspectives on Salesforce.com » Introducing Geopointe
http://sfdc.arrowpointe.com/2010/06/07/introducing-geopointe/
Perspectives on Salesforce.com - Part 3 - Geopointe
http://sfdc.arrowpointe.com/page/3/
Perspectives on Salesforce.com » Create Maps from ... - Geopointe
http://sfdc.arrowpointe.com/2008/03/13/create-maps-from-salesforce-reports/
Perspectives on Salesforce.com » Endpoint for Debugging HTTP Callouts
https://sfdc.arrowpointe.com/2010/02/16/endpoint-for-debugging-http-callouts/
Perspectives on Salesforce.com » Testing HTTP Callouts
http://sfdc.arrowpointe.com/2009/05/01/testing-http-callouts/
Perspectives on Salesforce.com - Part 41 - Geopointe
http://sfdc.arrowpointe.com/page/41/
Perspectives on Salesforce.com » Arrowpointe Maps 1.2
http://sfdc.arrowpointe.com/2008/07/08/arrowpointe-maps-12/

sfdc.arrowpointe.com Httpheader

Date: Tue, 14 May 2024 10:42:15 GMT
Server: Apache
X-Powered-By: PHP/7.3.33
Link: http://sfdc.arrowpointe.com/wp-json/; rel="https://api.w.org/"
Upgrade: h2,h2c
Connection: Upgrade
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

sfdc.arrowpointe.com Ip Information

Ip Country: United States
Latitude: 37.751
Longitude: -97.822

sfdc.arrowpointe.com Html To Plain Text

Link Chatter Files to Related Objects November 6, 2012 @ 10:39 am · Filed under APEX Code , Tips By Scott Hemmeter I prefer to upload attachments” to records using Chatter Files vs. the old skool Attachments because… Chatter Files are searchable They still get listed under the Notes & Attachments list for a record I get the nice file previewer (most of my files are PDFs) I can store them once and link them to anything else It’s that last point that is especially cool and cannot be done with regular Attachments.Store Once, Link Anywhere ” One major difference, though, between old skool Attachments and Chatter Files is that Attachments would get linked up to the Parent Records too, at least for Standard Objects. This was nice. I could add an Attachment to an Opportunity and see it listed under the Account without needing to do anything special. Chatter Files do not do this. You can manually make it do this, but it’s not automated. Let’s automate this missing feature! Trigger Simple little trigger to gather IDs and call an @future event in a class. Note that the call is wrapped in the IF statment checking to see if we are already in an @future or batch context. For any trigger that calls an @future event, please always wrap the call like this. trigger FeedItems on FeedItem (after insert) { // AFTER INSERT if(Trigger.isAfter && Trigger.isInsert){ ListID IDs = new ListID(); for (FeedItem fi : trigger.new){ IDs.add(fi.id); } if(!system.isFuture() && !system.isBatch()){ FeedItems.linkChatterFiles(IDs); } } } Apex Class I have the method written to only process a single ContentPost (assuming the UI is being used), but if you want to bulkify, be my guest. What we are doing in the class is gathering the IDs of records we also want to link the file to. For me, I want to link files I post to Opportunities to the parent Account and files I post to Cases to the related Contact and Account. It’s up to you what to link. One important step in there is to gather a list of records the file is already linked to. Towards the end of the code, we remove those IDs from the master list so we do not link them all over again with a new Chatter Post. Take note of the InProcess boolean. This is a technique to prevent recursion. Since our trigger is on FeedItem and our method creates more FeedItems, we don’t want the trigger to keep firing. public class FeedItems { public static Boolean inProcess = false; // Links Chatter Files on certain objects to related objects @future public static void linkChatterFiles(ListId IDs) { // Only run for individual posts of files if(IDs.size() == 1 && inProcess == false){ inProcess = true; // turn on so we don’t do recursive loops ListFeedItem FIsToInsert = new ListFeedItem(); // list we will be inserting for (FeedItem f: [select id, type, RelatedRecordId, parentId, title, body from FeedItem where id in:IDs and type = ’ContentPost’]){ // Verify fields that we cannot use to filter SOQL if (f.RelatedRecordId == null) { continue; } // Get ContentVerion record ContentVersion cv = [select id, ContentDocumentId from ContentVersion where id = :f.RelatedRecordId][0]; // Get list of IDs this Content is already linked to so we don’t do duplicate posts SetId IDsAlreadyLinked = new SetId(); for (ContentDocumentLink cdl : [SELECT ContentDocumentId, LinkedEntityId FROM ContentDocumentLink where ContentDocumentId = :cv.ContentDocumentId]){ IDsAlreadyLinked.add(cdl.LinkedEntityId); } // Depending on the object, link the content to different other objects SetId IDsToLink = new SetId(); if (String.valueOf(f.parentId).startsWith( Opportunity.sObjectType.getDescribe().getKeyPrefix() )){ Opportunity o = [select id, accountId from Opportunity where id = :f.ParentId limit 1][0]; if(o.AccountId != null){ IDsToLink.add(o.AccountId); } } else if (String.valueOf(f.parentId).startsWith( Case.sObjectType.getDescribe().getKeyPrefix() )){ Case c = [select id, accountId, contactId from Case where id = :f.ParentId limit 1][0]; if(c.AccountId != null){ IDsToLink.add(c.AccountId); } if(c.contactId != null){ IDsToLink.add(c.contactId); } } // Remove the IDs that are already linked so we don’t create duplicate posts IDsToLink.removeAll(IDsAlreadyLinked); // Create a new FeedItem for each of the records we want to link to for (ID theId : IDsToLink){ FeedItem newFI = new FeedItem(); newFI.Type = ’ContentPost’; newFI.RelatedRecordId = f.RelatedRecordId; newFI.ParentId = theId; newFI.title = f.title; newFI.Body = f.body; FIsToInsert.add(newFI); } } // end main loop // INSERT if (!FIsToInsert.isEmpty()){ database.insert(FIsToInsert, false); } } // end check for 1 record in trigger } // end of linkChatterFiles method } Test And the Test code. We have a separate method for each object we want to test posting a file to. I should have some asserts in there to test it actually works, but I don’t have those yet. That’s your homework. @isTest private class FeedItems_Test { static testMethod void linkChatterFiles_Oppty() { Account a = new Account(name=’test’); insert a; Contact c = new Contact (FirstName = ’Joe’, LastName = ’Shmo’, AccountId = a.id); insert c; OpportunityStage stage = [select MasterLabel from OpportunityStage where IsClosed = false limit 1]; Opportunity o = new Opportunity(); o.Name = ’TEST’; o.AccountId = a.id; o.CloseDate = Date.today(); o.StageName = stage.masterlabel; insert o; ContentVersion cv = new ContentVersion(); cv.Origin = ’H’; cv.PathOnClient=’myFile.txt’; cv.Title =’myFile’; cv.VersionData = Blob.valueOf(’I am a file posting to Chatter’); insert cv; FeedItem contentFI = new FeedItem(); contentFI.Type = ’ContentPost’; contentFI.ParentId = o.id; // Opportunity contentFI.RelatedRecordId = cv.id; contentFI.title = ’Content Post’; contentFI.Body = ’Body of content post’; insert contentFI; } static testMethod void linkChatterFiles_Case() { Account a = new Account(name=’test’); insert a; Contact c = new Contact (FirstName = ’Joe’, LastName = ’Shmo’, AccountId = a.id); insert c; Case cs = new Case(); cs.subject = ’Test’; cs.ContactId = c.id; cs.AccountId = a.id; insert cs; ContentVersion cv = new ContentVersion(); cv.Origin = ’H’; cv.PathOnClient=’myFile.txt’; cv.Title =’myFile’; cv.VersionData = Blob.valueOf(’I am a file posting to Chatter’); insert cv; FeedItem contentFI = new FeedItem(); contentFI.Type = ’ContentPost’; contentFI.ParentId = cs.id; // Case contentFI.RelatedRecordId = cv.id; contentFI.title = ’Content Post’; contentFI.Body = ’Body of content post’; insert contentFI; } } Enjoy! Permalink Comments (1)UPDATE: Set Defaults for Opportunity Contact Roles (when converting) June 4, 2012 @ 9:34 am · Filed under APEX Code , Tips By Scott Hemmeter I’ve had a few people reach out regarding an old post about defaulting Opportunity Contact Roles on a Lead convert. Turns out the trigger on Opportunities is not the best option. This was resolved in the comments by having a trigger on Leads instead, but wanted to give the full update in it’s own blog post with updated code. The code below should work and now includes a Test Class too. Having an AFTER UPDATE trigger on Leads like this is a good way to handle many post-convert needs. Trigger trigger Leads on Lead (after update) { if(Trigger.isAfter && Trigger.isUpdate){ Leads l = new Leads(); l.SetContactRoleDefaults(Trigger.new, Trigger.oldMap); } } Class public class Leads { // Sets default values on the Opportunity and Opportunity Contact Role record created during Conversion. Called on AFTER UPDATE public void SetContactRoleDefaults(Lead[] leads, mapID,Lead old_leads) { setID set_opptyIDs = new setID(); // Get Opportunity IDs into a Set if the lead was just converted and an Opportunity was created for (Lead l:leads){ if (l.IsConverted && !old_leads.get(l.id).IsConverted){ if (l.ConvertedOpportunityId != null){ set_opptyIDs.add(l.ConvertedOpportunityId); } } } // Update Opportunity Contact Roles listOpportunityContactRole list_opptyContactRolesToUpdate = new listOpportunityContactRole(); for(OpportunityContactRole...

sfdc.arrowpointe.com Whois

Domain Name: ARROWPOINTE.COM Registry Domain ID: 134640450_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.wildwestdomains.com Registrar URL: http://www.wildwestdomains.com Updated Date: 2023-11-10T14:47:58Z Creation Date: 2004-11-09T17:55:00Z Registry Expiry Date: 2024-11-09T17:55:00Z Registrar: Wild West Domains, LLC Registrar IANA ID: 440 Registrar Abuse Contact Email: abuse@wildwestdomains.com Registrar Abuse Contact Phone: 480-624-2505 Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited Name Server: NS1.MEDIATEMPLE.NET Name Server: NS2.MEDIATEMPLE.NET DNSSEC: unsigned >>> Last update of whois database: 2024-05-17T18:58:06Z <<<