Oleh Mykytyn is the strategic relationship director at the Salesforce partner company Red Tag. Oleh has always had a knack for computers and coding and fit right in with Salesforce after winning a hoodie in 2014 for finishing five badges. In 2017, Oleh was a part of the team that began the Salesforce Developer Group in the Ukraine. Recently, Oleh had a presentation on Apex and record triggered flows, where he discussed which is better.

In this episode, we dive into Oleh’s latest presentation topic, beginning with the question, do we need both Apex and record triggered flows? Oleh answers when it’s best to use Apex over Flow, which one’s faster, which one’s better to maintain, and more. We also touch on use cases for wrapper classes and Oleh’s role on the Salesforce product advisory board.

Show Highlights:

  • Do we need both record triggered flows and Apex triggers?
  • When it’s best to use Apex over Flow.
  • If Apex is faster than Flow.
  • Which is better to maintain. 
  • How easy is it for a developer to pick up the modern version of Flow?
  • How Apex and Flow interact with each other.
  • Use cases for wrapper classes.
  • Oleh’s role on Salesforce’s product advisory board.

Links:

Episode Transcript

Oleh Mykytyn:
They had computers in the 1990s, and I was coming to their shop to play games. It was game, very, very old one, just playing with the mouse and hitting the birds.

Josh Birk:
That is Oleh Mykytyn, a strategic relationship director over at Redtag. I’m Josh Birk, your host for the Salesforce Developer Podcast. Here on the podcast, you’ll hear stories and insights from developers for developers. Today, we sit down and talk with Oleh about various things around Apex and especially working with Flows and record triggers. We’ll talk a little bit about an Apex Wrapper Class, but for now, we’re going to go right back to where we left off and talk about his early years.

Oleh Mykytyn:
It was-

Josh Birk:
Nice, nice.

Oleh Mykytyn:
It was great. That’s why I was in love with computers. I was always creating computers myself, buying parts and then building computers. Everyone else was envious like, “Okay. We need to go and work with computers.” It was kind of first start of IT for us.

Josh Birk:
Nice. I love it. How did you get involved with Salesforce itself?

Oleh Mykytyn:
Yeah. When I was in university time, it was my brother. He started saying [inaudible 00:01:21]. He used to work in IT firm, and when he started, for him, it was a decision to choose Salesforce or SAP because he was looking just for Java developer. Thank God, he has chosen Salesforce, and after that, he was working with Salesforce.
A few years after that, he recommended Trailhead to me. It was like 2014, and there was only few badges there. There was a quest to win a hoodie if you finished five badges. I was some addicted when I started, and I got that hoodie. Then my Salesforce journey started. Yeah, it was super cool. I still have that hoodie, and I’m already-

Josh Birk:
Nice.

Oleh Mykytyn:
… like six years in Salesforce now, even seven.

Josh Birk:
I love it. I love it. Back in the Ukraine, you took that to a whole new level where you were running the Ukraine developer group, right?

Oleh Mykytyn:
Yeah, around 2017, we started a Salesforce developer group, and it was great because in Ukraine, Salesforce wasn’t really known, and there was not big community over there. We had one group in Kyiv, but it was kind of dead group. Nothing was happening there.
So then we started one in Lviv, and I took over it. I just always love to meet new people, and I kind of felt that doing something for people, you’re always doing something for yourself. So it was like recognition to meet and grow yourself too.

Josh Birk:
Nice. Were you still running that during the pandemic?

Oleh Mykytyn:
Actually, yes. We even managed to have two times in-person event during the summer-

Josh Birk:
Oh, wow.

Oleh Mykytyn:
… when it was slowed down a bit. We did few times virtual sessions. I don’t know why, but people were not very active there, and engagement was really low. So at some point, we just stopped doing virtual ones and were waiting for better times. Then we had big plans for 2023, but then the worst thing happened. The war came in, and almost nine months, like seven, eight months, we were waiting. Actually, on September last year, we had our first in-person event back in city and-

Josh Birk:
Wow. Well, first of all, I really want to offer my empathy, my sympathy for the atrocities and the war. How are you, and your family, and your friends right now?

Oleh Mykytyn:
Yeah. We really appreciate this huge support from everywhere. Luckily, my family is safe. I always say they’re okay, but they are not okay. It’s always like living under such pressure situation is difficult, but we do what we can do. We continue fighting. We continue doing the job, growing ourselves, and just helping to each other. Together, we will get it up.

Josh Birk:
Got it. Are there things that you would recommend if people in the Salesforce community want to help?

Oleh Mykytyn:
I would just say if you have chance to work more and, I don’t know, train more people from Ukraine or just sometimes reach out and offer some help, it would be very nice. Just we appreciate it because sometimes people just need some advice or they need extra project or, I don’t know, they need extra mentor because, right now, it’s difficult to do business in Ukraine. As IT, we are trying actually to grow this market in Ukraine because people just can work from home, and it’s really great benefit.

Josh Birk:
Nice, nice. When did you get to the States?

Oleh Mykytyn:
Actually, yeah, I was lucky to be out of the country before the war happened, and that’s why I didn’t go back because I was accepted as a speaker in some conferences, like in Texas Dreamin’. I was also in Portland, Oregon, Amsterdam, CzechDreamin. That’s why I thought, “Okay, if I go back to home, I will not be allowed to get out anymore.”

Josh Birk:
Wow.

Oleh Mykytyn:
That’s why I decided, “Okay. Yeah, I will stay outside just to continue doing business, and help on our client-side project, and do community work as just speaking on the conferences, attend communities, bring new ideas to you’re own local group.” That’s why I was on April in States.

Josh Birk:
Wow. Wow. That’s-

Oleh Mykytyn:
Yeah, it was a big travel year for me. I was all out, and-

Josh Birk:
I bet.

Oleh Mykytyn:
… on one hand, it was great because you exploring not the country, the globe. You travel around, but also sometimes it’s a bit exhausting because you feeling that you don’t have a place to stop. But now, we are in Chicago, so we have here office. That’s why we decided to stop here and work on-

Josh Birk:
Wow.

Oleh Mykytyn:
… the site a bit. Yeah. I don’t know how long, but for now, Chicago is my home base. Maybe it’ll move around the States, but here.

Josh Birk:
Well, Chicago is happy to have you. I’m glad we’ve been able to give you a little bit of a refuge there. I just have to ask because I’ve known people who have had refugee status in the past. Is the State Department giving you any trouble or anything?

Oleh Mykytyn:
Actually, I’ve been here as just a visitor, travel and business visa for couple months, but then my stay was over because it’s limited for six months. So I left the country, and I was traveling back as a refugee from Ukraine. It was a program, Uniting for Ukraine. Now, I can stay here up to two years, and it’s great benefit because I also can work officially here. Yeah, it’s kind of great to use-

Josh Birk:
That’s-

Oleh Mykytyn:
… this time. Yeah, we really appreciate it because it’s great-

Josh Birk:
Nice, nice.

Oleh Mykytyn:
… I would say, chance. Yeah.

Josh Birk:
Nice. That’s amazing. Okay. Let’s get to some of the nerdy things. You have a presentation on Record-Triggered Flows versus Apex triggers, and you ask the question right off the bat, do we need both. So let me ask. Do we need both?

Oleh Mykytyn:
Of course. Yeah, sometimes it’s a tricky question. When we did this presentation, people were thinking that we are fighting between two technologies, but, at the end, we are not fighting. Both of them bring a lot of value to us. Both of them are great. The thing is we just need to know where to use which technology.
Yeah, I always think that sometimes people say, “You need to start first with point-and-click and then go to code.” Sometimes people prefer go with code first. I would say you need to see what capabilities do you have, what team do you have, what is your future plans. Based on that, you can decide what technology to use. And also just to be sure that… For example, Flow, it’s limited in some pieces. We definitely need both because Apex can resolve almost everything we want, but almost.

Josh Birk:
Right, right. Well, and a couple of follow-up things there. Let’s focus on Apex first. What are some use cases where Apex can do something Flow can’t or it’s just much preferred to let Apex do it?

Oleh Mykytyn:
Before last release actually, when I last presented my session, it was beginning of December. There was big limitation in Flow that there was limit on elements. There was 2,000 elements when during interview, during transaction. It was limited for number of records you want to process. For example, if you have, I don’t know, 50, few hundred records, it will fail on sometime because it will be limited on this element.
If you run, for example, a loop in your Flow, each element of the loop… Each record is calculating this element. So it’s very easy to hit this 2,000 limit. From last release, Salesforce removed this limit, and now it’s great that Flow has become really powerful, and this limit was really bad for developing bigger data.

Josh Birk:
Right, bath transactions and things like that. So we didn’t even raise the limit. We just removed the limit completely?

Oleh Mykytyn:
Yes, that’s true.

Josh Birk:
Wow, wow.

Oleh Mykytyn:
And it’s great news.

Josh Birk:
So-

Oleh Mykytyn:
I don’t know even how it’s possible because I haven’t tested-

Josh Birk:
I’m curious myself, and I work here.

Oleh Mykytyn:
Yeah, I haven’t tested it myself. It’s what I see from the release notes, but it’s really great. I also saw that there’s some HTTP Callouts were added from Flow. So I see how Flow is becoming more and more powerful. That’s what I was saying also in my session, my topic. Now, I also have to review my slides and modify them a bit because they’re outdated. Yeah. So I see that, at some point, Flow become almost that powerful that Apex, but we need to wait a bit.

Josh Birk:
Right. It’s still a pretty bold statement. What about performance? Is Apex any faster than Flow in two comparable scenarios?

Oleh Mykytyn:
Yeah. Of course, Apex is a bit faster and has better performance. So we also need to consider what data amount we process because, yeah, Flow is also… Because of UI, because of these things, it’s a bit slower. But it’s not very critical, so it depends on your needs.

Josh Birk:
If I’m writing an Apex class, I also have to write the unit test and make sure that that’s maintained. And in Flow, I believe we’re bringing the unit testing to it, but we don’t have that 75% code coverage kind of thing. Is one considerably easier to maintain over the other?

Oleh Mykytyn:
Yeah, you’re right. Flow doesn’t have unit test yet, and it’s kind of great benefit when you deciding what to develop. Flow will be a bit easier and faster. Also, you can do changes directly in production. I will not say it’s a benefit. I would even block this feature, but it’s still possible, so it’s faster and easier. Also, I’m sure that unit testing for Flows is also needed, and it just depend on when Salesforce will bring this.

Josh Birk:
Yeah, it’s been a long time since I’ve seen a roadmap, but I know there’s been a long discussion about testing in general in Flow and just being able to debug things. It reminds a lot of the old days of Lightning web components when we’re trying to give you the best error message we possibly can.
Now, I personally found early iterations of Flow kind of difficult to navigate, but the UI has changed so considerably. What would your opinion be if a developer is going to pick up the modern version of Flow? How easy do you think that is?

Oleh Mykytyn:
I don’t know. Flow was changing really, really a lot for the last couple years, and to me, to be honest, it’s a bit intuitive to use it. So I feel it’s not very complex. When you at least a developer, you understand all principles, all of this, and I was feeling well in Flow. I’m kind of person, so I try myself first. When I stuck somewhere, then I look to documentation. I was kind of easy to navigate there and to understand everything. It’s really great, and the UI is nice.
I also really appreciate that Salesforce brought this debugging feature to Flow. It’s quite easy to debug Flows just Inline, and you see all data flying through. Also, it’s nice that you can choose different record, different data. Even, you can choose different users under whom you’re testing these Flows.

Josh Birk:
Nice.

Oleh Mykytyn:
So that’s kind of easy and great.

Josh Birk:
Nice. And this is slightly outside the scope of your talk, but we also should give a shout-out that not only are you not… You’re not trying to have these two things compete with each other, but they can actually interact with each other, where Apex can interact with Flow and vice versa, right?

Oleh Mykytyn:
Yes, of course. It’s actually a great combination to use Flow, and then do Invocable Methods, and to use it together. Also, because of Flow Explorer where you can schedule now, put in orders, it’s really great way to do order of execution of your Flows.

Josh Birk:
Nice.

Oleh Mykytyn:
It doesn’t require anymore to have one Flow per object, like one trigger per object.

Josh Birk:
Nice.

Oleh Mykytyn:
You can have multiple Record-Trigger Flow per object, and then you can just specify which one runs first, second, and third. Here, I would also recommend to put order, in numbers, not one, two, three, four five, but in 10, 20, 30, 40, 50. So then if you decide to put something in the middle, you can easily put 15, for example, and you don’t need to change all those numbers.

Josh Birk:
Gotcha. Good tip.

Oleh Mykytyn:
Because if you count one, two, three, four, then if you want to put something in the middle, you need to change the order of all the rest, right?

Josh Birk:
Gotcha. Yeah. Interesting. Good tip. Good trick. So let’s move on to the presentation you did for Forcelandia. Describe a little bit about what makes an Apex class a wrapper and what are you using that for.

Oleh Mykytyn:
Yeah. Actually, Wrapper Class, it’s my favorite talk because it’s really about development. Actually, Wrapper Class, it’s common use case because sometimes you need a bit more complex data model or you need some just sort or filtering data in Apex side. One of use case that I showed in my slides that it was if you have, for example, interaction with another web service, like integration, and you want to show it in Salesforce on a page, but you do not need to store it in Salesforce. You don’t want to save it in database. You just want to previews the data.
During that, you want to do some modification to that data. So we can just easily convert it from JSON to Wrapper Class. You just need to replicate the structure, and then just do deserialize, and you will have your JSON converted to the object. Then you can do any manipulation with this data. You can add extra fields. You can add extra variables, and then you can show it on a Lightning component.
It’s easier than just create data in Salesforce that is not required. It’s easier to work than, for example, with SOAP. Sometimes it’s difficult to convert XML, and with JSON, it’s much easier as a Wrapper Class.

Josh Birk:
Because basically the properties in the Wrapper Class just need to match up with what you’re going to get into the JSON, and then you can feed it right into that, right?

Oleh Mykytyn:
Yes, correct. You’re just replicating structure, and with one line of code, you just convert it.

Josh Birk:
Does that also make it easier to talk to a Lightning web component?

Oleh Mykytyn:
Lightning component is just considering Wrapper Class just as an object, so you can also pass it like a string like a JSON and then just serialize or deserialize it or you can just pass it as an object. That’s it.

Josh Birk:
The JavaScript is just like, “Here’s more JSON. I’m just going to use that.”

Oleh Mykytyn:
Yeah, yeah.

Josh Birk:
Nice, nice.

Oleh Mykytyn:
It’s true.

Josh Birk:
Okay. One more topic. Again, I got to say I’ve been working at Salesforce for over a decade now, and I’m only now finding out that we even have a Product Advisory Board. What is a product advisory board, and what was your role on it?

Oleh Mykytyn:
Actually, I just found out about it a year ago, and I just like, “Oh, wow.” Actually, my colleagues, they showed it to me and said, “Maybe you have to apply.” I said, “Oh, what is that? I don’t know, but let’s apply.” I just applied. I didn’t know what is that. Actually, I had a call with some PDO representatives from Salesforce from Europe. They told me what is that, so I understood what is that before applying.
Advisory board is group of people that Salesforce create based on the partners. Salesforce have different clouds and different technologies, and they want to have some people who work with this, and they want to have some feedback. For example, I’m in PDO Advisory Board. This is for AppExchange, for ISV or PDOS, Product Development Outsourcing. So it’s people who are developing product for Appexchange, so it can be, for example, you have idea for AppExchange. You come to us, and we can develop a product for you.
Salesforce just has this one here, Advisory Board, Product Advisory Board, and have couple sessions per year. First one was in person in New York on March. Then we’ve been working through all available products, not products, but technologies, like a process how to do security review of your app, how to develop your app, all of this. Then we’ve been giving feedback, like what we can improve from Salesforce side, how to make it easier. It’s really great that Salesforce is listening to partners who can help them to improve their product.

Josh Birk:
Well, and I guess that would be my follow-up question, is how have you seen the conversation evolve, and have you seen it impacting anything?

Oleh Mykytyn:
Yeah, I think it’s really big influence because we had two-day session there, and we walked through all products that is related to AppExchange. For example, code scanner. It was big improvement for last year, and there are different products. We actually told what we see can be improved and how it can be improved.

Josh Birk:
Nice.

Oleh Mykytyn:
Salesforce was also sharing their plans and their roadmap, what they see. They have some ideas from IdeaExchange, and we’ve been considering what is the highest priority, and as a group of people from different partners, from different companies, we could suggest and recommend what we see is the most important right now and how can we improve it.

Josh Birk:
Nice.

Oleh Mykytyn:
So I think it brings value because Salesforce can make their products better based on understanding of the implementation partners or users or something like that.

Josh Birk:
Very nice. A couple of wrap-up questions. First one, speaking of travel, do you have any upcoming talks that you’re looking forward to?

Oleh Mykytyn:
I’m still trying to prepare one of my talk. I was thinking about more architecture talk because, actually, I switch from developer group to architect group in [inaudible 00:22:47], so I’m leading now architect group. I’m working a bit more like tech lead and solution architect now. So I think maybe we’ll try to bring topic for this track now.

Josh Birk:
Sounds good.

Oleh Mykytyn:
I have one idea. I don’t know if you think it’s good, but I can share it. Maybe give me real feedback right now. I have idea to talk about strategy of single org or multiple orgs. For example, if a big company has big territories or different offices, and sometimes it’s good strategy to use single Salesforce environment, but sometimes it’s also good to use multiple Salesforce environments and orgs and then connect them. So I want to defined what’s the pros and cons, like who should consider about this, and then how to decide what is the best action for your company.

Josh Birk:
No, I like that, and I like it partially because it’s a question that anybody at a certain size is probably going to start asking themselves, and it’s best to be pragmatic about it, like have a plan in place. Instead of it’s what sometimes I think happens where just rogue orgs just pop up every now and then. It’s also one of the things I’m always looking for when I’m trying to figure out who to put on stages.
From Salesforce, we can give a lot of product details, but for somebody in your shoes, what… I kind of still joke I play a developer on TV these days. It’s like I’m not in the trenches anymore, so it’s like it’s hard. That information has to come from the community, right? You all have to tell us your experiences of what’s worked and what hasn’t worked because a lot of us on this side of the fence aren’t in a position to actually see that level in the field.

Oleh Mykytyn:
Yes. It’s like in my shoes, I’ve been working with many different companies and different clients because of partner of Salesforce. So I have seen different solutions, different occasions, and based on that have my own personal experience, and that, I’m trying always to share with others. Sometimes, yeah, it might be not correct for someone. Always, you need to decide on specific use case, specific business.

Josh Birk:
Right. Kind of going back to the Flow versus Apex thing, it’s like it’s not one over the other. It’s what’s the best tool for the best solution kind of thing.

Oleh Mykytyn:
Yeah.

Josh Birk:
Gotcha. Nice.

Oleh Mykytyn:
Yeah, and you always need to consider your position, where you are, what is your challenge. That’s why there’s no clear answer for everyone.

Josh Birk:
That’s our show. Now, before we go, I did ask after Oleh’s favorite non-technical hobby, and it turns out he has a need for speed.

Oleh Mykytyn:
I really enjoy skiing.

Josh Birk:
There you go.

Oleh Mykytyn:
I really addicted to some adrenaline, so I like driving the car. I like really fast car, something. I really like skiing because you can go really fast there.

Josh Birk:
Nice, nice.

Oleh Mykytyn:
It’s winter now, and it’s ski season, but I haven’t got to ski in this time yet. Maybe in States, I will find a spot to do that.

Josh Birk:
I want to thank Oleh for the great conversation information, and as always, I want to thank you for listening. Now, if you want to learn more about the show, head on over to developer.salesforce.com/podcast where you can join our community, hear old episodes, see the show notes, and have links to your favorite podcast service. Thanks again, everybody. I will talk to you next week.

Get notified of new episodes with the new Salesforce Developers Slack app.